阅读原文:用 Dify 搭建知识库问答系统
一、本章核心学习目标
+- 理解知识库问答(RAG)的核心价值,解决大模型幻觉、知识过时的问题
+- 掌握用 Dify 快速搭建知识库的完整流程,不用自己训练模型
+- 学会把搭建好的知识库,接入到你自己的应用中
+- 了解知识库的进阶优化技巧,提升问答的准确率
+- 掌握低成本搭建企业级知识库的方案,个人开发者也能快速上手
二、为什么需要知识库问答?
大模型虽然强大,但有两个天生的痛点:
+- 知识过时 :训练数据是截止到某个时间点的,最新的信息它不知道
+- 幻觉问题:对于你私有的数据,比如公司内部文档、产品手册,它会瞎编
而知识库问答(RAG,检索增强生成)就是解决这个问题的:
-
先把你的文档、数据导入到知识库,做切片、向量化
-
用户提问时,先从知识库中检索出最相关的片段
-
把检索到的片段和问题一起发给大模型,让它基于这些信息回答
-
这样大模型就能基于你的私有数据、最新数据来回答,不会瞎编
三、Dify:一站式的 AI 应用开发平台
Dify 是一个开源的 LLM 应用开发平台,它把 RAG、工作流、前端界面这些都帮你做好了,你不用自己从零搭建:
+- 不用自己处理文档切片、向量化、检索这些复杂的技术
+- 不用自己写前端的聊天界面,开箱即用
+- 支持接入各种大模型,比如 OpenAI、Anthropic、国内的 GLM、Kimi 等
+- 可视化的后台,管理知识库、对话历史、用户
四、5 分钟搭建你的第一个知识库
4.1 第一步:注册 Dify 账号
首先去 Dify 的官网注册账号,国内用户可以用 dify.ai 或者国内版,直接用邮箱 / GitHub 登录就行,免费版足够个人开发者用。
4.2 第二步:创建一个新的应用
登录后,创建一个新的应用,选择「知识库问答」类型,输入你的应用名称,比如「我的产品手册助手」,Dify 会自动帮你生成对应的聊天界面和后台。
4.3 第三步:导入你的知识库文档
在应用的知识库页面,点击「添加文档」,支持多种格式:
+- 文本文件:TXT、Markdown
+- 文档:Word、PDF、PPT
+- 网页:直接输入 URL,自动爬取内容
+- 表格:CSV、Excel
+- 甚至支持 Notion、Web 站点同步
导入后,Dify 会自动帮你做:
-
文档解析:把不同格式的文档转成纯文本
-
文本切片:把长文档切成小片段,方便检索
-
向量化:把每个片段转成向量,存在向量数据库里
-
建立索引:方便快速检索最相关的内容
4.4 第四步:测试问答效果
导入完成后,你就可以直接在聊天界面测试了,问它文档里的问题,它会自动检索相关的片段,然后生成回答,还会告诉你引用了文档里的哪些部分,来源是什么。
五、把知识库接入到你自己的应用
Dify 搭建好知识库后,你可以很方便的把它接入到你自己的应用中,有两种方式:
5.1 方式一:直接嵌入 Dify 的聊天窗口
最简单的方式,直接把 Dify 提供的 iframe 代码嵌入到你的网页里,一行代码就行:
html
<iframe src="https://udify.app/chat/xxxxxx" width="100%" height="100%"></iframe>
这样你的用户就能直接在你的网站上和知识库助手聊天,不用你写任何后端代码。
5.2 方式二:调用 API 接口
如果你需要更灵活的集成,可以调用 Dify 的 API 接口,自己处理前端的交互:
-
在 Dify 的应用设置里,获取你的 API Key
-
调用
/v1/chat\-messages接口,传入用户的问题 -
Dify 会返回检索到的上下文和 AI 的回答
-
你可以把结果展示在你自己的界面里
提示词示例,让 AI 帮你接入:
Plain
请帮我把当前项目接入 Dify 的知识库问答 API,我的 API Key 是 xxx,接口地址是 https://api.dify.ai/v1/chat-messages。
实现一个聊天界面,用户可以提问,然后显示 AI 的回答,还要显示引用的来源。
六、知识库的进阶优化技巧
6.1 预处理优化
+- 清理文档 :导入前先清理文档里的冗余内容,比如页眉页脚、广告、无关的水印
+- 结构化处理 :对于长文档,尽量保留标题层级,这样切片的时候能更好的保留上下文
+- 分块策略:Dify 支持自定义切片的大小,对于技术文档,可以调小一点,对于通用文档,可以调大一点
6.2 检索优化
+- 召回数量 :调整检索的时候返回的片段数量,太少会漏信息,太多会干扰模型
+- 重排序 :开启 Rerank 模型,对检索到的结果重新排序,把最相关的排到前面
+- 混合检索:同时用关键词检索和向量检索,提升召回的准确率
6.3 提示词优化
你可以自定义系统提示词,告诉 AI 怎么回答:
Plain
你是一个产品手册助手,用户问你问题的时候,你只需要根据我给你的知识库内容回答,不要编造。
如果知识库里面没有答案,你就说「抱歉,这个问题我暂时无法回答」。
回答要简洁易懂,用口语化的语气。
七、常见的踩坑点
-
文档太大导致切片混乱:太长的文档,比如几百页的 PDF,导入前最好先拆分,或者调整切片的参数
-
敏感信息泄露:导入文档前,记得把里面的密码、密钥、隐私信息删掉,不然用户问的时候会被检索出来
-
模型选择不对:对于中文知识库,最好用中文效果好的模型,比如 GLM、Qwen,比英文模型效果更好
-
更新不及时:文档更新后,记得重新导入到知识库,不然检索到的还是旧的内容
八、本章总结
通过这一章,我们学会了怎么用 Dify 快速搭建知识库问答系统:
-
核心价值:RAG 解决了大模型知识过时和幻觉的问题,让大模型能基于你的私有数据回答
-
快速搭建:用 Dify 不用自己处理复杂的 RAG 技术,5 分钟就能搭好一个可用的知识库
-
灵活接入:可以直接嵌入聊天窗口,也可以调用 API 接入到你自己的应用
-
优化空间:通过预处理、检索、提示词的优化,能大幅提升问答的准确率
掌握了知识库,你就能把你的私有数据、内部文档,变成一个智能的问答助手,不管是给内部员工用,还是给外部用户用,都能大幅提升效率。