一篇文章带你实现大模型及RAG入门---小白速进

news2024/11/14 21:23:00
项目概述:随着人工智能技术的飞速发展,大模型(Large Models)和检索增强型生成(Retrieval-Augmented Generation, RAG)已成为自然语言处理(NLP)领域的热点。大模型以其强大的理解和生成能力,正在改变我们与机器交互的方式。RAG模型结合了检索机制和生成机制,进一步提升了生成任务的效果。本项目旨在为初学者提供一个快速入门的指南,帮助他们理解并实践这些前沿技术。
技术方案与实施步骤
  1. 模型选择利用NVIDIA NIM 微服务(网址:面向开发者的 NIM | NVIDIA 开发者)作为优化容器提供,旨在加速各种规模的企业的 AI 应用开发,为 AI 技术的快速生产和部署铺平道路。这些微服务集可用于在语音 AI、数据检索、数字生物学、数字人、模拟和大型语言模型(LLMs)中构建和部署 AI 解决方案。
    笔者选用的是开源大活佛meta的llama-3.1-405b-instruct也就是俗称的llama3.1这里是405b-instruct的版本

NIM模型地址

https://build.nvidia.com/meta/llama-3_1-8b-instruct
  1. 环境搭建

我这里是使用Windows平台
首先创建好Python环境
大家可以根据自己的网络情况从下面的地址下载:
miniconda官网地址:https://docs.conda.io/en/latest/miniconda.html
清华大学镜像地址: https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/
安装完成打开Anaconda Prompt

在这里插入图片描述

在打开的终端中按照下面的步骤执行,配置环境
创建python 3.8虚拟环境

conda create --name ai_endpoint python=3.8

进入虚拟环境

conda activate ai_endpoint

安装nvidia_ai_endpoint工具

pip install langchain-nvidia-ai-endpoints 

安装Jupyter Lab

pip install jupyterlab

安装langchain_core

pip install langchain_core

安装langchain

pip install langchain

安装matplotlib

pip install matplotlib

安装Numpy

pip install numpy

安装faiss, 这里如果没有GPU可以安装CPU版本

pip install faiss-cpu==1.7.2

安装OPENAI库

安装OPENAI库

在上面提到的NVIDIA NIM网站申请api

入网址https://build.nvidia.com/explore/discover`  `点击右上角login``填写邮箱``如果是全新的邮箱需要创建账户``进入申请或登录邮箱进行验证``验证成功全选提交``创建用户名``任意点选模型图标,进入模型交互界面后会在右侧看到代码API,然后找到Get API KEY鼠标点击选择生成API KEY并保存好``简单就获得到一个free api

检测NVIDIA NIM模型服务(验证api是否正常)

from openai import OpenAI``   ``client = OpenAI(`  `base_url = "https://integrate.api.nvidia.com/v1",`  `api_key = "nvapi-oIx7VAq2myUlzhBk7U9wr7mCdQe7fq9KVZ9UC4JhbHg3REIWs1KZbHHRO7xxxx"``)``   ``completion = client.chat.completions.create(`  `model="meta/llama-3.1-405b-instruct",`  `messages=[{"role":"user","content":"泰坦尼克号的导演是谁"}],`  `temperature=0.2,`  `top_p=0.7,`  `max_tokens=1024,`  `stream=True``)``   ``for chunk in completion:`  `if chunk.choices[0].delta.content is not None:`    `print(chunk.choices[0].delta.content, end="")``   ``   

模型回答

詹姆斯·卡梅隆 #精简干练且使用中文

利用RAG进行数据构建
RAG的全称是Retrieval-Augmented Generation,中文翻译为检索增强生成。它是一个为大模型提供外部知识源的概念,这使它们能够生成准确且符合上下文的答案,同时能够减少模型幻觉。

初始化SLM

llm = ChatNVIDIA(model="meta/llama-3.1-405b-instruct", nvidia_api_key=nvapi_key, max_tokens=512)``result = llm.invoke("泰坦尼克号的导演是谁?")``print(result.content)

获取文本数据集

import os``from tqdm import tqdm``from pathlib import Path``   ``# Here we read in the text data and prepare them into vectorstore``ps = os.listdir("./zh_data/")``data = []``sources = []``for p in ps:`    `if p.endswith('.txt'):`        `path2file="./zh_data/"+p`        `with open(path2file,encoding="utf-8") as f:`            `lines=f.readlines()`            `for line in lines:`                `if len(line)>=1:`                    `data.append(line)`                    `sources.append(path2file)

进行一些基本的清理并删除空行

documents=[d for d in data if d != '\n']``len(data), len(documents), data[0]``   ``输出``(1,` `1,` `'泰坦尼克号是一部 1997 年美国史诗爱情灾难片,由詹姆斯·卡梅隆执导、编剧、制作和联合剪辑。该片以 1912 年泰坦尼克号沉没事件为基础,融合了历史和虚构的元素。凯特·温斯莱特和莱昂纳多·迪卡普里奥饰演不同社会阶层的成员,他们在泰坦尼克号的处女航中坠入爱河。比利·赞恩、凯西·贝茨、弗朗西斯·费舍尔、格洛丽亚·斯图尔特、伯纳德·希尔、乔纳森·海德、维克多·加伯和比尔·帕克斯顿也参演了这部电影。\\n卡梅隆的这部电影的灵感来自于他对沉船的迷恋。他认为,一个夹杂着人员伤亡的爱情故事对于传达灾难的情感影响至关重要。该片于 1995 年 9 月 1 日开始拍摄,当时卡梅隆拍摄了泰坦尼克号沉船的实际镜头。研究船上的现代场景是在卡梅伦拍摄沉船时使用的 Akademik Mstislav Keldysh 号上拍摄的。使用比例模型、计算机生成的图像以及巴哈工作室建造的泰坦尼克号重建模型来重现沉没过程。该片由派拉蒙影业和二十世纪福克斯公司共同资助;前者负责在北美发行,而后者则在国际上发行影片。这是当时制作成本最高的电影,制作预算为 2 亿美元。拍摄时间为1996年7月至1997年3月。\\n《泰坦尼克号》于 1997 年 12 月 19 日上映。它因其视觉效果、表演(尤其是迪卡普里奥、温斯莱特和斯图尔特的表演)、制作价值、导演、配乐、摄影、故事和情感深度而受到好评。除其他奖项外,它获得了14项奥斯卡金像奖提名,并赢得了11项奖项,其中包括最佳影片和最佳导演,追平了《宾虚》(1959 年),成为获得奥斯卡奖最多的电影。《泰坦尼克号》的全球首映票房超过 18.4 亿美元,是第一部突破 10 亿美元大关的电影。它是有史以来票房最高的电影,直到卡梅隆的下一部电影《阿凡达》(2009 年) 在 2010 年超越了它。经过多次重新上映,该电影的全球总票房达到 22.57 亿美元,成为第二部票房收入超过 100 万美元的电影。《阿凡达》之后全球票房达到 20 亿美元。它于2017年被选入美国国家电影登记处保存。')

将文档处理到 faiss vectorstore 并将其保存到磁盘

# Here we create a vector store from the documents and save it to disk.``from operator import itemgetter``from langchain.vectorstores import FAISS``from langchain_core.output_parsers import StrOutputParser``from langchain_core.prompts import ChatPromptTemplate``from langchain_core.runnables import RunnablePassthrough``from langchain.text_splitter import CharacterTextSplitter``from langchain_nvidia_ai_endpoints import ChatNVIDIA``import faiss``   ``# 只需要执行一次,后面可以重读已经保存的向量存储``# text_splitter = CharacterTextSplitter(chunk_size=400, separator=" ")``# docs = []``# metadatas = []``   ``# for i, d in enumerate(documents):``#     splits = text_splitter.split_text(d)``#     #print(len(splits))``#     docs.extend(splits)``#     metadatas.extend([{"source": sources[i]}] * len(splits))``   ``# store = FAISS.from_texts(docs, embedder , metadatas=metadatas)``# store.save_local('./zh_data/nv_embedding')

重读之前处理并保存的 Faiss Vectore 存储

retriever = store.as_retriever()``   ``prompt = ChatPromptTemplate.from_messages(`    `[`        `(`            `"system",`            `"Answer solely based on the following context:\n<Documents>\n{context}\n</Documents>",`        `),`        `("user", "{question}"),`    `]``)``   ``chain = (`    `{"context": retriever, "question": RunnablePassthrough()}`    `| prompt`    `| llm`    `| StrOutputParser()``)``   ``chain.invoke("泰坦尼克号的导演是谁?")``   ``输出` `泰坦尼克号的导演是詹姆斯·卡梅隆。
  • NVIDIA AI Endpoint介绍页面: https://python.langchain.com/v0.1/docs/integrations/chat/nvidia_ai_endpoints/

  • NVIDIA NIM页面: https://build.nvidia.com/explore/discover

  • NVIDIA DLI课程学习资料页面:https://www.nvidia.cn/training/online/

应用场景:小白学习RAG原理并上手的不二之选,进阶玩家可以利用平台进行不同的场景应用。
问题分析:新手没有使用过python的同学可能会遇到些许问题如不懂如何导包,但是利用这个NIM平台可以非常方便进行测试并纠错
#测试中,from langchain.vectorstores import FAISS 无法运行,发现环境还需要安装一些组件,安装命令如下:

pip install -U langchain-community
项目总结与展望:

我也是第一次了解RAG很顺利就现实并了解RAG的原理及工作流程,从搭建到使用,再到知识数据的重建,同时也让我们认识了大模型的一些问题,特别是数据的准确性和真实性,非常非常重要。对于老手可以利用更多技术实现眼花缭乱的功能。

附上技术清单

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一、大模型全套的学习路线

学习大型人工智能模型,如GPT-3、BERT或任何其他先进的神经网络模型,需要系统的方法和持续的努力。既然要系统的学习大模型,那么学习路线是必不可少的,下面的这份路线能帮助你快速梳理知识,形成自己的体系。

L1级别:AI大模型时代的华丽登场

L2级别:AI大模型API应用开发工程

L3级别:大模型应用架构进阶实践

L4级别:大模型微调与私有化部署

一般掌握到第四个级别,市场上大多数岗位都是可以胜任,但要还不是天花板,天花板级别要求更加严格,对于算法和实战是非常苛刻的。建议普通人掌握到L4级别即可。

以上的AI大模型学习路线,不知道为什么发出来就有点糊,高清版可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

请添加图片描述

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2053498.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java二十三种设计模式-责任链模式(17/23)

责任链模式&#xff1a;实现请求处理的灵活流转 引言 在这篇博客中&#xff0c;我们深入探讨了责任链模式的精髓&#xff0c;从其定义和用途到实现方法&#xff0c;再到使用场景、优缺点、与其他模式的比较&#xff0c;以及最佳实践和替代方案&#xff0c;旨在指导开发者如何…

力扣第 411 场周赛题解

3258. 统计满足 K 约束的子字符串数量 I 给你一个 二进制 字符串 s 和一个整数 k。 如果一个 二进制字符串 满足以下任一条件&#xff0c;则认为该字符串满足 k 约束&#xff1a; 字符串中 0 的数量最多为 k。字符串中 1 的数量最多为 k。 返回一个整数&#xff0c;表示 s …

系统编程-进程初步1

5 进程初步 一、认识进程 -- 进程Process是指计算机中已运行的程序&#xff0c;是系统进行资源分配和调度的基本单位&#xff0c;是操作系统结构的基础 -- 程序运行起来就是一个进程 进程存在于运行内存中程序存在于硬盘中 -- windows下查看进程使用任务管理器进行查看 1…

EXCEL——Vlookup17个高级用法

大纲 一、基本语法 1、参数详解 二、入门篇 1、单条件查找 2、屏蔽查找返回的错误值 三、进阶篇 1、反向查找 2、包含查找 3、区间查找 4、含通配符查找 5、多列查找 6、多区域查找 四、高级篇 1、多条件查找 2、合并单元格查找 3、带合并单元格的多条件查找 …

轻松玩转音频剪辑:推荐四大必备工具!

在这个多媒体时代&#xff0c;音频剪辑技能变得至关重要。无论是制作短视频、音频节目&#xff0c;还是音乐创作&#xff0c;一款得心应手的音频剪辑工具都能让你事半功倍。今天&#xff0c;我们将推荐几款热门音频剪辑工具&#xff0c;助你轻松玩转声音世界 福昕音频剪辑 链…

【数学建模】趣味数学模型——等额还款数学模型

问题 在银行贷款中&#xff0c;通常采用等额还款。假定银行贷款的年利率为 p&#xff0c;贷款 k 元&#xff0c;分 m 年采用每月等额还款方式还清。问每月还款多少钱&#xff1f;总共还的钱是多少&#xff1f;每月还款中还本金和利息各是多少元&#xff1f; 如果考虑每月等额…

Webrtc之SDP协议

SDP简介 SDP 最常用于 RTC 实时通话的协商过程&#xff0c;在 WebRTC 中&#xff0c;通信双方在连接阶段使用 SDP 来协商后续传输过程中使用的音视频编解码器(codec)、主机候选地址、网络传输协议等。 在实际的应用过程中&#xff0c;通信双方可以使用 HTTP、WebSocket、Data…

MySQL数据库主从复制

主从复制原理 MySQL的复制类型 基于语句的复制 &#xff08;默认&#xff09;基于行的复制混合类型的复制MySQL主从复制的工作过程 主从复制设置 主从复制时基于二进制文件的所以需要打开二进制文件 主数据库 在MySQL配置文件/etc/my.cnf修改或增加 #启用了MySQL的二进制日…

集合及数据结构第三节————包装类和简单认识泛型

系列文章目录 集合及数据结构第三节————包装类和简单认识泛型 包装类和简单认识泛型 基本数据类型和对应的包装类装箱和拆箱泛型泛型类的使用裸类型(Raw Type) &#xff08;了解&#xff09;泛型如何编译的泛型的上界泛型方法 文章目录 系列文章目录集合及数据结构第三节…

linux上常见问题

1.普通用户下&#xff0c;不能使用sudo 解决方法 1.切换到root用户下执行该指令是没有问题的 2.更改配置文件sudoers 1.进入root用户下&#xff1a;su - 2.编辑sudoers :visudo 此时就打开了一个文件 3.在该文件找到这么一行内容&#xff1a;root ALL(ALL) ALL 4.在该行的…

CUDA-MODE课程笔记 第8课: CUDA性能检查清单

我的课程笔记&#xff0c;欢迎关注&#xff1a;https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/cuda-mode CUDA-MODE课程笔记 第8课: CUDA性能检查清单 课程笔记 这节课实际上算是CUDA-MODE 课程笔记 第一课: 如何在 PyTorch 中 profile CUDA kernels 这…

(16)prometheus(普罗米修斯)监控的搭建

prometheus是由go语言编写的&#xff0c;监控服务器是否正常运行的工具&#xff0c;使用experter工具收集数据&#xff0c;传到prometheus服务器。可以结合grafana图形化和pagerduty报警发送有邮件和信息。 实验环境&#xff1a; 关掉防火墙和selinux grafana.example.com 1…

为什么CNAPP将会是网络安全领域的一场革命?

随着越来越多的组织开始业务上云&#xff0c;云原生应用保护变得越来越复杂。众多高度碎片化产品&#xff0c;很难去保护一个广泛的、动态变化的攻击场景。当前想要解决这一难题&#xff0c;有一个很好的思路&#xff0c;就是云原生应用保护平台&#xff08;CNAPP&#xff09;。…

第二届机器人与软件工程前沿国际会议在贵阳闭幕

2024年8月13日&#xff0c;第二届机器人与软件工程前沿国际会议&#xff08;FRSE 2024&#xff09;在贵阳圆满闭幕。 本次大会由长沙理工大学主办&#xff0c;贵州大学、湖南科技大学、爱迩思出版社&#xff08;ELSP&#xff09;&#xff0c;ESBK国际学术交流中心、AC学术平台…

Python 办公自动化 处理 Excel 数据 【1】推荐

话说学好办公自动化,走遍天下都不怕&#xff01;&#xff01;&#xff01; 好的&#xff0c;现在开始。 因为是一些办公自动化的应用场景&#xff0c;所以需要电脑支持excel、word和ppt以及python的运行环境。 如果有电脑不支持Excel word ppt的以及python环境下载安装配置可…

Spring 声明式事务 @Transactional

目录 一、添加依赖 二、Transactional 作用 三、Transactional详解 3.1 rollbackFor 3.2 事务隔离级别 3.3 Spring 事务传播机制 Spring 声明式事务 Transactional的使用很简单&#xff0c;只需要添加依赖&#xff0c;在需要的方法或者类上添加 Transactional注解即可。 …

珠海盈致联手深圳盈怡成功上线“混工单柔性智能生产装备”

珠海盈致联手深圳盈怡推出的“混工单柔性智能生产装备”在全面而严密的市场测试中显示出卓越的性能和极高的用户满意度。 经过两年的精细研发和内部测试优化&#xff0c;该柔性生产线已成功完成了样板工厂的所有环节&#xff0c;在深圳市贤丰科技有限公司成功试跑上线&#xf…

联影医疗笔试考什么?如何通过联影在线测评|附真题库面试攻略

职小豚 一、联影医疗公司介绍 嘿&#xff0c;朋友们&#xff01;今天咱们来聊聊联影医疗这家在医疗领域大放异彩的企业。 联影医疗&#xff0c;那可是医疗科技界的一颗璀璨明星&#xff01;它就像一位勇敢的探索者&#xff0c;在医疗影像设备的研发和创新道路上不断前行。 联…

机器视觉运动控制一体机VPLC532E在汽车胶带缠绕的开放式CNC应用

市场应用背景 在汽车线束和零配件中&#xff0c;胶带缠绕是一种常见且重要的加工工艺&#xff0c;主要用于线束/零配件的捆扎、固定、绝缘保护等应用。在缠绕头控制下&#xff0c;胶带均匀缠绕在汽车线束/零配件表面&#xff0c;完成缠绕后&#xff0c;系统自动执行切割。汽车…

(普通用户)Cannot connect to the Docker daemon at unix:///var/run/docker.sock.

报错&#xff1a; Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?#大概像以下的报错内容 MernyPierreMBP:~ merny24$ docker info Client:Version: 26.1.4Context: defaultDebug Mode: falseServer: ERROR: Cann…