人工智能助手通过RAG消除幻觉以及图片的智能重绘

贺振华_武汉理工 2024-08-31 17:01:02 阅读 60

为期三天的NVIDIA AI-AGENT夏季训练营结束了。过程紧张而充实,收获满满。

废话不多少,直接上干货。

NVIDIA AI-AGENT夏季训练营

项目名称:AI-AGENT夏季训练营 — RAG智能对话机器人

报告日期:2024年8月18日

项目负责人:贺振华

01 项目概述:

本项目旨在使用NVIDIA的NIM人工智能平台,针对特定应用场景中的文本检索和图像处理需求,进行RAG智能对话机器人的搭建和实践。项目通过先进的自然语言处理技术增强文字的检索能力,使用户能够更快速、准确地找到所需信息。同时,利用调用大模型API对图片进行微调重绘,提升视觉呈现效果,增强用户体验。项目的亮点在于其创新性地结合了文本和图像处理功能,为用户提供一站式解决方案。可能的应用场景包括数字图书馆、在线媒体平台和企业内部文档管理等,有助于提高工作效率和信息获取的精确度。

02 技术方案

模型选择

文字的检索增强(RAG)采用microsoft/phi-3-small-128k-instruct;进阶版RAG采用的mistralai/mixtral-8x7b-instruct-v0.1;图片的智能重绘采用的microsoft/phi-3-vision-128k-instruct和meta/llama-3.1-405b-instruct。

数据的构建

数据构建过程:在文字的RAG中,数据为txt的文本数据,通过python程序代码对数据进行简单的数据清洗,随后处理到faiss vectorstore 并将其保存到磁盘备用。

向量化处理方法:通过NVIDIA Embeddings工具类调用NIM中的"ai-embed-qa-4"向量化模型。随后使用microsoft/phi-3-small-128k-instruct模型,结合"ai-embed-qa-4"向量化模型,基于本地存储的数据,进行文本数据的RAG功能实现。

功能整合(进阶版RAG必填): 通过多模态模型microsoft/phi-3-vision-128k-instruct ,对图片进行识别,将编码后的图像按照格式给到Microsoft Phi 3 vision , 利用其强大能力解析图片中的数据。随后,使用 LangChain 构建多模态智能体,整体的工作流程为:接收图片 -> 分析数据 -> 修改数据 -> 生成绘制图片的代码 -> 执行代码 -> 展示结果。然后,结合microsoft/phi-3-vision-128k-instruct模型和meta/llama-3.1-405b-instruct模型,通过Gradio构建的前端UI,进行结果的呈现。

03 实施步骤:

   1. 环境搭建: 下面依次描述需要配置的环境,软件,插件等。此步骤非常重要,耗时最长。

安装Miniconda。我使用的是:清华大学镜像,地址https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/选择Miniconda版本。由于python至少需要3.8以上版本,所以大家需要注意Miniconda的版本。安装Miniconda。本人在安装时的踩的一个坑是安装目录里不能有空格或中文等字符,否则后续配置环境时不断的报错。Miniconda安装好后,打开终端。创建python 3.8虚拟环境。

<code>conda create --name ai_endpoint python=3.8 通过Anaconda Powershell Miniconda终端进入虚拟环境。

conda activate ai_endpoint  安装nvidia_ai_endpoint工具

pip install langchain-nvidia-ai-endpoints 安装Jupyter Lab

pip install jupyterlab  安装langchain_core

pip install langchain 安装matplotlib

pip install matplotlib 安装Numpy

pip install numpy  安装CPU版本的faiss

pip install faiss-cpu==1.7.2  安装OPENAI库

pip install openai  注意事项:安装过程中如果下载速度慢,可以切换镜像。比如清华镜像。

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

   2. 代码实现: 

 Step 1 - 使用NVIDIA_API_KEY      程序执行后会提示输入NVIDIA_API_KEY

import getpass

import os

if os.environ.get("NVIDIA_API_KEY", "").startswith("nvapi-"):

print("Valid NVIDIA_API_KEY already in environment. Delete to reset")

else:

nvapi_key = getpass.getpass("NVAPI Key (starts with nvapi-): ")

assert nvapi_key.startswith("nvapi-"), f"{nvapi_key[:5]}... is not a valid key"

os.environ["NVIDIA_API_KEY"] = nvapi_key Step 2 - 初始化SLM  模型选用为microsoft/phi-3-small-128k-instruct

llm = ChatNVIDIA(model="microsoft/phi-3-small-128k-instruct", nvidia_api_key=nvapi_key, max_tokens=512)code>

result = llm.invoke("泰坦尼克号的导演是谁?")

print(result.content) 由于字数限制,后续的重要代码和结果用图片代替。

   3. 测试与调优: 描述测试过程,包括测试用例的设计、执行及性能调优。

未使用RAG,采用 microsoft/phi-3-small-128k-instruct模型下,给出问题:泰坦尼克号的导演是谁? 相关的运行结果如下。

由此可知,小模型有时会有幻觉,也就是我们常说的“一本正经的胡说八道”。使用RAG,采用 microsoft/phi-3-small-128k-instruct模型下,给出问题:泰坦尼克号的导演是谁? 检索增强后的相关运行结果如下。

  进阶版的RAG运行结果对比如下: 未使用RAG的结果:

 使用之后的结果:

        结论:很明显,RAG的效果良好,可以起到很好的消除AI模型的幻觉问题。

   4. 集成与部署: 使用结合microsoft/phi-3-vision-128k-instruct模型和meta/llama-3.1-405b-instruct模型,通过Gradio构建的前端UI,基于图片的智能微调结果如下所示。

API的信息,基于个人信息的保护,我就模糊处理了。

 

 

 

 

 

 

 

 

  

 

 

 

 

 

 最终的结果展示如下:

UI展示项目中踩过的深坑:图片的保存路径需要在NIM的代码中进行修改,否则不能在UI里面显示。

项目成果与展示:
应用场景展示: RAG增强的智能机器人可能的具体应用场景,如个性化教育辅导,智能电话问答等。功能演示: 列出并展示实现的主要功能,附上UI页面截图,直观展示项目成果。

问题与解决方案:
问题分析: 详细描述在项目实施过程中遇到的主要问题。

配置环境报错下载环境相关文件时,速度尤其慢。UI展示项目中,图片无法正常显示。

解决措施: 阐述针对每个问题采取的具体解决措施及心路历程,体现问题解决能力。

问题:配置环境报错。原因:miniconda软件安装路径中有空格。解决方案:消除空格后,重新配置就正常了。问题:下载环境相关文件时,速度尤其慢。原因:默认站点的速度慢。解决方案:切换清华镜像,pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 问题从而解决。UI展示项目中,图片无法正常显示。原因:图片的保存路径设置错误。解决方案:重新设定图片的保存路径。问题解决。这个问题困扰了24个小时,死了不少脑细胞。

项目总结与展望:
项目评估: 项目在文本检索增强和图片微调重绘方面表现出色。项目成功实现了自然语言处理和深度学习算法的有效整合,显著提升了信息检索速度和准确性。这一创新组合可以带来高效便捷的工作体验,在未来的AI垂直领域应用具有广阔的应用前景。未来方向: 对于某些特殊格式的文本和图像,项目的兼容性和处理效果有待加强。此外,系统在处理大规模数据时的响应速度需要进一步优化,以应对未来数据量的增长。
附件与参考资料

NVIDIA AI Endpoint介绍页面: https://python.langchain.com/v0.1/docs/integrations/chat/nvidia_ai_endpoints/

2024 NVIDIA开发者社区夏令营环境配置指南(Win & Mac)

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

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



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。