惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
H
Hacker News: Front Page
S
Security Affairs
Google Online Security Blog
Google Online Security Blog
Attack and Defense Labs
Attack and Defense Labs
H
Heimdal Security Blog
S
Securelist
S
Secure Thoughts
N
News and Events Feed by Topic
T
The Exploit Database - CXSecurity.com
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Last Week in AI
Last Week in AI
The Last Watchdog
The Last Watchdog
N
News | PayPal Newsroom
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
宝玉的分享
宝玉的分享
有赞技术团队
有赞技术团队
O
OpenAI News
V
Vulnerabilities – Threatpost
S
Schneier on Security
Cyberwarzone
Cyberwarzone
雷峰网
雷峰网
罗磊的独立博客
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
J
Java Code Geeks
Google DeepMind News
Google DeepMind News
The Cloudflare Blog
美团技术团队
人人都是产品经理
人人都是产品经理
T
The Blog of Author Tim Ferriss
T
Tor Project blog
P
Privacy International News Feed
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Google DeepMind News
Google DeepMind News
S
Security @ Cisco Blogs
Project Zero
Project Zero
Security Archives - TechRepublic
Security Archives - TechRepublic
Schneier on Security
Schneier on Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
P
Proofpoint News Feed
K
Kaspersky official blog
P
Privacy & Cybersecurity Law Blog
aimingoo的专栏
aimingoo的专栏
L
LINUX DO - 热门话题
V
V2EX
Blog — PlanetScale
Blog — PlanetScale
www.infosecurity-magazine.com
www.infosecurity-magazine.com
U
Unit 42

人人都是产品经理

为什么你的产品找不到差异化?90%的失败都卡在第一步上(下) – 人人都是产品经理, 3年从30万到1300万用户、获2200万美元融资,这个AI教育产品用“抽卡”破解了获客难题 – 人人都是产品经理, 园区招商系统怎么做才能真正帮到去化?我加了这一个功能,推广链接转发400次阅读过万 – 人人都是产品经理, AI大事件:OpenAI发完网络安全模型又搞药物研发,小鹏汽车要抓”DeepSeek时刻” – 人人都是产品经理, 电商不是卖货,是一场更残酷的产品经理实战 – 人人都是产品经理, 没想到,活动营销又回来了! – 人人都是产品经理, 为何All-in海外KOC:一场关于AI时代窗口期的豪赌 – 人人都是产品经理, 重新理解企业的内部协作 – 人人都是产品经理, 苹果的 AI 战略到底是什么? – 人人都是产品经理, 医疗智能体·第2讲——合规护城河:等保、PIPL与HIPAA的架构实战 – 人人都是产品经理, 向量知识库五步法:从“答非所问”到“精准回复” – 人人都是产品经理, 鸿蒙PC三方库构建总指挥HPKBUILD(sha)库为例 – 人人都是产品经理, 何时该用LLM?AI产品经理的LLM设计指南 – 人人都是产品经理, 医疗信息领域的需求方、决策方、准入方以及关注点(二) – 人人都是产品经理, 即梦涨价:一场被误读的「傲慢」 – 人人都是产品经理, 面试AI PM必答题:Hermes和OpenClaw的区别,如何讲清楚业务价值 – 人人都是产品经理, AI的下一张船票:世界模型——AI产品经理必须理解的技术拐点 – 人人都是产品经理, 小红书做GEO,怎么让AI信你?记住这 3 个重要信息 – 人人都是产品经理, 5 家印度 AI 初创公司,看看印度 AI 再做什么 – 人人都是产品经理, AI项目跨团队协作:产品技术业务如何不打架 – 人人都是产品经理, Agentic Workflow(智能体工作流):让AI从”答案生成器”变成”数字员工” – 人人都是产品经理, lycium_plusplus 项目全景解读:OpenHarmony 三方库构建的“大管家” – 人人都是产品经理, 从爆单救火到前置履约:两套预采策略,把生鲜大促履约效率拉满 – 人人都是产品经理, 什么时候该补货?我用一轮数据做了一个决定 – 人人都是产品经理, 从“机械兜底”到“动态分流”:AI客服重复进线治理的4大底层逻辑 – 人人都是产品经理, 抖音拼效率,红书拼洞察 – 人人都是产品经理, 全民狂欢与退潮——为什么龙虾这波热潮冷却得如此之快? – 人人都是产品经理, Stripe押注!MPP重塑全球支付 – 人人都是产品经理, 小红书GEO:AI引用你的内容,不是因为你对,而是因为你看起来可信 – 人人都是产品经理, 前百度副总裁押注办公Agent,日韩付费爆发,Manus迎来强劲对手 – 人人都是产品经理, 企事业单位数字化的业务供需本质 – 人人都是产品经理, 医疗智能体·第1讲——医疗信息化重构:从“辅助软件”到“自主智能体”的范式转移 – 人人都是产品经理, 粉丝量就是空气!!! – 人人都是产品经理, 用户说“薯片碎了”,机器回“要买吗?”:意图识别的翻车与破局 – 人人都是产品经理, RAG召回准确率从75到90 我做对了这三件事 – 人人都是产品经理, AI大事件:Anthropic改收费、OpenAI发安全版、手术机器人纳入医保、阿里发布”秒悟” – 人人都是产品经理, Chrome 推出 Skills 新功能,Agent 重塑上网方式 – 人人都是产品经理, GitHub前创始人拿了a16z的1700万美元,做Agent时代的Git – 人人都是产品经理 拷贝或克隆其他 Flutter OH 项目到本地后无法运行 – 人人都是产品经理, 优惠券设计:优惠券创建 – 人人都是产品经理, 不用死磕文档!AI 助手 1 小时搞定飞书 CLI 安装 + 配置 + 知识库 – 人人都是产品经理, 用小龙虾做竞品分析报告:从2天到20分钟,我是怎么做到的 – 人人都是产品经理 用小龙虾做市场分析报告:搞懂这3个公式,市场规模不再靠猜 – 人人都是产品经理, 你早就在做 Harness 工程,只是不知道它叫这个名字 – 人人都是产品经理, Think Long就够?你可能想多了! – 人人都是产品经理, 货代SRM实战:供应商准入怎么做,才能让资源池不是通讯录而是可交付网络? – 人人都是产品经理, 如何做好用户调研?详解基本技巧 – 人人都是产品经理, 木鸟、途家、美团对打,平台春天行动开“卷” – 人人都是产品经理, 入职才发现公司不靠谱?小红书从业者求职避坑指南 – 人人都是产品经理, 美国 AI 三巨头联手封堵,中国 AI 突围之路在何方 – 人人都是产品经理, 小红书,放在需求对面的镜子 – 人人都是产品经理, AI 会带来大规模失业吗? – 人人都是产品经理, 从出单到补货前,我第一次犹豫:该不该放大? – 人人都是产品经理, Flutter 三方库鸿蒙化适配:5 种高效检查方式,快速判断是否需要适配 – 人人都是产品经理, 从做产品进阶拿结果:医美机构产品经理转岗科室运营经理 – 人人都是产品经理, 阿里HappyHorse,一场关于“Token经济”的阳谋 – 人人都是产品经理, To B AI:客户留存落地的观察与思考 – 人人都是产品经理, AI产品的“生命线”——数据采集、标注、清洗的产品化设计 – 人人都是产品经理, 谈谈AI Agent(二):当“孩子”能自己“体验世界”时,你该学什么? – 人人都是产品经理, UI/UX设计师的3层能力进阶,前两层让你活下来,第三层…才是真正的分水岭 – 人人都是产品经理, 2分钟 → 30秒,效率提升75%:B端产品经理如何用「规则枷锁」驯服AI幻觉? – 人人都是产品经理, 还没来得及学OpenClaw,来了个更猛的:Hermes Agent – 人人都是产品经理, AI日报:宇树机器人跑出10m/s刷新世界纪录 – 人人都是产品经理, 一文说透基金互金如何用情绪价值引导用户决策做转化 – 人人都是产品经理, 当浏览器开始替你”看”网页:AI 浏览器正在亲手拆掉它脚下的那张网 – 人人都是产品经理, 0代码,一天时间我Vibe Coding了个网站 – 人人都是产品经理, Hermes 和 OpenClaw 之争,Agent 的能力应该“装上去”还是“长出来”? – 人人都是产品经理 视频生成的“桌子”,字节Seedance 2掀完,阿里快乐马掀 – 人人都是产品经理, 从听不懂到完全信任:我的 Codex 深度产品体验 – 人人都是产品经理, 当虚拟偶像有了北京户口,与真人偶像还有什么区别? – 人人都是产品经理, 会说,远远比会做更重要 —— 对 SBTI 爆火现象的五层观察 – 人人都是产品经理, AI产品经理必看:当“搭环境”比“选模型”更重要,你的认知还在2024年吗? – 人人都是产品经理, 2026年AI产品商业化核心逻辑:从功能demo到规模化营收的3个必破卡点 – 人人都是产品经理, 京东围绕供应链,卷起裤腿下场的那些事儿 – 人人都是产品经理, SBTI一夜刷屏:它赢在了“太会说人话” – 人人都是产品经理, 折扣零售的真相:不是便宜,而是价值感! – 人人都是产品经理, 和甲方吵了一架,最后加钱做了——我学到的ToB产品经理生存法则 – 人人都是产品经理, 和几位小红书操盘手聊了8小时,干货全在这 – 人人都是产品经理, 智谱GLM-5.1登场,开源模型首超Opus4.6!!! – 人人都是产品经理 Anthropic收入凭什么反超OpenAI,终于有人把这事说清楚了 – 人人都是产品经理, 史上最有故事感的技术报告——Claude最强模型Mythos 7个极其精彩的细节 – 人人都是产品经理, 模型不是壁垒,Harness 也不是 – 人人都是产品经理, 抖音本地生活业务思考21 – 人人都是产品经理, Superpowers:145k Star的AI编码框架,到底是什么来头? Superpowers:145k Star的AI编码框架,到底是什么来头? – 人人都是产品经理, OpenAI 的路走错了,Anthropic Harness 解法启示:模型需要实践专科生 – 人人都是产品经理, 画原型图的前一步:设计站点地图 – 人人都是产品经理, 给 DeepSeek 的最后一封催更信 – 人人都是产品经理, 手把手教你用 Claude Code 搭建 AI 营销团队:5 个 Agent、12 项技能,独立完成研究、写作、设计全流程 – 人人都是产品经理, 你以为大模型在学语言?不,它在重新发明语言学 – 人人都是产品经理 所谓Skill,不过是AI时代的工业垃圾 – 人人都是产品经理, 聊一聊内容传播的几个方法 – 人人都是产品经理, 当平台开始吃掉生态:从 OpenClaw 被封杀,读懂 Anthropic 的这盘棋 – 人人都是产品经理, 你装了 10 个 AI 插件,Obsidian 还是一个文件夹 – 人人都是产品经理 关于AI智能体架构演进的系统性思考:从单体试水到多体协同的重构 – 人人都是产品经理, 当“人”变成Skill,我们又该何去何从? – 人人都是产品经理 Mythos 事件:前沿 AI 治理的意外实验 – 人人都是产品经理, 货代CRM:信用与风险管理怎么做,才能把坏账风险拦在放货之前? – 人人都是产品经理, 从HR收集自拍照到员工自助录入——我见证了园区人脸识别从”不可用”到”真好用”的全过程 – 人人都是产品经理 千问闯关AI混沌期:阿里画靶,吴嘉张弓,马云射箭? – 人人都是产品经理,
RAG观止系列(三):为什么 90% 的坑都踩在检索环节上?
Timothy · 2025-11-21 · via 人人都是产品经理

在 RAG 应用的落地过程中,检索环节往往是决定成败的关键。数据量庞大、语义复杂、场景多变,使得 90% 的问题都集中在这一环节。本文将深入剖析这些“坑”,并探讨如何构建更稳健的检索体系。

RAG 落地的隐忧与破局

在大模型落地的方案中,RAG(Retrieval-Augmented Generation,检索增强生成)已经成为业内共识的架构。

在这个系列的前两篇,我们把 RAG 体系里最容易被低估的两个基本面拆了个彻底。

第一篇讨论的是 知识库的“保鲜”机制。我们得到一个清晰结论:

RAG 不是“把知识存进去”,而是“确保系统永远拿到最新、正确的知识”。旧知识的干扰、时效性的溢出、版本冲突——这些看似数据层的小问题,一旦进入检索链路,都会被模型无限放大。

第二篇我们把 重排(Rerank) 从“可有可无”重新定义成“决定胜率的关键步骤”,那篇文章的核心观点其实只有一句:

召回给的是“可能相关”,重排决定“真正有用”。如果没有重排,RAG 很容易变成“模型在一堆差不多的片段里凭感觉作答”。

而当你把“知识保鲜”和“重排”这两件事都处理到位后,会发现战场自然收缩到唯一的核心问题——检索到底能不能把对的东西拿上来?如果这一步不稳,后面所有工程与策略的努力都白费。

所以,这一篇,我们终于来到 RAG 落地里最“让人掉过无数坑”的关键环节:检索策略。这也是整个系列中最容易做对 70 分,却最难做到 95 分的部分。

那么,如何在检索环节做到极致,把该拿的信息都精准地拿到?面对海量的知识库和千奇百怪的用户提问,我们如何设计一套“胜率最高”的检索策略,保证后续生成有高质量的材料可用?

这篇文章将围绕检索策略展开,从原理剖析到策略选择,再到实战技巧,为你拆解一套标准的 RAG 检索优化 SOP。阅读完本文,你将对检索环节可能遇到的坑和对应的解决方案了然于胸,做到“看完这一篇,检索环节再无疑问”。接下来,我们就一步步揭秘如何让大模型如虎添翼,彻底释放 RAG 的潜能。

重新定义检索策略

在传统认知中,“检索”似乎只是 RAG 流水线里一个简单的步骤:把用户问题嵌入成向量,丢进向量库,抓出几段相似文本。很多项目一开始也是这么干的。然而,当我们深入研究却发现:检索远非表面那么简单,它实则承载着“将用户提问与知识库精确对接”的使命,是整个 RAG 系统的第二大脑。换言之,如果把大模型比作一个能言善辩的学生,那检索策略就是为学生挑选参考书目和资料的老师——挑得好,事半功倍;挑不好,再聪明的学生也巧妇难为无米之炊。

检索策略的本质是什么?在有限的时间内,以最高的召回率找到最相关的信息,实际上牵涉到两个看似矛盾的目标:召回率(不遗漏有用信息)和准确率(不引入无关噪音)。普通的做法往往只关注其中一个维度,比如“只求找对几段内容”或者“尽量多找一些内容以防遗漏”。高级的做法则是想方设法在高召回高精准之间取得平衡。要做到这一点,就需要对检索策略进行系统性设计。

为了形象地说明普通做法 vs 高阶做法的区别,我们可以构建一个简单的“检索策略矩阵”,以「方法单一 vs 方法组合」和「覆盖优先 vs 精确优先」两个维度对检索方案进行分类:

策略类别

单一检索策略

组合检索策略

覆盖优先

广撒网式检索:一次抓取大量结果,尽可能不遗漏,但噪音也多。

全面撒网:多种方法并用,不漏掉相关信息,但结果杂乱,需要后续严格筛选。

精确优先

刻板匹配:严格匹配,结果精确但容易漏掉表述差异的信息。

精细打磨:多算法联合+结果重排,结果全面且高度相关,噪音极低。

简单解释:

  • “单一检索 + 覆盖优先”往往指纯向量检索且设置较低的匹配门槛,一股脑返回几十上百条结果,期望把有用的都捞上来(典型的新手策略)。
  • “单一检索 + 精确优先”则类似纯关键词检索或设置很高的相似度阈值,只返回几条严格匹配的结果,确保精确但极可能遗漏关键信息。
  • 相比之下,“组合检索 + 覆盖优先”会同时运行多路检索(比如关键词+向量一起上),实现几乎不漏的召回,但初始结果良莠不齐,必须依赖后续的筛选或模型判断。
  • 最终的“组合检索 + 精确优先”就是我们的目标状态:通过混合多种检索方式并辅以智能重排筛选,既保证召回全面又确保结果相关度高,几乎将噪音降到最低。

可以看到,高阶的检索策略并非单指某个算法,而是一套“组合拳”:用多种技术弥补彼此短板,在保证不漏掉有用信息的同时,把无关的信息挡在外面。这才是检索的本质——在海量信息和复杂问句之间架起精准匹配的桥梁。

接下来,我们就进入最关键的部分:究竟有哪些检索策略的“胜负手”,能够帮助我们搭建上述理想的检索方案?下面逐一拆解。

核心实战:检索环节的“胜负手”

检索策略决定了检索阶段的成败。在这一节,我将介绍4个关键策略,每个策略都可能成为影响 RAG 成效的胜负手。针对每个策略,我会说明其适用场景、优缺点,并给出避坑指南。

策略一:语义 & 关键词混合检索(双管齐下)

策略概述:不要把“向量语义检索”和“关键词精确检索”视作二选一。最有效的检索往往是两者的组合拳。混合检索策略就是同时利用向量相似度和关键词匹配,各取所长,获取最大化的召回和精确度。向量检索能够找出语义相关的内容,即使措辞不同;而关键词检索则擅长捕捉精确匹配的关键字、数字、代号等细节。两者并行,就像左右开弓,确保既不漏掉意义相近却措辞不同的内容,也不错过那些需要精确匹配的细节。微软Azure的实验证明,“关键词 + 向量”的混合查询能显著提升检索的准确率和召回率。

适用场景:几乎所有 RAG 应用都能从混合检索中受益,尤其是:

存在专业术语或编码的场景,例如法律、医疗、技术支持问答等。向量可以捕捉语义,关键词确保专有名词不丢。Anthropic 的案例显示,用户查询技术支持错误码“TS-999”时,纯向量检索找到了很多泛泛的错误信息,而只有 BM25 关键词检索才能准确命中包含“TS-999”的文档。

用户用语与文档用语存在差异的场景。例如用户问“合同违约赔偿”,但文档中可能写的是“违约金”。向量能理解两者语义接近,而关键词能直接匹配“违约金”出现的段落,二者结合效果最佳。

希望提升召回率又不想显著增加噪音的场景。混合检索相当于双保险,在确保重要信息不漏的同时,通过合并去重可以控制返回结果数量。

优缺点分析:

优点:召回率和精准度双提高。实践证明混合检索往往能找到单一检索错过的内容,例如只用向量可能漏掉精确匹配项,只用关键词则可能漏掉语义同义表述。微软的基准测试显示混合查询带来最显著的精准/召回提升。此外,现代搜索引擎支持并行执行向量和关键词查询,性能影响可控。

缺点:实现稍复杂,需要维护两套索引(向量索引和倒排索引)并设计结果融合逻辑。对实时系统而言,两路查询也略增额外延迟(通常毫秒级别)。此外,如果融合策略不当,可能出现一方结果完全淹没另一方的情况,需要调参平衡。硬件成本上,维护向量索引会消耗额外存储和内存。

代价权衡:通常而言,这点复杂度和开销相对于提升的效果是值得的。如果系统对准确性要求高(如金融、医疗问答),混合检索是性价比极高的改进。只有在知识库极小、查询极简单的情况下,才可能考虑单一检索以减少开销。

避坑指南:

注意结果融合逻辑:不要简单地把两路检索结果拼在一起就交给大模型了事。这样可能导致重复(同一内容被两种方法检索到)或者无关结果插队。正确做法是对两路结果进行去重统一重排。可以采用“rank fusion(排序融合)”算法,或根据需要调整一方结果的权重。例如,有实践经验表明,可对向量匹配结果和关键词结果分别打分归一化,然后按一定比例混排,确保既有语义相关度又考虑关键词命中。Azure 提供了直接的参数来微调混合检索结果,比如提高向量匹配结果权重或限定BM25结果数量。

关键词检索别忘配置同义词表:混合检索的初衷之一就是弥合用户提问和文档用词差异。如果文档中缺少用户常用说法,可以在索引中加入同义词表来提升匹配率。例如将“客服”映射到“客户服务”,避免关键词检索漏掉相关内容。

控制返回数量:混合检索容易一下召回很多内容。切忌把几十条结果全丢给大模型生成,否则上下文窗口会爆炸、响应变慢。通常我们可以设定一个合理的top-k(如总共返回5~10条最相关结果),足够覆盖答案所需又不过载。记住:质量优于数量,过多无关段落只会拖累大模型表现。

“别迷信单一的向量检索,它并非万能。最有效的检索常是多种方法的组合拳,一种补另一种之短。

策略二:二阶段检索与重排序(精准打磨)

策略概述:所谓二阶段检索,就是在初始检索之后,再增加一道“复筛”工序,即重排序(Rerank)。具体做法通常是:第一阶段用快速检索(向量或关键词)获取一批候选文档(比如 top-50);第二阶段用更高精度的模型(如跨编码器 cross-encoder 或大模型本身)对这批候选进行相关性重新打分,选出最终最相关的少数结果(比如 top-5)供生成使用。这个过程类似搜索引擎中的“粗排+精排”两级架构。Rerank 的作用就是最大限度提高最终喂给大模型的内容精准度,把噪音降到最低——这就是为什么有人说“Rerank 才是 RAG 的灵魂”,因为最终给模型的那几段上下文质量,往往决定了回答质量。

适用场景:当下列情况出现时,强烈考虑引入重排序:

  • 知识库很大且内容参差不齐:初始检索难免捞上一堆半相关的段落,需要精筛。例如在包含百万文档的库中查询,如果不重排,初始top-5里混入无关段落概率很高。
  • 查询问法复杂或含糊:简单的向量匹配可能无法准确理解用户意图,导致候选结果良莠不齐。这时让一个强力模型做进一步语义判断,会明显提高准确率。
  • 对准确率要求极高:如法律问答、医疗诊断等,宁可少给一些段落也要保证给的每段都可靠。在这些场景, 二次重排几乎是必备的环节,用于剔除任何可能干扰大模型的噪音。

优缺点分析:

  • 优点:重排序往往能带来质的飞跃:将检索结果的纯净度提升到一个新水平。据 Anthropic 报告,引入语义重排后,检索失败率大幅降低,在结合上下文检索时可以减少多达67%的检索遗漏。微软也在 Azure 检索中集成了 Bing 的语义Ranker模型,对初始结果进行重新排序,从而显著改善结果与查询的语义契合度。Cross-Encoder 等重排模型在学术基准上往往能较dual encoder提升10几个点的MRR/NDCG。这些都证明了二阶段检索对最终相关性的价值。
  • 缺点:主要是性能开销。重排序一般需要引入一个额外的模型评估步骤。如果使用跨编码器(如 MiniLM、mpnet 等小模型),一次对几十个候选评分可能耗费几十毫秒到数百毫秒不等;如果一味追求极致,用上大型模型做重排,那延时和成本会飙升,不切实际。此外,重排序增加了系统复杂度:需要维护这个模型,以及在工程上串联两个阶段。
  • 代价权衡:在多数企业应用中,一次查询延迟增加50~100毫秒来换取显著准确率提升是值得的,用户几乎感觉不到慢。但如果对实时性要求极高(如需要毫秒级响应的场景),可以考虑权衡重排序的层数和模型大小,或仅对“模糊查询”等高风险情况触发重排(动态开启)。总体来说,对于关乎正确率的任务,重排序投入的算力往往远低于因错误回答导致的代价(例如误导用户的损失)。

避坑指南:

  • 合理设置候选集大小:重排序并非候选越多越好。候选集太小(比如只取初始top-5)可能让重排无用武之地,漏掉正确答案;太大则增加计算量还可能把噪音也排上来。经验上,候选数一般是最终所需文档数的5-10倍较为合适(如最终要3段,就初始取20-30段)。这样大概率涵盖正确段落,又不会给重排增加太多负担。
  • 选择合适的重排模型:优先考虑现成的轻量级重排模型。例如 Microsoft 的 msmarco-MiniLM、Cohere 的rerank模型等,在数十毫秒内即可对几十条候选排序,效果也不错。如果自行使用GPT模型来重排,成本和延时都会很高,而且GPT未必擅长细粒度排序任务。除非有特殊需求,否则不建议用大模型直接做重排。
  • 关注阈值和筛选:有些情况下,可以为重排序结果设置最低分数阈值,低于阈值的候选一律不要。这样哪怕初始检索胡乱抓来一些内容,也不会流入最后上下文。在实践中,我们常根据验证集调整一个分数线,让模型对不确定的检索结果情愿少给也不给。这对确保回答精准很有效。此外,重排时也可以考虑多样性,避免最终选出的段落内容高度重复——如果候选前几名来自同一篇文档的相邻段落,可能信息冗余,适当选择不同来源的段落会让答案覆盖面更广。

“在 RAG 这场信息检索的淘金赛中,重排序就是那把淘金筛网——过滤掉沙子,留下真金。”

策略三:多维召回策略(多向量表示 & 查询扩展)

策略概述:用户提问千差万别,知识库内容也错综复杂。要提高检索的全面性,我们需要让检索从多个角度出击。“多维召回”策略涵盖了多向量表示查询扩展两种思路,但目标一致:最大化有用信息的召回率,降低检索遗漏。多向量表示是指为同一份内容生成多个不同角度的向量,以捕捉内容的不同侧面;查询扩展则是从用户问题出发,生成同义词、相关词或子查询,扩大检索覆盖面。直白地说,就是用多把钥匙开锁,以防丢掉某把单一钥匙就打不开知识宝库的大门。

适用场景:

  • 长文档或多主题文档:一篇内容涵盖多个要点的长文,用单一向量表示可能无法涵盖所有信息。这种情况下,可按段落甚至句子生成多个向量,确保文档中每个要点都有机会被检索到(实际上就是细粒度切片和表示)。类似地,如果一个知识单元本身有结构(标题、正文、摘要),也可以针对不同部分各算一个embedding。
  • 专业词汇丰富或别称多:如医药领域同一种病有学名和俗称,法律领域一个概念有拉丁文和本地语言两种叫法。可以考虑为内容创建多种embedding(例如分别基于不同语言或不同Embedding模型),或者在查询扩展时加入这些别称,避免遗漏。正如 Azure 所建议的,利用同义词表等手段扩充索引和查询术语,以覆盖不同说法。
  • 用户查询很简短或不明确:短查询可能不包含足够上下文来匹配正确文档。此时可以通过查询扩展来丰富查询语义。方法包括:根据用户上下文或历史提问补充关键词,利用小型语言模型将查询重述成更具体的问题,或加入潜在相关的词。例如用户问“打印机卡纸”,扩展后变成“打印机 卡纸 解决 方法”,从而检索到包含“解决卡纸”内容的文档,而不仅仅是“卡纸”定义。

优缺点分析:

  • 优点:多维召回能有效提升检索的覆盖面,降低 “漏掉关键资料” 的风险。Anthropic 提出的Contextual Retrieval本质上也是一种多维召回:它在生成embedding时为每个段落附加上下文描述,从而等价于每段内容有了“本段+上下文”两种表示,显著减少了检索失败率。查询扩展在传统搜索里早已被证明有效(例如用户搜索引擎的“你是不是想找…”提示),在RAG中同样能提升召回。特别是对于新手用户模糊的提问,扩展后的查询更有机会匹配到正确答案。
  • 缺点:首当其冲是资源消耗增加。多向量表示意味着索引规模变大,一个文档存多份embedding,占用更多存储和内存;查询扩展则可能需要对每个用户问题执行多次检索,增加CPU/QPS消耗和延时。如果知识库很大或并发请求多,这两方面开销不容忽视。
  • 代价权衡:可以有选择地应用多维召回策略。例如,只对高价值内容或易遗漏内容使用多向量(重要段落多Embed几次),一般内容保持单一向量,以控制索引规模。同样,查询扩展可以在检测到查询过短或包含歧义时才触发,而不用对每个请求都扩展。通过缓存(后面详述)也可以减轻多次检索的性能压力。总之,应根据实际需求权衡召回提升和资源代价——在高准确率要求场景,增加些资源以避免错误是值得的。

避坑指南:

  • 避免过度冗余:多向量策略容易导致某些“健谈”的内容占据过多检索名额。例如一个长文档拆成10段,各自embedding,如果用户问一个相关问题,这10段可能一起涌入候选集,挤掉别的来源。这会造成结果多样性下降。应当限制每篇文档的入选段落数,比如最终结果中同源文档最多2段,避免“一篇独大”。
  • 扩展要有针对性:查询扩展如果做不好,反而会带来一堆无关结果。避坑的关键在于相关性判断。可以使用领域词典或知识图谱来扩展专业术语,但尽量不要用与原问毫不相干的扩展词。使用 LLM 自动改写问题时,也要核查改写后的意思未跑偏。理想情况下,扩展应当紧扣原始意图,只填补信息,不引入新的歧义。例如,将“合同违约赔偿”扩展为“合同 违约 赔偿 金额 法律 责任”,这些词都是相关的,而不应添加诸如“合同范本”等无关词。
  • 关注Embed模型差异:如果为同一内容生成多种embedding(比如用不同模型或策略),要了解各embedding的特点。有些embedding偏重关键词(如Sentence-BERT),有些偏重主题。当多embedding共同使用时,可能需要对检索结果进行归一化评分以便公平比较。不妨先单独评估哪种embedding对哪些查询效果好,再决定如何融合它们的结果,避免盲目叠加。

“检索就像找钥匙开锁。用多把钥匙试试,总比只用一把碰运气更保险。

策略四:动态过滤与缓存优化(效率加速)

策略概述:最后一个胜负手,关注的是检索的效率和稳定性。再好的检索算法,如果又慢又贵,用户和产品也难以承受。所以我们需要在保证准确率的前提下,尽可能优化检索的速度和成本。这方面有两大利器:动态过滤缓存。动态过滤指根据查询或场景对检索范围进行智能缩小,比如利用元数据筛选、分区检索等,减少无谓搜索范围,从而加快响应并减少噪音。缓存则是老生常谈的优化:对于重复性高的查询或固定不变的知识,可以提前缓存检索结果甚至缓存生成结果,避免每次都大海捞针式地重新搜一遍。简而言之,该花时间检索时不偷工减料,该直接返回时也绝不重复劳动

适用场景:

  • 有明确属性筛选条件的查询:比如企业知识库中,用户问题含“2023年”字样,就可以在检索时加一个年份=2023的过滤;又如多业务线知识库,可以先根据业务线或类别过滤,只在相关部分检索。这类过滤大幅缩小搜索面,让检索更快、更精准。
  • 知识库按主题/章节天然分块:可以考虑分区检索策略。比如法律资料按法规、案例、评论划分,用户问题提到法规号时就直接检索法规库,不去管案例库。这实质是在产品上引导用户选择范围,技术上减少检索开销。
  • 高频重复的问答:如果统计发现某些问题每天都有人问,或者某类查询结果几乎不变(比如公司简介类问题),那么完全可以直接缓存结果甚至缓存完整答案。第一次检索并生成后,把答案存起来,后面遇到同类提问直接返回缓存内容或轻微调整即可。这就是“以时间换空间”的典型做法,用一点存储换取响应速度的大幅提升。

优缺点分析:

  • 优点:动态过滤往往能显著提升性能减少干扰项。通过预先排除掉不相关的大块内容,检索可以更专注于可能有答案的区域,速度更快,结果更纯净。例如对百万级文档的库,如果提前按类别筛掉90%的无关部分,只在10%里检索,速度和精度都会上一个量级。缓存的优点则是“快”——命中缓存时几乎零延迟,而且还能减轻后端负载。有研究指出,在静态数据集上取消实时检索,整体延迟可降低约40%。一些创新方案如 Cache-Augmented Generation(CAG)甚至主张直接把整个知识库预加载进模型缓存,一次加载、多次问答,声称能让回答速度提升10倍以上。虽然这种方案只适用于小规模知识,但从中可以看出缓存带来的潜在提速效果。
  • 缺点:过滤和缓存都需要额外管理策略控制。过滤不宜过度,否则可能把正确答案排除在外——如果用户提问中的线索不充分,盲目过滤可能适得其反。因此需要仔细设计过滤条件,必要时提供用户开关或在结果为空时自动放宽过滤。缓存则有数据时效性问题:知识更新后缓存必须失效,否则可能返回过期信息;缓存命中也可能错过最新内容。所以缓存适合稳定、不频繁变化的信息。其次,缓存策略需要平衡命中率和内存占用,缓存粒度太细或太粗都会影响效果。
  • 代价权衡:动态过滤通常属于“精雕细琢”范畴,投入的是策略和规则设计时间,回报是持续的性能收益,值得尝试。但要留后门:一旦过滤导致检索结果为空,系统应自动回退到不过滤或提示用户,否则用户体验会受损。缓存方面,则应根据业务需要决定是否采用。如果99%的查询都不重复,那缓存价值不高;但如果某领域问答有明显长尾分布(少数问题反复出现),就很值得实现缓存。可先对日志数据做分析,再决定缓存哪些内容以及缓存多久。总之,优化要有的放矢,切忌为了技术而技术

避坑指南:

  • 设计过滤策略时保留余量:不要过分依赖单一条件过滤。可以采用渐进式过滤:先宽后严,多层筛选。例如先按业务线分区(大块淘汰无关),再按日期等细粒度筛选。如果筛选后结果过少,可以自动放宽一个条件。这种动态调整比一刀切强得多。
  • 缓存内容定期刷新:为保证缓存命中内容的正确性,应该对缓存设定合理的TTL(存活时间),或者在源知识更新时使相关缓存失效。如果有条件,也可引入版本控制:缓存时标记所依据的知识版本号,查询时若发现知识库有更新则跳过老缓存。这避免了“知识变了但系统还在用旧答案”的尴尬。
  • 警惕缓存与隐私/个性化:如果系统面向的是多用户且有权限区分的场景,缓存要注意隔离不同用户的权限。避免出现A用户的问题缓存了答案,B用户问类似问题直接拿到但其实无权限看的信息。这需要在缓存Key设计时把用户/权限维度考虑进去。对于个性化很强的问题,缓存意义也不大,可以直接禁用。

“快,也是一种答案的准确。用户不只想要对的答案,也想要及时的答案。优化检索的效率,就是在优化用户体验。”

案例复盘:检索策略优化前后对比

纸上得来终觉浅,让我们通过一个虚构的案例场景,直观感受以上策略的威力。假设有一家大型软件公司上线了一个内部知识库问答Bot,供员工查询技术支持问题。知识库涵盖了产品手册、故障排查指南、内部论坛问答等数十万条文档。产品团队起初采用了经典 RAG 实现:OpenAI Embedding 将文档切片向量化,Faiss 向量库检索 top-5 相似片段,最后GPT生成答案。然而上线后,用户反馈“答案不准”、“经常答非所问”。我们选取其中一个真实场景对比优化前后的效果:

优化前:一位运维同事询问Bot:“如何解决报错 TS-999?

  • 检索阶段(原方案):系统用TS-999生成向量,在向量库检索。由于这个错误码在文档中非常少见,embedding 与之最接近的结果反而是一些包含类似“错误代码”字眼的文章。最终返回的5段中,没有一段提及 TS-999,只有一篇《常见错误处理指南》稍有关联。
  • 生成阶段:GPT基于这些片段尝试作答,只给出一些通用的错误排查步骤,并未真正解决 TS-999 问题。用户当然不满意,认为Bot答非所问。

问题剖析:这里检索策略不当是罪魁祸首。向量检索在罕见关键字场景失灵了,没能召回真正相关的内容(其实知识库中有一篇专门的《TS-999 错误解决方案》文章,但因embedding差异未被检索到)。没有检索到正确材料,后面再强的GPT也是巧妇难为无米。

优化后:团队针对上述痛点引入了混合检索 + 重排序策略,并对 TS-999 这类特殊查询加入查询扩展。运维同事再次提问:“如何解决报错 TS-999?”

  • 检索阶段(优化方案):系统并行执行向量检索和关键词检索。关键词检索直接锁定包含“TS-999”的文档,很快找到了那篇《TS-999 错误解决方案》;向量检索仍返回一些一般性内容,但由于Rank融合策略,将包含精确TS-999的结果提升了优先级。然后对候选结果集启用跨编码器重排,模型判断《TS-999 错误解决方案》的相关性远高于其他片段,最终选取该文档的相关段落作为主要回答依据。
  • 生成阶段:GPT现在拿到了准确的参考段落,其中明确写着TS-999错误的原因和解决步骤。它据此给出了有针对性的回答:“错误 TS-999 表示许可证过期。解决方法:更新许可证密钥并重启服务。”。回答不仅正确还引用了内部指南的措辞。用户对结果非常满意。

效果对比:经过检索策略升级后,该Bot在内部评测中的回答准确率从原来的68%提升到了90%以上,提升显著。对于类似TS-999这样以前答不出的细节问题,现在Bot几乎都能对答如流。据团队统计,引入混合检索和重排序后,知识库文档的命中率(正确文档出现在Top5检索结果中)从70%左右提高到了95%。与此同时,由于过滤掉大量无关内容,平均每次回答的响应时间反而从5秒缩短到了3秒,大幅改善了用户体验。这个案例清楚地展示了:检索策略的优化如何让 RAG 系统脱胎换骨,真正发挥出“大模型 + 知识库”的威力。

落地清单与未来展望

通过以上分析,我们可以总结出一份检索策略优化的落地清单(Checklist):

  • 理解你的知识库和问答需求:梳理知识库的类型(文本为主?是否有结构化数据?)、规模和更新频率,分析用户提问特征(专业术语多不多?问句长短?模糊问句比例?)。这是制定检索策略的基础。
  • 确定文档切片粒度:选择合适的切片大小和重叠,保证每个切片既自包含核心信息又不会太长影响匹配。(例如:FAQ类短问答可整条为单位,长文档则按段/小节切片。)
  • 选择嵌入模型和索引:根据语言和领域选择表现好的Embedding模型,并评估向量维度、距离度量等参数。选型向量数据库或搜索引擎时,注意其对混合检索的支持程度。如果需关键词功能,优先考虑支持原生Hybrid查询的方案。
  • 实施混合检索策略:为索引同时配置向量检索和关键词检索。设计融合逻辑(可以先简单地按得分排序,后续逐步调优加权)。确保建立同义词表或关键术语词表,提高关键词检索覆盖面。
  • 考虑重排序组件:如果准确率要求高,部署一个轻量级重排序模型。先离线测试其效果增益,再决定用在在线哪些查询上(可以对长问句或低信心检索结果触发)。设置好候选集大小和最低分等参数以控制重排行为。
  • 提升召回的措施:针对容易遗漏的信息源,使用多向量表示(如标题和正文分别嵌入)。对常见模糊查询,预先设计查询扩展规则或模型。定期检查未答出的问题案例,分析是否需要增加新的扩展规则或embedding角度。
  • 性能优化与缓存:为常用查询和固定问答结果建立缓存机制(哪怕只是缓存检索结果,也能节省向量计算和IO)。同时利用元数据过滤减少不必要的搜索范围。在保证答案质量的前提下,不断压测和优化检索的延迟,争取毫秒必争。
  • 监控与迭代:上线后,搭建检索效果的监控指标体系,如检索召回率、文档命中率、回答准确率、平均响应时间等。出现指标异常及时排查(很多时候又是检索没抓到关键内容)。根据用户反馈和日志,持续调整同义词库、过滤规则乃至重新训练embedding模型,迭代优化。

以上清单可以帮助团队一步步完善检索环节,构筑起 RAG 应用的坚实地基。可以说,做好检索这一环,后面的生成就有了源源不断的“弹药”,成功率自然水涨船高。

最后,我们将目光放远一些,展望未来 Agent 时代检索策略的演进趋势。随着大模型朝着更加自主的Agent方向发展,未来的 AI 助手将不再被动等待检索结果,而可能主动地参与检索、驱动检索

  • Agent 主导的检索链路:正如微软提出的“Agenticsearch”,LLM Agent 可以基于对话上下文自行规划检索计划,拆分成多个子查询并行执行。这意味着未来检索不再是单轮的,而可能是多轮交互:Agent 先检索大概信息,如果不满意再自动追问细节,像一个真人分析师一样层层深入。这对检索策略提出了新的要求——需要支持Agent的实时决策、快速多轮查询和结果合并。
  • 知识融合的新形态:除了文本向量,Agent还可能调用知识图谱、数据库查询等多种工具检索。例如 Graph RAG 将图数据库引入,让检索不仅匹配文档,还能按照实体关系网找到关联信息。未来复杂问答可能需要混合多模态、多数据库的检索,策略上就要考虑如何让不同来源的信息协调发挥作用。
  • 内存型检索与模型融合:随着上下文长度的增加和新技术(如RMT、Retro、memorizingtransformer)的出现,检索与生成的界限可能模糊。模型也许能“记住”更多知识,在生成时少依赖外部实时检索;或者检索模块本身智能化,更好地理解模型需求。比如前文提到的Cache-Augmented Generation,本质就是用长时记忆缓存替代部分检索,将知识绑定在模型内部。未来我们可能会看到检索模块与模型深度融合的新架构,大模型可以动态决定何时查询外部、何时用内部记忆,打造更流畅高效的问答体验。

总而言之,万变不离其宗:无论技术如何演进,让对的信息在对的时间送达到模型面前始终是检索策略的核心使命。正如一句话所言:“Information is power”,而在 RAG 系统里,检索策略就是解锁信息力量的钥匙。希望这篇“检索策略观止”能帮助你拨开迷雾、抓住要领,在自己的大模型落地项目中少走弯路、脱颖而出。下次再有人抱怨RAG效果不佳时,你会知道去检查哪儿,并有信心调校出一个既全又准、既快又稳的检索方案。毕竟,掌握了检索这门艺术,就等于掌握了 RAG 成败的命门。

本文由 @Timothy 原创发布于人人都是产品经理。未经作者许可,禁止转载

题图来自Unsplash,基于CC0协议