NVIDIA NIM平台一小时手撕RAG与多模态智能机器人

目录

1.  项目概述

2. 技术方案与实施步骤

3. 实施步骤

4. 项目成果与展示

5. 问题与解决方案

6. 项目总结与展望

7. 附件与参考资料


1.  项目概述

本项目借助Nvidia NIM 平台实现RAG智能对话机器人,以及智能图表分析机器人。

2. 技术方案与实施步骤

2.1 模型选择

实现RAG智能对话机器人,选择了“mistralai/mixtral-8x7b-instruct-v0.1”模型。mixtral-8x7b,属于Mixtral AI 公司发布的中等模型,对于实现RAG的功能,在推理速度和准确度上,有比较好的综合表现。

对于RAG,需要对文档进行向量化处理,并进行存储,使用的向量化模型为NIM 中提供的ai-embed-qa-4。

对向量化数据进行存储,则需要用到向量化数据库。主流的向量数据库比较如下。

在此我们选择开源的FAISS数据库。

2.2. 数据构建

数据库构建过程如下。

我们获取的信息为网页信息,首先我们需要将网页信息加载,并进行预处理,如删除脚本和样式标签,只保留纯文本。

然后将其分块。分块的大小应适中,太大会导致大量内存的占用,太小会导致由于过于碎片化,而降低推理精度。

分块完成后,利用Nvidia NIM提供的向量化模型,将数据向量化,并进行存储。

2.3 功能整合

Agent智能体,一个整合了IO,存储,推理等功能的结合体,如下图所示。我们可以首先构建智能体的各个部件,然后利用langchain将各个部件连接起来。

项目中,使用两个Agent,整合功能结构如下:

3. 实施步骤

3.1 环境搭建

环境搭建首先参考

2024 NVIDIA开发者社区夏令营环境配置指南(Win & Mac)_csdn 2024nvidia开发者-CSDN博客

此外,因为我们要构建UI界面,故还需安装gradio。打开Anaconda Prompt(如下所示)。

进入工作环境,并利用pip安装gradio,即

pip install gradio

同时,我们要处理PDF文档,还需安装PyMuPDF,即

pip install PyMuPDF

然后我们需要进入NVIDIA NIM | phi-3-vision-128k-instruct, 点击Get API Key按钮,生成API Key,如下图所示。

将获取的key 放置于下图所示位置

3.2 代码实现

首先加载模型,然后构建IO链

我们还可以使用其他NIM中提供的LLM模型和embedding模型进行测试,部分可用的模型如下

Embeddings

[Model(id='nvidia/embed-qa-4', model_type='embedding'),
 Model(id='nvidia/nv-embed-v1', model_type='embedding'),
 Model(id='nvidia/nv-embedqa-e5-v5', model_type='embedding'),
 Model(id='nvidia/nv-embedqa-mistral-7b-v2', model_type='embedding'),
 Model(id='snowflake/arctic-embed-l', model_type='embedding')]

大模型
[Model(id='01-ai/yi-large', model_type=None),
 Model(id='adept/fuyu-8b', model_type=None),
 Model(id='aisingapore/sea-lion-7b-instruct', model_type=None),
 Model(id='baai/bge-m3', model_type=None),
 Model(id='baichuan-inc/baichuan2-13b-chat', model_type=None),
 Model(id='bigcode/starcoder2-15b', model_type=None),
 Model(id='bigcode/starcoder2-7b', model_type=None),
 Model(id='deepseek-ai/deepseek-coder-6.7b-instruct', model_type=None),
 Model(id='google/codegemma-1.1-7b', model_type=None),

......

]

多模态机器人,我们将文字和图片文档结合,进行处理,主要构建代码如下。

3.3 测试与调优

对比使用RAG与不使用RAG,来比较测试效果。我们可以以Nvidia nemo为例,在不加载RAG时,结果如下。从结果可知,大模型并没有给出正确的答案。

在加载RAG后,结果如下,从结果可知,大模型给出了正确的答案。

对于多模态机器人,我们对中间过程进行测试。

查看图片

利用Microsoft Phi 3 vision 大模型获取图片描述

我们也可以使用大模型来生产代码

我们可以使用大模型对表格进行修改,如将”UK”替换为”United Kingdom”,”Netherlander” 替换为”Holland”

同样,我们可以执行大模型生成的Python代码,生成图片

3.4 集成与部署

我们需要将上述中的模块以智能体的方式进行集成,如下所示:

在部署时,我们需要构建前端UI界面。Gradio提供了一个非常方便的构建功能,如下所示。

为了增强智能机器人灵活性,我们可以开放RAG资源输入,代码如下。

测试效果如下

对于多模态机器人,集成Agent后代码如下。

集成UI代码界面如下:

对智能体进行测试结果如下

输入PNG文件

输入PDF文件

4. 项目成果与展示

4.1 应用场景展示

我们可以使用上述方法,利用我们所拥有的知识库,构建一个智能助手,客服机器人,AI助教,面试机器人,等等功能。

4.2 功能演示

如下图所示,构建一个关于Pytorch的帮助助手。

Tell me about Pytorch

为了使智能助手更加灵活,增加RAG资源输入,形成一个通用AI助手,如下所示

多模态的实现效果如下

5. 问题与解决方案

5.1 问题分析

项目过程中,遇到的几个问题,一方面来自于环境搭建,另一方面来自于对于代码的理解,还有就是大模型的幻觉问题。

一是,搭建项目环境时,由于网络原因,经常会超时,或者由于软件包之间的兼容问题,从而导致各种各样的问题。

二是,对于代码的理解和使用了解的不够深入,导致使用时发生错误。

三是,对于使用的数据的数据预处理不当,导致进行向量编码时,发生错误

四是,对于大模型的使用不当,导致未能获得期待的结果

5.2 解决措施

对于前两个问题,解决方案,一是查询使用手册,二是询问老师或同学。

具体来说,有几点需要注意:

在搭建环境时,pip 和conda不宜混用

在搭建环境时,如果遇到安装超时,可以考虑换源

在运行代码时,如果遇到错误,应仔细查看报错信息,找到错误的根源,然后寻找解决方案

询问老师或其他同学时,需要尽量把遇到的错误描述清楚,如在什么环境下,进行了什么操作,或者运行了什么,导致了错误。

对于后两个问题,则需要充分了解所使用的LLM模型,向量化模型和数据库的能力,针对模型和数据库的能力,对数据进行相应的处理,可以考虑换用模型,或者对数据进行进一步处理

例如,在RAG智能机器人项目中,当前的数据处理方式,对于文本较多的网页比较适合,如果有较多图片的,则处理能力较弱。同时,网页要求为开源资源,如果是要求登录的,则无法进行处理。

在多模态机器人中,所选的模型,可以识别比较简单的PDF型图片表格,但是对于复杂的PDF型图片表格,则识别能力较弱。

6. 项目总结与展望

6.1 项目评估

本项目完成了RAG智能机器人和多模态机器人两个项目,使用智能体Agent和Gradio构建了UI界面,完成了基本功能,如对话,检索增强,

由于时间有限,本项目仍然有可以优化的地方。

RAG智能机器人,目前只传入了固定的RAG资源,灵活性不足。

多模态机器人,对于复杂的PDF文档识别能力有待提高。

6.2 未来方向

RAG智能机器人,继续灵活性和可重用性,比如传入PDF文件。

多模态机器人,提高对复杂的PDF文档识别能力。

多模态机器人,增加其他模态的输入和输出,如语音,视频等等。

7. 附件与参考资料

7.1 附件

Jupyterlab文件

task1.ipynb

task1_update.ipynb (RAG输入增强功能)

task2.ipynb

economic-assistance-chart.pdf

economic-assistance-chart.png

7.2 参考资料

Nvidia官方培训网站

https://learn.nvidia.com/

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值