使用 RAG-GPT 和 Ollama 搭建智能客服
![使用RAG-GPT和Ollama搭建智能客服](https://static001.geekbang.org/infoq/69/69c87b0bbabdf53299eab1d01f4ffb18.png)
引言
前面介绍了使用RAG-GPT和OpenAI快速搭建LangChain官网智能客服。有些场景,用户可能无法通过往外网访问 OpenAI 等云端 LLM 服务,或者由于数据隐私等安全问题,需要本地部署大模型。本文将介绍通过RAG-GPT和Ollama搭建智能客服。
RAG 技术原理介绍
在介绍 RAG-GPT 项目之前,我们首先要理解 RAG 的基本原理,RAG 在问答系统中的一个典型应用主要包括三个模块,分别是:
Indexing(索引):将文档分割成 chunk,编码成向量,并存储在向量数据库中。
Retrieval(检索):根据用户输入 query 和向量数据库中 chunks 语义相似度检索与问题最相关的前 k 个 chunk,形成本次问答的上下文。
Generation(生成):将原始问题和检索到的 chunks 整合形成合适的 prompt 一起输入到 LLM 中,让 LLM 输出与上下文有关的回答。
![](https://static001.geekbang.org/infoq/26/2694787996faf9c2825ed0d7a38f5748.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
智能文档的在线检索流程可以用一张图说明,上图中展示了一个完整的问答流程:
用户发起 query
结合 Bot 实际应用场景,评估是否对 query 进行 rewrite
Retieval 模块根据 query 检索出 Indexing 中的相关的文档
将召回的文档进行 Reranking
并且根据 relevance score 进行过滤,过滤掉低质的文档
形成合适的 Prompt 后输入到 LLM 大模型中,最后生成答案
以上是对 RAG 技术的基本介绍,如果想深入了解技术细节可以参考这篇文章:RAG技术全解析:打造下一代智能问答系统。
如何快速实现 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 和本地文件。
灵活配置:提供用户友好的后台,配备可定制的设置以简化管理。
美观的用户界面:具有可定制且视觉上吸引人的用户界面。
从特性可以知道,RAG 相比一些商业收费的基于知识库的问答系统优势在于:
易用、快速搭建。
能自主管理知识库,避免商业秘密和知识产权泄漏。
可以自主选择 LLM 模型和甚至扩展部署本地模型。
RAG-GPT 快速搭建智能问答系统
RAG-GPT 的基本组成分为三部分:
智能问答后端服务
管理后台系统
用户使用的 ChatBot UI。
下面,将介绍如何启动 RAG-GPT 项目和使用这三个模块,将 RAG-GPT 集成到你的网站只需要 5 个步骤:
1. 下载源代码,通过 Git 克隆 RAG-GPT 的 GitHub 仓库:
2.配置环境变量
[!NOTE]
我们首先需要下载 &安装Ollama。
然后下载
Embedding模型
和LLM底座模型
。
Ollama 启动默认绑定的IP:PORT
是127.0.0.1:11434
,可以参考这篇文档修改默认配置。
![](https://static001.geekbang.org/infoq/69/69fb3da4ad4fa135af44fe50e4b2914e.png)
Embedding 模型我们选择mxbai-embed-large
![](https://static001.geekbang.org/infoq/2b/2bc9ab3ebeb2bb2627d12161b24eef5e.png)
LLM 底座模型我们选择llama3
![](https://static001.geekbang.org/infoq/3e/3ee11be009f1584ae7617386256b2142.png)
![](https://static001.geekbang.org/infoq/e2/e2c8c1d743966fa4ae6076a95f1aac62.png)
在启动 RAG-GPT 服务之前,需要修改相关配置,以便程序正确初始化。
.env 文件中的变量
对 .env 中的变量做以下调整:
不要修改 LLM_NAME。
更新 OLLAMA_MODEL_NAME 设置,这里我们使用
llama3
,请求和响应的 API 接口,可以和OpenAI兼容。更新 OLLAMA_BASE_URL 设置,我们修改为
http://192.168.2.36:11434
。注意,这里只需要配置IP:PORT
,尾部不要加上/
或者其它URI
。将 BOT_TOPIC 更改为你的机器人的名称。这非常重要,因为它将在
构造Prompt
中使用。我在这里要搭建关于 OpenSSL Cookbook 的智能客服,所以改写为OpenSSL
。调整 URL_PREFIX 以匹配你的网站的域名。
有关常量的含义和用法的更多信息,可以查看 server/constant 目录下的文件。
3.执行启动命令
分别执行以下命令,即可启动。
[!NOTE]
请使用 Python 3.10.x 或以上版本。
先安装 python 依赖项
启动项目即可:
或者执行
![](https://static001.geekbang.org/infoq/0f/0ff16881101687b35a7b1dd0e1f23901.png)
4.快速体验聊天效果
启动服务后先打开管理后台。
首先要登录到管理后台,浏览器输入:http://192.168.2.36:7000/open-kf-admin/
登录账号为:**admin
** 密码 :**open_kf_AIGC@2024
** .
![](https://static001.geekbang.org/infoq/78/782728525c2318b78f8a5110086f8342.png)
导入知识库,这里上传
openssl-cookbook.pdf
。
在管理后台切换到 Source
tab,从本地磁盘上传openssl-cookbook.pdf
,然后点击 Upload
即可一键上传本地文档作为知识库。
![](https://static001.geekbang.org/infoq/b1/b14671338e89ef84aba3dbda412b81bb.png)
上传本地文档到服务端后,初始状态是 Recorded
。 服务端会通过一个异步任务解析上传的文档,并且计算 Embedding,然后存入向量数据库。
服务端处理完后,可以看到上传文档的日志。
![](https://static001.geekbang.org/infoq/a8/a890f43fcaa09bcb4b7f73de32c57c59.png)
在 admin 页面,在管理后台上,上传文档展示的状态都是 Trained
。
![](https://static001.geekbang.org/infoq/db/db2d4fc042e2eac3b48ed868f9040901.png)
浏览器打开http://192.168.2.36:7000/open-kf-chatbot/
,就可以访问 Bot 了。
![](https://static001.geekbang.org/infoq/ce/ce8c8fdc5fc0f1594c89a8dfffd767df.png)
5.一键嵌入到网站
RAG-GPT 提供了将聊天机器人嵌入到网站的方法,使得用户可以直接在网站上使用智能问答服务。打开管理后台菜单切换到 embed,复制两个代码即可实现一键嵌入,这两个代码片效果分别如下:一个是 iframe 嵌入一个聊天窗口,一个是在页面右下角点击弹出聊天窗口。可以新建一个文本文件,将代码复制进去,用浏览器打开就可以看到嵌入效果了。
![](https://static001.geekbang.org/infoq/dd/dd041bc7b6897d5cff5574a3efc28e07.png)
6.管理后台其他功能
管理员可以通过仪表板查看用户的历史请求记录,以便进行分析和优化。
可以按照时间、用户查询聊天记录和修改问答对的答案以更符合自身需求。
![](https://static001.geekbang.org/infoq/cd/cd37a5d37efe4d4b6852bf2b6b344a81.png)
配置聊天对话的 UI
用户可以定制化聊天对话框的风格,使其更符合自身网站的风格特性。
![](https://static001.geekbang.org/infoq/03/032f313cb304c0fee596e697547bce8a.png)
结语
RAG-GPT 项目具备开源免费、易于部署集成、开箱即用和功能丰富的特点,为 LLM 大模型在特定领域的应用落地提供了一套企业级的解决方案。RAG-GPT 已经支持本地文件知识库,集成国内 LLM 大模型等特性,使得 RAG-GPT 满足更多样化的需求。
关于我们
OpenIM 是领先的开源即时通讯(IM)平台,目前在 GitHub 上的星标已超过 13k。随着数据和隐私安全的重视以及信息技术的快速发展,政府和企业对于私有部署的 IM 需求急剧增长。OpenIM 凭借“安全可控”的特点,在协同办公软件市场中占据了一席之地。在后 AIGC 时代,IM 作为人机交互的首要接口,其价值愈发重要,OpenIM 期待在此时代扮演更关键的角色。
基于这样的视角,我们最近开源了 RAG-GPT 项目,已被部分企业采用并持续完善中。如果您对 RAG-GPT 感兴趣,可以访问以下链接了解更多信息:
项目地址: https://github.com/open-kf/rag-gpt
在线 Demo: https://demo.rentsoft.cn/
我们的目标是改进文件管理功能,更有效地管理数据,并整合企业级知识库。欢迎大家在 GitHub 上 Star 并关注,支持我们的开源旅程。
开源说明:RAG-GPT 采用 Apache 2.0 许可,支持免费使用和二次开发。遇到问题时,请在 GitHub 提 Issue 或加入我们的 OpenKF 开源社区群讨论。如果您需要更智能的客服系统,请与我们联系。
![](https://static001.geekbang.org/infoq/84/84eeb02d573e7223b01c9bcd8b2d614d.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
版权声明: 本文为 InfoQ 作者【AI Inception】的原创文章。
原文链接:【http://xie.infoq.cn/article/f5032432941b80a54e5d729f9】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论