乐于分享
好东西不私藏

RAG的完整链路拆解:从文档切片到向量检索到LLM回答

RAG的完整链路拆解:从文档切片到向量检索到LLM回答

上篇说了大模型的知识茧房——训练数据之外它会胡编。RAG是目前最主流的破解方案:不改模型,而是在回答之前先去知识库里把相关信息捞出来,跟问题一起喂给LLM。LLM从万事通变成了带参考资料的答题者。

上篇我们搞清了一件事:LLM的知识边界就是训练数据的边界。超出这个边界它不会说不知道,而是硬编。解决方案不是训练更大的模型,而是给它接上外部知识来源。

RAG就是做这件事的。全称 Retrieval-Augmented Generation,检索增强生成。名字挺唬人,拆开看其实就两步:先搜,再答。

考试时旁边多了个图书馆

最直观的理解方式:想象你在考试,但旁边放了一个图书馆。遇到不会的题,可以先去图书馆查相关资料,带着资料回来答题。你的角色不再是靠记忆答题,而是靠检索信息+组织语言来答题。

LLM在RAG系统里的角色就是这个考生。它不需要什么都记住,但它需要两个能力:根据查到的资料准确作答的能力把多条信息整合成流畅回答的能力。 这恰好是LLM最擅长的事。

图书馆怎么建

先说知识库(图书馆)是怎么建出来的。

企业的原始知识通常散落在各种PDF、Word文档、网页、数据库里。要把这些变成LLM可以使用的知识库,核心步骤是一条流水线。

格式统一——先把各种格式的文件都转成纯文本。PDF里可能有图片和表格,这一步本身就充满挑战。很多团队卡在第一步就是因为原始文档太杂。

文本分割——长文档切成小段。一篇几千字的产品手册不能整篇塞给LLM,需要切成几百字的小块,每块包含一个相对完整的信息片段。切得太粗信息混杂,切得太细上下文丢失。文本分割是整条链路中最影响最终效果但最容易被忽视的环节。

向量化——上篇讲的Embedding派上用场了。每个文本小块通过Embedding模型转成一个向量,存进向量数据库。到这里,知识库就建好了。

查资料的过程

用户问了一个问题。系统先把这个问题也通过同一个Embedding模型转成向量,然后到向量数据库里做相似度检索——找到跟问题向量最接近的几条文本块。

这几条文本块就是从图书馆里查出来的参考资料

然后系统把用户的问题和这些参考资料一起塞进一个Prompt模板:已知信息是XXX,请根据这些已知信息回答以下问题,如果信息不足请说无法回答,禁止编造。

LLM拿到这个Prompt,有了参考资料做支撑,回答的准确度就会大幅提升。

有人做过一个直观的对比实验:同一个LLM(ChatGLM),不接知识库的时候问阿里云数据库的产品信息,回答错误百出。接上知识库之后,哪怕只灌入一篇产品文档,回答就变得精准且专业。模型没变,变的是输入。

效果好不好,关键在三个环节

RAG系统的整体效果取决于一条链路上的每个环节,而不只是LLM本身。很多时候效果不好,不是大模型不行,是上游出了问题。

文本分割质量。 切得不好,相关信息被切断或者噪声混入,检索出来的内容就不对,LLM拿到错误的参考资料自然答不好。

Embedding模型的匹配度。 上篇说过,Embedding模型跟训练领域强相关。用户问的问题和知识库里的答案,经过Embedding之后如果向量不相近,检索就失灵。这是实际应用中最普遍的痛点。

LLM本身的能力。 在前两步都OK的情况下,LLM的摘要、推理和语言组织能力决定了最终回答的质量。但如果前两步就拉胯了,换再强的LLM也救不回来。

我跟做知识库产品的人聊得越多越确信一件事:RAG系统的瓶颈很少在大模型上,绝大多数都在数据处理和Embedding这两步。 但大家的注意力和预算往往都花在选哪个大模型上。这是典型的盯着最亮的灯看,忽略了真正坏掉的水管。

RAG不是万能的

坦诚说几个RAG目前搞不定或者很难搞好的场景。

用户的问题可能需要跨多个文档甚至多个系统才能回答。比如一个问题的答案散落在三份不同的PDF和一个数据库表里,单靠向量检索很难把碎片拼完整。

有些问题的答案压根不存在于文档中——它需要推理、计算或者调用外部系统。比如用户问最近一个月的销售趋势,这需要查数据库做计算,知识库里放的静态文档帮不上忙。

RAG最适合的场景是:答案确实存在于已有文档中,用户的问法跟文档的表述足够接近,Embedding能把两者关联起来。 超出这个范围,就需要更复杂的方案了——比如下一篇要讲的MCP。

小结

RAG的核心逻辑就一句话:不让LLM凭记忆答题,先帮它把参考资料查好。 知识准确性靠检索保障,语言表达靠LLM发挥。

以后评估任何RAG产品或方案的时候,按这条链路逐段检查:原始数据质量→文本分割策略→Embedding模型选择→检索准确率→LLM生成质量。 哪个环节弱,整体效果就被那个环节锁死。

下一篇讲破解知识茧房的第二条路——MCP。它的思路不一样:不是给LLM准备好参考资料,而是让LLM自己决定什么时候需要查什么工具,然后去调用。相当于从配了图书馆升级成了配了手和脚。