使用RAG-GPT快速搭建LangChain官网智能客服
引言
GPT这类大型语言模型的能力越来越强,但如何精准地应用到特定垂直领域,让开发者快速用起来,既是热点,也是难点。大家都清楚,LLM在处理训练数据之外或最新实事时,容易产生“幻觉”——一本正经地胡说八道,回答不靠谱。针对这个问题,RAG(检索增强生成)通过从外部知识库检索相关文档,作为上下文输入给LLM,有效减少了生成内容不符合实际的情况。
RAG技术原理介绍
在聊RAG-GPT项目之前,先得把RAG的基本原理说清楚。RAG在问答系统里的典型应用,主要分三个模块:
- :把文档分割成小块(chunk),编码成向量,存进向量数据库。
Indexing(索引)
- :根据用户输入的query,和向量数据库里的chunks算语义相似度,找出最相关的前k个chunk,作为本次问答的上下文。
Retrieval(检索)
- :把原始问题和检索到的chunks拼成合适的prompt,喂给LLM,让它输出和上下文相关的回答。
Generation(生成)

智能文档的在线检索流程,一张图就能说明白。上图展示了一个完整的问答链路:
用户发起query
结合Bot实际应用场景,评估是否需要对query进行重写(rewrite)
Retrieval模块根据query检索出索引中的相关文档
对召回的文档做Reranking(重排序)
根据相关性得分(relevance score)过滤掉低质量的文档
把最终形成的Prompt输入LLM,生成答案
以上是RAG技术的基础介绍。如果想深挖技术细节,市面上有不少资料可以参考,这里就不展开了。
如何快速实现RAG的智能问答系统?
从RAG的原理可以看出,要实现整套架构还是有不小的工作量:构建索引、检索、集成LLM、优化Prompt……一环扣一环,有一定门槛。
正因如此,RAG-GPT提供了一整套开源解决方案,目标是利用LLM和RAG技术,快速搭建一个功能完整的客服系统。它基于Flask框架,包含了前端用户界面、后端服务和管理员控制台,为企业利用LLM搭建智能客服等对话场景,提供了开箱即用的自动化方案。代码完全开源,项目地址是:https://github.com/open-kf/rag-gpt。
RAG-GPT的基本架构
RAG-GPT的几个关键特性:
- :同时支持云端LLM和本地LLM。
内置LLM支持
- :五分钟就能部署一个生产级的对话服务机器人。
快速设置
- :支持网站、独立URL和本地文件等多种类型。
多样化知识库集成
- :后台提供用户友好的设置界面,管理起来很方便。
灵活配置
- :界面可定制,视觉上也不含糊。
美观的UI
相比一些商业收费的知识库问答系统,RAG-GPT的优势在于:
易用、快速搭建,降低使用门槛。
知识库自主管理,不用担心商业秘密和知识产权泄漏。
可以自主选择LLM模型,甚至扩展部署本地模型。
RAG-GPT 快速搭建智能问答系统
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. 配置环境变量
启动之前,需要修改相关配置,让程序正确初始化。这里以OpenAI作为LLM底座为例:
cp env_of_openai .env
.env文件中的变量如下:
LLM_NAME="OpenAI"
OPENAI_API_KEY="xxxx"
GPT_MODEL_NAME="gpt-3.5-turbo"
MIN_RELEVANCE_SCORE=0.3
BOT_TOPIC="xxxx"
URL_PREFIX="http://127.0.0.1:7000/"
USE_PREPROCESS_QUERY=0
USE_RERANKING=1
USE_DEBUG=0
需要做以下调整:
不要修改
LLM_NAME。将
OPENAI_API_KEY替换为你自己的密钥。登录OpenAI网站查看API密钥。如果要用GPT-4,把
GPT_MODEL_NAME里的gpt-3.5-turbo改成gpt-4-turbo或gpt-4o。将
BOT_TOPIC改成你机器人的名称。这个很重要,因为会在构造Prompt时用到。比如要搭建LangChain网站的智能客服,就改成LangChain。调整
URL_PREFIX,让它匹配你网站的域名。更多常量的含义和用法,可以查看server/constant目录下的文件。
3. 执行启动命令
注意:请使用Python 3.10.x或以上版本。
先安装Python依赖项:
python3 -m venv myenv source myenv/bin/activate pip install -r requirements.txt
然后启动项目:
python create_sqlite_db.py
python rag_gpt_app.py
或者直接执行:
sh start.sh

4. 快速体验聊天效果
先打开管理后台。
启动服务后,浏览器输入http://127.0.0.1:7000/open-kf-admin/,登录账号为admin,密码open_kf_AIGC@2024。

导入知识库,这里以LangChain网站为例。
在管理后台切换到Source标签页,输入LangChain官网地址:https://python.langchain.com/v0.1/docs/get_started/introduction/,点击Fetch more links,就能一键爬取网站内容作为知识库。

后台会显示爬取网页URL的日志。

获取所有URL后,状态会显示为Stored。在管理后台点击Confirm提交想要抓取的URL(默认抓取全部)。

等到所有网页的文字都被抓取并存入向量数据库后,状态会变为Trained。


浏览器打开http://127.0.0.1:7000/open-kf-chatbot/,就可以访问Bot了。

5. 一键嵌入到网站
RAG-GPT提供了将聊天机器人嵌入网站的方法,用户可以直接在网站上使用智能问答服务。在管理后台菜单切换到Embed标签页,复制两个代码片就能实现一键嵌入。两种效果:一个是iframe嵌入聊天窗口,另一个是在页面右下角点击弹出聊天窗口。新建一个文本文件,把代码复制进去,用浏览器打开就能看到嵌入效果。

6. 管理后台其他功能
- :管理员可以通过仪表板查看用户的历史请求记录,进行数据分析和优化。可以按时间、用户查询聊天记录,还能修改问答对的答案,让回复更贴合自身需求。
历史记录与问答优化

- :用户可以自定义聊天对话框的风格,让它更符合自己网站的整体调性。
定制聊天UI

结语
RAG-GPT项目免费开源、易于部署、开箱即用、功能丰富,为LLM大模型在特定领域的应用落地提供了一套企业级解决方案。目前已经支持本地文件知识库,集成国内LLM大模型等特性,能够满足更多样化的需求。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名