利用检索增强生成 (RAG) 技术,结合知识库检索和大语言模型的优势,搭建一个即智能又可靠的客服机器人。它能够从预先构建的知识库中检索相关信息,并用自然流畅的语言回答用户的问题。有效避免大语言模型常见的“幻觉”问题 (即生成虚假信息)。
为了更直观地展示项目效果,本项目模拟新东方客服机器人:以新东方主页为模板,嵌入一个对话窗口。可以回答与新东方主页及新东方2024Q4财报相关的问题。
测试体验入口
- 请点击 https://www.gabriel-ai.site/other-page/New_Oriental.html(如果页面插件加载出错,则可以直接访问对话窗口 https://udify.app/chat/QuZBVNLgnhrCv2VC 体验)
- 注意:为控制成本,本应用接入的是免费的API服务。一些使用限制可能导致系统反应慢或运行异常。如遇到这些情况,请等待重试,或在页面底部留言告知。
操作方法
- 点击页面右下角的对话标签,在弹出的客服初始窗口中点击“开始对话”。
- 在对话窗口中输入你的问题。机器人会检索知识库,并为你解答。如果答案信息来自知识库,则它会在回答中提示参考的信息来源,便于核实。
视频演示:
技术实现
- 该应用基于 Dify 平台,利用其知识库功能搭建。
- 对新东方主页 HTML 文件采用 Dify 内嵌的 Unstructured ETL 方案解析。财报 PDF 文件转换为 Markdown 格式,做了长表格切分,并简单清洗。
- 采用父子分段模式切分文本。然后接入 BAAI/bge-m3 模型将文本片段转换为向量,存入向量数据库,以便进行语义检索。
- 采用 “混合检索” 模式,并使用 Cohere 的 rerank-multilingual-v3 模型进行 Rerank。
- 利用 Dify 平台搭建工作流,接入大语言模型根据检索结果回复问题。
- 应用的前端入口以 JavaScript 形式嵌入网页 HTML 代码中。
局限性
- 目前知识库的检索召回率约为 70%-80%。影响召回率的主要问题是:一些以字体大小形式呈现的段落归属关系无法被系统自动解析;长表格分段之后可能会遗漏表头信息,而无法被检索到。这凸显了数据预处理的重要性。对于包含大量文件的知识库,需要建立 人工+自动化 的文件清洗流程。
- Dify 自带的知识库系统无法处理和存储图片。
未来改进方向
- 将知识库文件中的图片存储在云端图床,并以 URL 链接的形式嵌入,以此实现在检索结果中展示图片。
- 尝试使用 LlamaIndex 或 RAGFlow 框架中的文档解析能力构建知识库,并与 Dify 的知识库进行效果对比。