这里写自定义目录标题
项目名称:AI-AGENT夏季训练营 — RAG智能对话机器人
报告日期:2024年8月18日
项目负责人:VanPCA
项目概述
随着AI领域的发展和信息量的爆炸性增长,人们通过自己处理庞大信息所需要付出的成本越来越高,而通过人工智能检索和处理信息便显得尤为重要。
然而目前的很多大语言模型会产生“幻觉”,导致针对自己数据库出发对问题的回答会出现错误。RAG的出现很好地解决了这个问题,支持通过自己输入相应地数据指导,改进对应的答案。
此外通过添加一些功能模块,可以实现不局限于对话和简单回答问题,在多模块领域如处理图像、制作表格等领域都可以做到一定程度的快速解决。
技术方案与实施步骤
模型选择
- 首先为了搭建对话机器人,我们需要前往NVIDIA-NIM(https://build.nvidia.com)上挑选适合自己的模型。
- 选择一个模型,例如 llama-3.1-405b-instruct。
- 进入之后会显示在不同语言和环境下的使用说明,我们使用的是python,因此选择python的指导。
- 我们使用模型时会需要用到NVIDIA账号的API Key,所以在这里我们点击Get API
Key来获取。当然你也可以在构建时再来获取,但是注意每次获取API Key都会变化,所以需要注意在代码中更改。
之后我们就可以在自己的项目中使用这个模型了。
数据构建
- 读入所需的数据。
- 进行数据的清洗工作,保证数据的有效性。
- 将数据处理到 faiss vectorstore 并将其保存到磁盘形成向量库。
功能整合
在对话和检索的基础上,通过构建多模态的AI-agent实现对图片和表格的自动操作和按要求修改。通过使用Microsoft Phi 3 vision来实现解析图片数据。具体来说,我们会需要一些辅助函数来对对数据进行一些预处理,调整成模型可以接受的形式之后再进行一系列指导操作。
实施步骤
环境搭建
由于使用的是python,所以自然需要安装python的环境。
conda create --name ai_agent python=3.8
conda activate ai_agent
pip install langchain-nvidia-ai-endpoints jupyterlab langchain_core langchain matplotlib faiss-cpu==1.7.2 openai
对于多模态内容,我们还需要安装额外的几个工具包:
- langchain_nvidia_ai_endpoint: 用来调用nvidia nim的计算资源
- langchain: 用来构建对话链,将智能体的各个组件串联起来
- base64: 因为本实验是构建多模态的智能体, 需要base64来对图像进行编解码
对于一些其他的库,则是看缺什么就补什么。
代码实现
获取文本数据集并进行处理
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)