关于pdf的RAG chat机器人
NVIDIA AI-AGENT夏季训练营——RAG智能对话机器人
首先,感谢nvidia这三天的rag机器人智能培训,让我对NIM平台的使用,rag机器人的简单构建有了一定程度的了解。这个项目的接下来,就让我简单展示下自己的实验结果吧,相信阅读到这篇文章的小伙伴,都能够基于此搭建出自己想要的rag机器人,让大模型轻松地运用到生活和学习上,让我达到事半功倍的效果!
环境安装
我的实验环境是Linux系统(Mac和Win可能有些许差异,读者需要根据自己的环境需求作相应调整),python版本是3.10:
- 安装nvidia-ai-endpoint工具、langchain-core、langchain、langchain-community、openai库、faiss;
pip install langchain-nvidia-ai-end langchain_core langchain langchain_community openai faiss-cpu(or faiss-gpu 设备支持GPU)
- 安装解析PDF文件的库;
在langchain的官方文档中,有许多支持pdf文件解析的接口,这里我选择了PyPDFLoader,有兴趣的小伙伴可以尝试其他的接口;
pip install pypdf
- 安装edge-tts、pygame(支持文字在线转语音);
pip install edge-tts pygame
- 安装gradio(用户界面交互);
pip install gradio
代码构建
- (向量处理,避免大模型出现幻觉)解析pdf文件,存储为embedding向量,在使用检索功能前先加载这个向量库;
- 构建一个基于llm的检索模块,这里我选择了NVIDIA NIM平台提供的mistralai/mixtral-8x7b-instruct-v0.1模型的API接口;
- 完成以上两步,一个聊天机器人的基本功能就构建完成了, 在这里我将其封装为chat_agent函数接口!为了使用户的体验更为舒适,我还增加了相应的用户交互界面;
- 语音在线生成;
项目成果展示
不断持续的聊天界面,模型会带有聊天记忆,当我的rag机器回答问题时,它不仅会将回答的文字内容显示,还会将其用语音读出来
问题与解决方案
问题1:如何在gr.ChatInterface代用函数中使用edge-tts实现文本到语音的转换?
解决方式:设计异步函数run_chat实现asyncio函数执行文本转语音时的await需求,将chat_agent函数变成异步函数,使得run_chat可以实现await调用。
项目总结与展望
项目评估:整个项目的实验难度系数不大,但是可以给实践者对rag机器人的构造有一个初步的了解,帮助实践者在以后工作中根据需求轻松搭建出自己工作需要的协助机器。而我在实践过程中,因为时间安排的问题,没能在给定时间中实现llm在硬件Orin NX上的部署,而我的未来将会弥补这个不足,将现有rag机器调用的api接口替换成本地部署的模型。
未来方向:我打算在未来将小型的llm部署在Orin NX上。
附件与解决方案
【1】phi3实验环境部署:https://github.com/kinfey/Microsoft-Phi-3-NvidiaNIMWorkshop
【2】RAG基础环境部署:https://github.com/kinfey/Microsoft-Phi-3-NvidiaNIMWorkshop
【3】langchain官网教程:https://python.langchain.com/v0.2/docs/integrations/document_loaders/
版权归原作者 weixin_52570436 所有, 如有侵权,请联系我们删除。