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

为期三天的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虚拟环境。
  • 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)
    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页面截图,直观展示项目成果。

  • 问题与解决方案:
  • 问题分析: 详细描述在项目实施过程中遇到的主要问题。
  1. 配置环境报错
  2. 下载环境相关文件时,速度尤其慢。
  3. UI展示项目中,图片无法正常显示。
  • 解决措施: 阐述针对每个问题采取的具体解决措施及心路历程,体现问题解决能力。
  1. 问题:配置环境报错。原因:miniconda软件安装路径中有空格。解决方案:消除空格后,重新配置就正常了。
  2. 问题:下载环境相关文件时,速度尤其慢。原因:默认站点的速度慢。解决方案:切换清华镜像,pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 问题从而解决。
  3. 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/

  • 23
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值