NVIDIA AI-AGENT夏季训练营
项目名称:AI-AGENT夏季训练营 — RAG智能对话机器人
报告日期:2024年8月18日
项目负责人:王成儒
项目概述:
项目通过使用英伟达的RAG和NGC技术,搭建了一个可以辅助人员理解文字问答的AI机器人,其旨在帮助智力残障人士或者是为了给青少年学习知识提供帮助。机器人的作用是采用了多模输出展示技术,通过文生图模型与RAG文生文模型技术,可以在特定专业知识领域对于输入的教材或者文本,用人工智能的方式进行解读和品析。
技术方案与实施步骤
模型选择:
选择的大模型是bria-2.3和ai-phi-3-small-128k-instruct,通过使用bria-2.3这个轻量化小型化的图片生成模型,其速度快,精准性高,经过prompt的处理之后,可以很好的生成各个风格的图片。并且在线联网运行,对本机的显卡性能要求并不高。同样生成文本的大模型我选择了ai-phi-3-small-128k-instruct,他的性能也是很好的,可以通过英伟达NIM,对文本数据快速的进行处理。
数据的构建:
数据主要是分成了文字处理部分和向量处理两个部分。一开始先是通过最简单的环境变量设置,将英伟达的APIKEY导入进去,同时初始化了模型和嵌入器。
在数据处理部分,我这个应用并没有定制化到某一节课或者某个学科,仅仅只是个初始版本,向量的构建等工作我是直接使用的原始的向量参数进行操作。如果将来需要对特定某个内容进行定制,可以通过上传文本文档就可以很快的进行原始的创建工作,同样向量也会被记录并保存下来。
功能整合:
我的进阶功能主要设置在了图片的生成,在图片生成中,我初始化默认了一些参数,包括对于prompt的默认,以及各种nagtiveprompt的选择,这样可以很好的保证内容不会偏差的特别多。然后选用了英伟达的bria-2.3模型。使用模型时,我会将用户输入的内容和经过完整运算后的内容一齐打包塞入模型,这样虽然严谨性不会特别高,但是也不会有特别大的偏差。
实施步骤:
环境搭建:
安装openai、langchain_nvidia_ai_endpoints、langchain、faiss、requests等Python环境库。可以直接通过
Pip install openai,langchain_nvidia_ai_endpoints,langchain,faiss,requests
代码实现:
主要是在代码关键的生成图片中,在生成图片后,需要通过base64解析成可读内容,并且通过PIL快速将内容读取成图片并显示给前端Gradio。
同时,Gradio的搭建也是非常不可缺少的一步,在这里因为时间原因,我仅仅只搭建了一个交互平台,之后有时间我会继续完善其余内容。
项目成果与展示:
应用场景展示(必写): 描述对话机器人的具体应用场景,如客户服务、教育辅导等。
应用展示在具体的助智需求中,包括帮忙辅助残障人士、或者是刚入学的小学生等。通过图片的使用和文字讲解,可以很快的对各类人群所需的特定领域内容进行详细解析。
功能演示(必写):
1、左侧输入问题,右侧上方给出回答,下方会给出图片解析。
问题与解决方案:
问题分析:
主要问题就是当初打算再加入视觉展示和声觉感受等功能,可以通过观察言行,来辅助作用人群的学习生活。提高可用性和平均使用时间,让用户得到依赖感。但是因为代码编写和运作出现了一些问题,原本在windows上实践泡同的pyttsx3并没有完整运行,语音功能只能被抛弃了,同时一个全识别类型的视觉模块,有一定难度,后来也腰斩了没有正常执行。
在设计时,会遇到下列问题:代码运行过程中言不达意、运行速度慢等问题。
解决措施:
言不达意的解决我并没有做到,只能是减低了产生幻觉的可能性,通过调用多个模型反复预测的效果下,可以实现找到表意最准的一种(通过uie的相近意思表达做了一个对比),但是因为多个模型运作下,会十分卡顿,耗时长,并且效果提升不明显,后来砍掉了。
运行速度慢的问题,我降低了图片生成时的迭代次数,虽然图片会出现一定问题,但是并不是很多。并且降低了返回内容的长度,发现效果显著。
项目总结与展望:
项目评估: 项目整体属于初期阶段,进程缓慢。但是整体思路清晰,立意明确,将来可以针对生图和生文两个部分在进行提优培化,争取提升更可靠的RAG对话机器人。
未来方向: 未来会增加语音识别功能以及视觉识别功能,让机器人能接收更多类型的信息,争取做到全能多模态机器人的效果,并且提升将来的生成准确性,让人工智能的种子绽放在英伟达Jetson系列设备上,再度发光发热。(特别感谢英伟达官方以及英伟达社区的老师的辛勤付出!)
附件与参考资料
英伟达RAG教程
英伟达NGC教程