RAG 系统答非所问,问题出在哪?
RAG 系统最大的病就是不知知。什么是不知知这个概念很多名人都有过解释。老子说“知不知尚矣不知知病也。” 意思是“知道自己不知道是高明的不知道却以为自己知道是病”。王阳明《传习录》中也说过“未有知而不行者知而不行只是未知。”要表达的是没有“知道了却不去做这回事”你说你知道但没做到那就是还没真知道。引申到 RAG 系统中就是如果只是能检索到相关文档算不得本事能把正确的知识“喂”给 LLM那才是真厉害。找到了一堆文档但是不能帮 LLM 输出正确的答案那就是没找到。如果此时还以为找到了那就是病得治。如何治想象一个常见的场景我们搭好了 RAG 管道向量数据库里写满了文档选了合适的 embedding 模型用最牛的 LLM。然后查询一跑返回的答案驴唇不对马嘴。问题出在哪里我们尽可能地优化了所有环节唯独没验证送进 LLM 嘴里的东西质量怎么样。做过开发的都明白一个道理想得到正确的输出就必须有正确的输入。棉花堆里是提炼不出黄金的。所以为了治病最重要的是理解三个机制重排序、分块重叠、余弦相似度。重排序顾名思义这个步骤就是对找到的结果再次进行排序把最相关的知识给 LLM。检索过程一般分两阶段。第一阶段是初始检索使用双编码器 Bi-encoder 从百万级文档中快速找出 Top-K 候选。这个阶段的优势是速度快劣势是精度偏低容易漏掉细微的语义关联。第二阶段是重排序使用交叉编码器 Cross-encoder 对 Top-K 候选进行二次筛选一对一重新打分挑出 Top-N 送进 LLM。这个阶段的优势是精度高劣势是速度慢。所以不适合做全库查询。总结操作路径初始检索拿回 Top-50 候选 → 交叉编码器一对一重新打分 → 按新分数排序 → 取 Top-5 送进 LLM。另外交叉编码器的推理成本比双编码器高得多。HuggingFace 给出的例子是 10 个查询 × 500 个候选文档Cross-encoder 需要 5000 次计算Bi-encoder 只需 510 次。具体倍数随候选数量变化在一些低延迟场景下要算清楚再确定如何使用。分块重叠假设有一句话“该方案的核心优势在于它能在不增加延迟的前提下将准确率提升 15%。”你设了 chunk size 500 tokens切分时刚好落在“它能在不增加延迟的”和“前提下将准确率提升 15%”之间。前半截块讲的是“不增加延迟”后半截块讲的是“准确率提升 15%”。两个块各自语义都不完整用户查“哪个方案能提升准确率又不加延迟”结果是两个块都匹配不上。答案明明在数据库里但检索不出来。分块重叠就是在相邻块之间留一段缓冲带让边界处的内容同时出现在两个块里。通常 10-20% 的重叠率就够。chunk size 500 tokens 的话重叠 50-100 tokens。结构化文本代码、表格可以少一些叙述性长文本需要多一些。但重叠只能解决边界信息丢失问题解决不了切分粒度本身选错的问题。chunk 太大噪声多chunk 太小语义碎片化。而且重叠会让向量数据库膨胀检索计算量也跟着涨不是越多越好。更根本的思路是语义切分Semantic Chunking。不按固定长度切而是按语义边界切。段落讲完一个完整意思就是一个 chunk天然不会把语义劈成两半。固定长度 重叠是最基础的方案能用但不是唯一方案。余弦相似度余弦相似度给了高分不代表内容真的相关。余弦相似度做的事情很简单把查询和文档块各自变成一个高维向量然后算两个向量之间夹角的余弦值。夹角越小余弦值越接近 1系统就判定“越相关”。它只看方向不看长度所以一句话和一整段话只要语义方向一致分数可以一样高。cosine_similarity cos(θ) (A · B) / (||A|| × ||B||) A 查询的 embedding 向量 B 文档块的 embedding 向量 θ 两个向量之间的夹角 结果范围[-1, 1]越接近 1 越相关听起来很优雅但问题在上游这些向量是谁生成的是 embedding 模型。如果你用一个通用 embedding 模型去处理高度专业的医学文献模型根本不理解那些术语之间的细微差异编码出来的向量方向就是错的。余弦相似度在错误的向量上算得再精确也是精确的垃圾。还有一个更隐蔽的问题余弦相似度是对称的sim(A, B) sim(B, A)。它分不清“谁有用、谁没用”。举个实际场景你的知识库里同时存了这两段块 A“RAG 系统的核心挑战是什么”一篇 FAQ 里的提问块 B“RAG 系统通过检索外部知识来增强生成质量。”一篇技术文档里的描述用户问“RAG 系统有什么问题”余弦相似度可能给 A 和 B 打出差不多的分因为它们在向量空间里方向接近都跟“RAG 系统”和“问题/挑战”沾边。但 A 只是在重复问题B 才是有用的上下文。余弦相似度分不出哪个是真正能帮 LLM 回答问题的内容。这就是为什么重排序是必要的补偿机制交叉编码器把查询和文档块拼在一起看能分辨“谁在问、谁在答”。RAG 检索质量的完整图景回过头看这三个部分是一条链上的三个杠杆点文档 → 分块带重叠→ Embedding → 向量数据库 ↓ 查询 → Embedding → 余弦相似度匹配 → Top-K 候选 → 重排序 → Top-N 精选 → LLM 生成链条的强度取决于最弱的那一环。分块切烂了后面的 embedding 和检索全在处理残次品。Embedding 模型不懂专业领域的专业名词余弦相似度算出来的“相关性”就是幻觉。检索结果没重排序LLM 就在一堆噪声里找答案。关键杠杆点 1. 分块策略粒度 重叠→ 决定信息完整性 2. Embedding 模型质量 → 决定语义表示精度 3. 重排序模型 → 决定最终上下文质量 任何一环崩了后面全白搭。这篇笔记没说的事以上三个杠杆点是 RAG 检索环节的基础但只是基础。RAG 中还有其它关键问题例如Embedding 模型选择整个检索质量的天花板。用什么模型把文本变成向量决定了后面所有环节的上限。通用模型处理垂直领域文本效果可能断崖式下降。这不是调参能救的是选型问题。混合检索Hybrid Search纯向量检索在实际生产中并不够用。关键词检索BM25在精确匹配场景下依然强悍实际系统通常把关键词检索和向量检索的结果融合起来。评估指标没有度量就没有优化方向。MRR平均倒数排名、Recall KTop-K 召回率这些指标告诉你检索结果到底好不好而不是靠人的感觉来判断。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】