引言
随着chatgpt等大型语言模型(LLM)能力越来越强大,如何将这些模型精准地应用于特定垂直领域,让各行业开发者快速利用LLM赋能也成为热点和痛点。众所周知,LLM在处理超出其训练数据或涉及最新实事时,常会产生“幻觉”现象,简单理解就是会出现一本正经的胡说八道,回答不准确。针对此问题,RAG通过从外部知识库检索相关文档作为上下文输入到LLM有效地减少了生成内容不符合实际的情况。
RAG技术原理介绍
在介绍RAG-GPT项目之前,我们首先要理解RAG的基本原理,RAG在问答系统中的一个典型应用主要包括三个模块,分别是:
- Indexing(索引):将文档分割成chunk,编码成向量,并存储在向量数据库中。
- Retrieval(检索):根据用户输入query和向量数据库中chunks语义相似度检索与问题最相关的前k个chunk,形成本次问答的上下文。
- Generation(生成):将原始问题和检索到的chunks整合形成合适的prompt一起输入到LLM中,让LLM输出与上下文有关的回答。
RAG的基本流程可以用一张图说明,上图中展示了一个完整的问答流程:
- 用户发起query
- Retieval模块根据query检索出Indexing中的相似的chunks,
- 形成合适的prompt后输入到LLM大模型中,最后输出答案。
以上是对RAG技术的基本介绍,如果想深入了解技术细节可以参考这篇文章:RAG技术全解析:打造下一代智能问答系统,技术细节很深入。
如何快速实现RAG的智能问答系统?
从RAG的原理介绍中可以看到要实现RAG整套架构还是存在一定工作量,需要构建索引、检索、集成LLM、prompt优化等一系列模块,具有一定的难度。
基于此,RAG-GPT提供了一整套开源解决方案,它基于Flask框架,旨在利用LLM和RAG技术快速搭建一个全功能的客服解决方案。该项目包括前端用户界面、后端服务和管理员控制台,为企业利用LLM搭建智能客服等对话场景提供了一个完整的自动化解决方案,可以帮助开发者快速搭建一个智能问答系统,且代码完全开源。
RAG-GPT的基本架构
RAG-GPT关键特性:
- 内置LLM支持:无缝集成chatgpt、智普AI等大型语言模型,利用其丰富的语言理解能力,生成答案。
- 知识库支持丰富:支持各类本地文件,网站地址作为知识库进行检索。
- 快速部署集成:仅需Python环境,无需额外的中间件或依赖,可以在五分钟内部署生产级别的对话服务机器人并一键集成对话机器人到你的网站上。
- 灵活配置:用户友好的后台管理界面,支持定制化设置,简化维护流程。
从特性可以知道,RAG相比一些商业收费的基于知识库的问答系统优势在于
- 易用、快速搭建
- 能自主管理知识库,避免商业秘密和知识产权泄漏
- 可以自主选择LLM模型和甚至扩展部署本地模型。
以下是RAG-GPT的技术架构图:
从上图可以看到,RAG-GPT对基本的RAG流程进行了多方面优化:
- 1.在query阶段支持query改写、query扩展、query routing等功能;
- 2.在Indexing和Retrieval阶段,索引和检索阶段支持向量数据库、类ES的BM25索引数据库,增强了索引和检索的准确性;
- 3.在Generation阶段,构建prompt时引入了历史对话作为上下文进行结果生成。
用RAG-GPT 5分钟搭建智能问答系统
RAG-GPT的基本组成分为三部分:
- 一是智能问答后端服务
- 二是管理后台系统
- 三是用户使用的chatbot UI。
下面,将介绍如何启动RAG-GPT项目和使用这三个模块,将RAG-GPT集成到你的网站只需要5个步骤:
1. 下载源代码,通过Git克隆RAG-GPT的GitHub仓库:
git clone https://github.com/open-kf/RAG-GPT.git && cd RAG-GPT
2.配置环境变量
复制env环境变量文件
cp env_template .env
修改配置项
OPENAI_API_KEY="你的openai api key" URL_PREFIX="http://127.0.0.1:7000/"
在启动RAG-GPT服务之前,需要修改.env
文件中的相关配置。
- 修改OPENAI_API_KEY="此为你的openai api key",在open ai api keys申请api key(RAG-GPT官方马上将支持国内的智普AI,使用智普ai的api key替换即可)
-
本地启动时,修改URL_PREFIX="http://127.0.0.1:7000/"
3.执行启动命令
分别执行以下命令,即可启动,
先安装python依赖项python3 -m venv myenv
source myenv/bin/activate
pip install -r requirements.txt
启动项目即可:
python create_sqlite_db.py python rag_gpt_app.py
4.快速体验聊天效果
- 1.启动服务后先打开管理后台,
首先要登录到管理后台,浏览器输入:http://127.0.0.1:7000/open-kf-admin/#/login账号为:admin
密码 :open_kf_AIGC@2024
- 2.导入知识库,以open im网站为例,在管理后台切换到source tab,输入open im官网地址:https://docs.openim.io/, 点fetch即可一键爬取网站内容作为知识库。
等待爬取完成后,点击update即可在向量数据库中建立索引,用于问答时检索内容
浏览器打开http://127.0.0.1:7000/open-kf-chatbot/, 即可开始问答
5.一键嵌入到网站
RAG-GPT提供了将聊天机器人嵌入到网站的方法,使得用户可以直接在网站上使用智能问答服务。
打开管理后台菜单切换到embed,复制两个代码即可实现一键嵌入,这两个代码片效果分别如下:一个是iframe嵌入一个聊天窗口,一个是在页面右下角点击弹出聊天窗口。
可以新建一个文本文件,将代码复制进去,用浏览器打开就可以看到嵌入效果啦:
<iframe src="http://127.0.0.1:7000/open-kf-chatbot" title="Chatbot" style="min-width: 420px;min-height: 60vh" frameborder="0" ></iframe> <script src="http://127.0.0.1:7000/open-kf-chatbot/embed.js" bot-domain="http://127.0.0.1:7000/open-kf-chatbot" defer ></script>
6.管理后台其他功能
-
- 管理员可以通过仪表板查看用户的历史请求记录,以便进行分析和优化。
可以按照时间、用户查询聊天记录和修改问答对的答案以更符合自身需求。
- 管理员可以通过仪表板查看用户的历史请求记录,以便进行分析和优化。
-
- 配置聊天对话的UI
用户可以定制化聊天对话框的风格,使其更符合自身网站的风格特性。
- 配置聊天对话的UI
结语
RAG-GPT项目具备开源免费、易于部署集成、开箱即用和功能丰富的特点,为LLM大模型在特定领域的应用落地提供了一套企业级的解决方案。接下来,RAG-GPT官方将引入本地文件知识库,集成国内LLM大模型等特性,使得RAG-GPT满足更多样化的需求。
关于我们
有疑问加站长微信联系(非本文作者)