使用 RAGFlow 搭建一套 AI 客服知识库



对本文有任何问题,可加我的个人微信询问:kymjs666

RAGFlow 是什么

RAGFlow 是一款 开源的 RAG(检索增强生成)引擎,专注于通过深度文档理解技术,帮助企业及个人高效处理复杂格式的非结构化数据(如合同、报表、论文等),并生成带精准引用的可信回答。

上面是 deepseek 给的介绍,再说说我的理解:他就是一个用于检索已有数据,提取关键内容后,整合输出的工具引擎。通俗一点来讲,就是一个比较小范围的AI搜索引擎。
本文重心主要介绍使用 RAGFlow 解决实际问题上,下载/安装/部署等前置条件相关,请查看这篇文章:https://kymjs.com/code/2025/07/30/01/

RAGFlow

RAGFlow 部署完成以后,可以看到顶部总共有五个TAB,我们重点看【知识库】,【聊天】,【Agent】。

知识库

这个是最核心的部分,用于存储全部的文档数据。文档上传以后,AI会自动解析文档,有多种解析方式,目的就是把文档中的内容记录下来,方便查询的时候,能够快速用文档中的内容回答对应的问题。

点击右上角的创建知识库,名字可以随便给,比如上面的图,我创建了三个知识库,分别是测试数据,官网的文档,GitHub issue。

创建完知识库以后,首先要做的第一件事就是设置好知识库对文档的解析方式。也就是下图圈起来的部分。

RAGFlow

这里重点介绍最常用的两种:GeneralQ&A

General 切片

“General” 分块方法支持的文件格式为MD、MDX、DOCX、XLSX、XLS (Excel 97-2003)、PPT、PDF、TXT、JPEG、JPG、PNG、TIF、GIF、CSV、JSON、EML、HTML。 此方法将简单的方法应用于块文件:

  • 系统将使用视觉检测模型将连续文本分割成多个片段。
  • 接下来,这些连续的片段被合并成Token数不超过“Token数”的块。

简单来说就是,首先基于图像分块(比如jpg这类图片)分好块以后,再提取文字或图片内容,将内容合并成一个块。没错,他就是基于块来切片的。

同时你可以自定义分块的方式,比如这里,默认是根据\n也就是换行符来分块,你也可以自定义,根据某个特殊字符来分块,同时支持定义每个块的 token 数。需要注意的是,这个 token 数并不是绝对的,比如如果AI认为此时的块过大,也会自己拆分。

这种切片方式,通常适合官网文档,或者技术博客这种长篇文章的切片。AI自己提取每段的主要内容,如果有必要,还会生成每段的关键词和对应解决的问题,当然这些关键词和问题你也可以自己手动编辑,用于应对后续问题的回复。

Q&A 切片

“Q&A” 分块方法支持 excel 和 csv/txt 文件格式。 这里三种格式我都尝试过,首选推荐用CSV格式,同样字符文档最小。其次Excel。不推荐 txt,解析起来经常错乱。

如果文件是 excel 格式,则应由两个列组成 没有标题:一个提出问题,另一个用于答案, 答案列之前的问题列。多张纸是 只要列正确结构,就可以接受。 如果文件是 csv/txt 格式 以 UTF-8 编码且用 TAB 作分开问题和答案的定界符。 未能遵循上述规则的文本行将被忽略,并且 每个问答对将被认为是一个独特的部分。

知识库解析

QA切片是最精准的切片,一个问题对应一个答案,适合作为首选回答。线上最常用的方式就是首先查找QA知识库,如果没有命中再考虑从其他知识库中寻找答案,如果都没有需要的答案,再返回默认回答或者由大模型回复。
要实现这样的逻辑,只需要给对应的知识库设置一个较高的优先级就行了。

RAGFlow

当上传完文档并已经解析完成后,就可以双击文档,查看解析结果。如果结果的解析不满意,可以手动修改或添加内容。

聊天

聊天的本质是调用chat模型,来跟用户对话。但聊天允许关联任意数量的知识库,可以用于提升对话的准确性,并且允许手动定制上下文参数。可以通过API调用,也可以直接作为 iframe 嵌入到其他网页中。

RAGFlow

例如在这个图中,我就直接关联了前面声明的两个知识库【TheRouter-issue】和【TheRouter 官网文档】。
对应的提示词也比较简单:

你是一个智能助手,请总结知识库的内容来回答问题,请列举知识库中的数据详细回答。当所有知识库内容都与问题无关时,你需要让用户自行去官网https://therouter.cn查看文档。   
以下是知识库:
{knowledge}
以上是知识库。

RAGFlow

Agent

如果你之前用过Coze,再看 RAGFlow 的 Agent 应该不会陌生,本质就是一个工作流。以 Coze 这张图为例,可以在输入和输出中定义定制化的过程,通常的做法是先优化用户输入,再在知识库中搜索,如果也没有就在网页中搜索,最后再交给大模型优化内容,再返回给用户。

RAGFlow

RAGFlow 中,也基本是这个流程,但是不得不说,Coze 做的非常好,最强大的是有海量的第三方插件可供选择。前段时间也体验了一下 Coze 的开源版本,相比商业版差了太远,主要也是因为丢失了第三方插件这里的能力,剩下的东西太平庸了。

RAGFlow 也是这个问题,缺少第三方的插件,仅凭官方给出的这些能力,还是太弱了。虽然提供了百度/谷歌/必应这类搜索引擎,但是搜索结果可用性还是太低了,这里必应是因为马上要下线了,其他的原因请自行领悟。

RAGFlow

感受

最后说一下我的感受。网上一直有一种声音,叫做AI抢了大部分人的饭碗,同时也提供了大量的新的工作岗位。随着部署使用这次的 RAGFlow,就更加感受到了这一点。

这种私有化的知识库,非常适合辅助客服的工作,大部分商业公司的线上客服或者语音客服都可以用 RAGFlow 优化,让客服有更高的效率。

但同时也面临新的问题,如果要想让对话更精准,就必须有人对知识库做专业的调优。比如我第一次,就是简单粗暴的把官网全部文档直接丢给知识库,使用块切片去执行默认的切片,最后测试,大部分内容都是不可用的。

如果要想可用,首先得手动二次分片,把内容转换成足够细力度的描述;其次需要修改文档的描述,现阶段大部分文档都是面向人可读性高的,但人可读性高不意味着机器可读性高,比如 TheRouter 官网的这篇文档,https://therouter.cn/docs/2022/08/29/01。混淆配置部分,大部分Android开发都知道是什么意思,所以文档中只贴了代码,而没有任何文字描述,但如果作为知识库,应该更多解释混淆配置是什么,混淆过程中可能产生什么问题,反倒解决问题可以非常简单,直接引导查看文档,或者返回这个固定的代码。如果没有问题的描述,假设用户问题是:我的 app 在开发环境是正常的,但是发布到市场的包无法找到路由表,AI 在回答的时候就很难关联到这个问题,也不知道这段代码可以解决对应的问题。