RAG系统为何总出错?三大核心机制,让你的检索能力“知不知”!
本文深入探讨了RAG系统中存在的“不知知”问题,即无法有效将知识“喂”给LLM。文章从老子与王阳明的哲学思想出发,阐述了检索质量的重要性。接着,详细解析了重排序、分块重叠和余弦相似度三个关键机制,并指出了embedding模型选择、混合检索和评估指标等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. 重排序模型 → 决定最终上下文质量 任何一环崩了,后面全白搭。01
什么是AI大模型应用开发工程师?
如果说AI大模型是蕴藏着巨大能量的“后台超级能力”,那么AI大模型应用开发工程师就是将这种能量转化为实用工具的执行者。
AI大模型应用开发工程师是基于AI大模型,设计开发落地业务的应用工程师。
这个职业的核心价值,在于打破技术与用户之间的壁垒,把普通人难以理解的算法逻辑、模型参数,转化为人人都能轻松操作的产品形态。
无论是日常写作时用到的AI文案生成器、修图软件里的智能美化功能,还是办公场景中的自动记账工具、会议记录用的语音转文字APP,这些看似简单的应用背后,都是应用开发工程师在默默搭建技术与需求之间的桥梁。
他们不追求创造全新的大模型,而是专注于让已有的大模型“听懂”业务需求,“学会”解决具体问题,最终形成可落地、可使用的产品。
CSDN粉丝独家福利
给大家整理了一份AI大模型全套学习资料,这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取【保证100%免费】
02
AI大模型应用开发工程师的核心职责
需求分析与拆解是工作的起点,也是确保开发不偏离方向的关键。
应用开发工程师需要直接对接业务方,深入理解其核心诉求——不仅要明确“要做什么”,更要厘清“为什么要做”以及“做到什么程度算合格”。
在此基础上,他们会将模糊的业务需求拆解为具体的技术任务,明确每个环节的执行标准,并评估技术实现的可行性,同时定义清晰的核心指标,为后续开发、测试提供依据。
这一步就像建筑前的图纸设计,若出现偏差,后续所有工作都可能白费。
技术选型与适配是衔接需求与开发的核心环节。
工程师需要根据业务场景的特点,选择合适的基础大模型、开发框架和工具——不同的业务对模型的响应速度、精度、成本要求不同,选型的合理性直接影响最终产品的表现。
同时,他们还要对行业相关数据进行预处理,通过提示词工程优化模型输出,或在必要时进行轻量化微调,让基础模型更好地适配具体业务。
此外,设计合理的上下文管理规则确保模型理解连贯需求,建立敏感信息过滤机制保障数据安全,也是这一环节的重要内容。
应用开发与对接则是将方案转化为产品的实操阶段。
工程师会利用选定的开发框架构建应用的核心功能,同时联动各类外部系统——比如将AI模型与企业现有的客户管理系统、数据存储系统打通,确保数据流转顺畅。
在这一过程中,他们还需要配合设计团队打磨前端交互界面,让技术功能以简洁易懂的方式呈现给用户,实现从技术方案到产品形态的转化。
测试与优化是保障产品质量的关键步骤。
工程师会开展全面的功能测试,找出并修复开发过程中出现的漏洞,同时针对模型的响应速度、稳定性等性能指标进行优化。
安全合规性也是测试的重点,需要确保应用符合数据保护、隐私安全等相关规定。
此外,他们还会收集用户反馈,通过调整模型参数、优化提示词等方式持续提升产品体验,让应用更贴合用户实际使用需求。
部署运维与迭代则贯穿产品的整个生命周期。
工程师会通过云服务器或私有服务器将应用部署上线,并实时监控运行状态,及时处理突发故障,确保应用稳定运行。
随着业务需求的变化,他们还需要对应用功能进行迭代更新,同时编写完善的开发文档和使用手册,为后续的维护和交接提供支持。
03
薪资情况与职业价值
市场对这一职业的高度认可,直接体现在薪资待遇上。
据猎聘最新在招岗位数据显示,AI大模型应用开发工程师的月薪最高可达60k。
在AI技术加速落地的当下,这种“技术+业务”的复合型能力尤为稀缺,让该职业成为当下极具吸引力的就业选择。
AI大模型应用开发工程师是AI技术落地的关键桥梁。
他们用专业能力将抽象的技术转化为具体的产品,让大模型的价值真正渗透到各行各业。
随着AI场景化应用的不断深化,这一职业的重要性将更加凸显,也必将吸引更多人才投身其中,推动AI技术更好地服务于社会发展。
CSDN粉丝独家福利
给大家整理了一份AI大模型全套学习资料,这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取【保证100%免费】
