【小目标】
这一节点回答:怎么从大知识源里捞出和问题相关的片段? 也就是检索的方法光谱——从传统关键词到现代向量检索,各有什么特点、什么时候用什么、怎么组合。
这里最关键的一句判断:检索不是"哪个方法先进就用哪个",而是"哪个对业务场景有效就用哪个"。 方法本身没有高低之分,以业务评测为准(Recall@K / NDCG),别只看哪一个"看起来先进"。
【方法论】
一句话结论:检索是一条从"字面精确"到"语义模糊"的光谱,按底层表示可分为稀疏检索(关键词/BM25)和稠密检索(向量)两大类,主流方法共四种,绝大多数场景用混合检索(向量 + 关键词)效果最好。
检索方法光谱(从传统到现代)
① 关键词检索(BM25)—— 按词项统计相关性排名,吃精确术语/编号很准
② 向量检索 —— 语义相似排序,处理同义改写/口语
③ 混合检索(Hybrid)—— 向量 + 关键词双路取并集再融合,绝大多数 RAG 的默认
④ 图检索 / 子图 —— 沿图谱边递归取相邻节点,多跳关系用它
四种方法逐个讲:
① 关键词检索(BM25 / 稀疏检索)—— "字面匹配"
- 按词项在文档中的统计相关性排名(词频 + 逆文档频率)
- 吃精确术语/编号很准——产品型号、订单号、SKU、专有名词这种"就叫这个名"的东西,关键词检索比向量还准
- 优点:快、便宜、可解释性强(知道命中了哪个词)
- 缺点:对同义改写/口语/错别字无能为力——用户说"充电快",库里是"快充",它就对不上
② 向量检索(语义检索 / 稠密检索)—— "语义匹配"
- 把 query 和文档都映射成向量,按相似度排序
- 处理同义改写/口语很强——用户换个说法也能命中
- 优点:对自然语言友好、不依赖关键词匹配
- 缺点:对精确术语/编号可能不如关键词准;相似度分数的可解释性差
③ 混合检索(Hybrid Search)—— "两条腿走路"
- 向量 + 关键词双路取并集,然后用融合算法(如 RRF 倒数秩融合)合并排序
- 绝大多数 RAG 的默认配置——取长补短,效果通常比单一方法好
- 为什么有效:关键词补"精确命中等",向量补"语义相似等",二者覆盖的错误模式不一样,混在一起就更全面
- 影响质量的关键:
- 融合权重:向量和关键词各占多少比重,需要在你的数据上调
- 重排(Rerank):用更强的模型对初筛候选精排,把真正有用的提到最前。这是检索的"第二段",通常能显著提升效果
- 元数据过滤:先按来源/类型/时间等元数据缩小候选范围,再做语义检索。相当于"先筛再排"
- 查询理解:改写/拆解 query(如把长问题拆成多个检索点),提升召回质量
④ 图检索 / 图增强检索(Graph Retrieval / GraphRAG)—— "沿关系找"
- 沿知识图谱的边递归取相邻节点,多跳关系和全局综合类问题用它
- GraphRAG:在 RAG 基础上引入知识图谱/图检索,先把文档抽成图谱,再沿图谱关系召回——适合"跨多段综合""多跳关系"类问题
- 适合:"张三的同事是谁""A 产品的同系列还有哪些""整份报告的核心主题有哪些"这类需要沿关系推或全局归纳的问题
- 需要知识图谱作为基础(可以从文档自动抽取构建),构建/维护成本高于纯向量 RAG
评测指标(怎么判断检索好不好):
- Recall@K:前 K 条结果里,命中了多少个真正相关的——"捞得全不全"
- NDCG@K:不仅看有没有命中,还看命中的排在哪——"排得好不好"
- 铁律:方法有没有用以业务评测为准,别只看哪一个"看起来先进"。在你的数据集上测出来的才是真的。
【知识点】
- 四大检索方法:关键词(BM25)、向量、混合、图检索。各有所长,按需选用。
- 关键词检索吃精确术语很准:型号、编号、SKU 这类"就叫这个名"的东西,关键词可能比向量还准。
- 向量检索吃口语/同义改写很强:用户换说法也能命中,但对精确术语可能不如关键词。
- 混合检索是默认配置:向量 + 关键词双路融合,取长补短,绝大多数场景效果最好。
- 重排是检索的"第二段":初筛 + 精排两段式,通常能显著提升效果。
- 检索好不好,用业务数据说话:Recall@K 和 NDCG@K 是硬指标,别凭感觉。
- F2.6 讲原理,F3.4 讲工程:本节点讲"为什么能检索、各方法边界",工程上怎么把 RAG 搭出来见阶段③第四章。
【名词卡】
| 名词 | 一句话解释 |
|---|---|
| BM25 / 关键词检索 / 稀疏检索 | 按词项在文档中的统计相关性排名的经典检索方法,吃精确术语/编号很准 |
| Semantic Search / 语义检索 / 向量检索 | 靠语义相似而非字面关键词检索;处理同义改写/口语 |
| Hybrid Search / 混合检索 | 向量 + 关键词双路取并集再融合的检索,绝大多数 RAG 的默认 |
| Rerank / 重排 | 用更强模型对初筛候选精排、把真正有用的提到最前(检索的两段式第二段) |
| Graph Retrieval / 图检索 | 沿图谱边递归取相邻节点的检索,多跳关系用它 |
| Recall@K | 前 K 条命中率——"捞得全不全",检索质量的核心离线指标 |
| NDCG@K | 排序质量评分——不仅看有没有,还看排得好不好 |
| RRF / Reciprocal Rank Fusion / 倒数秩融合 | 混合检索中常用的融合算法,把多个排序结果合并 |
| Metadata Filtering / 元数据过滤 | 先按来源/类型/时间等元数据缩小候选范围,再做语义检索——"先筛再排" |
| Query Understanding / 查询理解 | 改写/拆解 query 以提升召回质量的前置处理 |
易混对比:
- 关键词检索 vs 向量检索:字面精确 vs 语义近似,常拼成混合检索
- 检索 vs 重排:检索是"初筛捞一批",重排是"精排提顺序"
- Recall@K vs NDCG@K:前者看"全不全",后者还看"排得好不好"
【练一练】
目标:亲手感受不同检索方法的差异——拿同一个问题,分别用关键词和向量思路去"捞",看各自命中什么。
实验:假设有一个手机导购知识库,里面有 6 条知识:
| ID | 知识内容 |
|---|---|
| D1 | 华为 P60 搭载骁龙 8+ 处理器,配备 5000 万像素主摄,支持 66W 快充 |
| D2 | iPhone 15 采用 A16 仿生芯片,配备 4800 万像素主摄,电池容量 3349mAh |
| D3 | 小米 13 搭载骁龙 8 Gen2 处理器,支持 67W 有线快充,配备 5400 万像素主摄 |
| D4 | OPPO Find X6 Pro 搭载天玑 9200 芯片,支持 100W 超级闪充,配备 5000 万像素三摄 |
| D5 | vivo X90 搭载天玑 9200 处理器,支持 120W 双芯闪充,配备 5000 万像素主摄 |
| D6 | 三星 Galaxy S23 搭载骁龙 8 Gen2 处理器,配备 5000 万像素主摄,支持 25W 快充 |
问题:"充电最快的手机是哪款?"
请你模拟两种检索方式:
A 组(关键词检索):
- 找出问题里的关键词:"充电"、"最快"、"手机"
- 在 6 条知识里找包含这些关键词的条目——哪些命中了?
- 注意:"闪充"算不算"充电"?"快充"算不算?关键词检索能识别同义吗?
B 组(向量检索,凭你的语义直觉判断):
- 凭你的语义直觉,哪 3 条知识和"充电最快"最相关?按相关度排序
- 和 A 组的结果一样吗?有哪些是向量能命中但关键词命不中的?
对照思路(做完再看):
- 关键词检索会命中 D1(快充)、D3(快充)、D6(快充)——但 D4(超级闪充)和 D5(双芯闪充)可能因为没有"充电"这个词而漏掉
- 向量检索会把 D4、D5(闪充功率最高的)排在前面,因为"闪充"和"充电"语义相近
- 这就是混合检索的价值——关键词补"快充/充电"精确命中的,向量补"闪充"语义相似的
思考题:如果用户问的是"120W 充电的手机"(精确数值),哪种检索更准?为什么?