检索质量优化:Chunk、Metadata、Hybrid Search 与 Rerank

RAG 的第一道质量门槛是检索。如果候选证据错了,后面的 prompt 再精致,也只是让模型更有条理地犯错。

但“检索质量差”不是一个单一问题。它可能是 chunk 切分不适合问答,可能是 metadata 缺失导致适用条件混乱,可能是纯向量漏掉错误码,也可能是召回结果够多但排序不稳定。

这篇文章围绕四个最常见的优化点展开:chunk、metadata、hybrid search 和 rerank。重点不是列技术名词,而是判断它们分别解决什么问题、带来什么成本、什么时候值得做。

提出问题:检索为什么找不到正确证据

假设一个云服务控制台接入 RAG 助手,帮助企业客户排查部署和账单问题。

用户包括一线客服、解决方案工程师和客户管理员。问题来自在线聊天、工单和控制台侧边栏,常见输入包括:

  • “为什么我这个 VPC 不能绑定公网网关?”
  • “API 返回 InvalidSignature 怎么处理?”
  • “私有化 2.8 版本支持这个审计配置吗?”
  • “上个月账单里对象存储流量费为什么突然升高?”

知识来源包括产品文档、FAQ、发布说明、错误码手册、历史工单、内部 SOP 和计费规则。期望输出是排查步骤、适用条件、引用来源和下一步动作。

这里的失败样本很典型:

  • 用户问错误码,纯向量检索找到了语义相近的认证文档,却没有命中错误码手册。
  • 用户问私有化版本,检索到了公有云最新文档,答案不适用。
  • 文档里一个表格跨多行说明套餐限制,chunk 切分后丢了表头。
  • top-10 里有正确片段,但排在第 8 位,没有进入最终上下文。

分析问题:召回、条件和排序要分开看

检索质量优化主要处理检索和排序问题,但也牵涉抽取、分类和判断。

问题类型示例适合模型处理应由系统处理
查询理解把“签名报错”改写成 InvalidSignature、鉴权、时间偏移查询改写、同义词扩展保留原始关键词和用户约束
文档切分FAQ、表格、步骤、代码块如何成为可检索单元判断语义边界的辅助切分解析、chunk ID、标题层级、版本
条件过滤私有化、版本 2.8、企业版套餐从问题中抽取条件metadata schema、权限过滤
多路召回错误码精确匹配 + 语义相似生成多个查询变体BM25、向量、融合策略
相关性排序top-50 候选里选最适合回答的 5 个rerank 候选分数阈值、去重、超时降级

模型可以帮助理解用户语言,但检索系统必须保留可解释、可回放的中间结果。否则线上出错时,团队只会看到一个错误答案,却不知道是召回、过滤、排序还是上下文组装出了问题。

收益/成本判断

检索优化的收益包括:

  • 提高答案覆盖率,减少“知识库有但找不到”。
  • 降低相似但不适用内容进入上下文的概率。
  • 减少模型根据错误证据生成错误答案。
  • 让不同问题类型使用不同检索策略。
  • 为后续 RAG Eval 提供可定位的质量指标。

成本包括:

  • 文档解析和 chunk 规则维护。
  • metadata schema、标注和同步成本。
  • 多路检索、rerank 带来的延迟和费用。
  • 检索参数、阈值、融合权重的评估和回归测试。
  • 索引重建、版本迁移和灰度发布成本。

什么时候简单关键词足够?

如果问题包含明确实体、错误码、订单号、API 名、文档标题,且用户愿意点开原文自己判断,关键词搜索通常足够。它可解释、便宜、容易排查,尤其适合专业用户。

什么时候简单向量足够?

如果知识库规模不大、文档条件差异少、问题主要是概念解释和流程问答,单路向量检索可以起步。比如内部 HR 政策问答、培训资料问答、低风险操作指南。

什么时候需要工程优化?

一旦出现精确词和自然语言混合、版本/套餐/权限决定答案、相似文档很多、top-k 波动明显、答案需要对外使用,就应该升级到 chunk、metadata、hybrid 和 rerank 的组合优化。

列举方案:从文档处理到 Rerank

检索优化要先让文档变成可检索、可引用、可过滤的证据单元,再选择关键词、向量、hybrid search 或 rerank。下面四类方案分别对应不同失败根因。

Chunk:让片段成为可回答单元

Chunk 的目标不是把文档平均切小,而是让每个片段既能被检索命中,又足够支撑一个回答。

切得太小,片段可能只有一句话,缺少标题、条件和上下文。模型看到“支持该配置”却不知道“该配置”是什么。

切得太大,向量会混合多个主题,召回时看起来相关,实际包含大量噪声。上下文预算也会被浪费。

更稳妥的做法是按文档结构切分:

  • 标题层级:保留一级、二级、三级标题作为片段前缀。
  • FAQ:问题和答案不要切开。
  • 操作步骤:一组连续步骤尽量保留在同一片段。
  • 表格:保留表头、行名和单位,必要时转成可读文本。
  • 代码和错误码:保留代码块、错误码、参数名和解释。
  • 版本说明:版本号、发布日期、适用范围不能和正文分离。

收益:提高召回可用性,减少“找到了但片段没法回答”。

成本:需要文档解析、特殊格式处理、索引重建和样本验证。对 PDF、表格、截图和代码文档尤其要投入额外处理。

Metadata:让业务条件进入检索

很多 RAG 错误不是主题错,而是条件错。

用户问的是“私有化 2.8”,检索到“公有云 3.1”;用户问的是“企业版套餐”,检索到“旗舰版”;用户是普通客服,却检索到了内部定价策略。

这些问题不能只靠向量相似度解决。需要把业务条件变成 metadata。

常见 metadata 包括:

Metadata用途示例
产品线限定业务范围CRM、IM、对象存储
版本区分新旧能力2.8、3.1、2026-04
部署形态公有云、私有化、混合云private、public
地区法规、功能和计费差异CN、US、EU
套餐功能可用性free、pro、enterprise
来源类型权威程度官方文档、SOP、历史工单
更新时间处理过期资料2026-05-01
权限等级控制可见范围public、internal、restricted

metadata 的收益是让检索更符合业务语境,降低“找错”。

成本是 schema 设计和数据治理。metadata 如果缺失、错误或不一致,会制造新的误判。最好先选择真正影响答案的 3 到 5 个字段,而不是一次性设计几十个字段。

Hybrid Search:让精确匹配和语义召回互补

关键词和向量各有盲区。

关键词擅长错误码、接口名、产品名、政策编号、专有名词。它的问题是同义表达和自然语言召回弱。

向量擅长语义相似和表达变化。它的问题是精确 token 可能被稀释,业务条件可能被忽略,相似主题容易混淆。

Hybrid search 把两者组合起来,常见做法是:

  • 同时跑 BM25/关键词和向量检索。
  • 对结果去重。
  • 按分数归一化或 rank fusion 融合。
  • 再用 metadata 过滤和 rerank。

收益:减少单一路径漏召回,尤其适合“错误码 + 自然语言描述”的问题。

成本:参数更多、评估更复杂、延迟更高。需要明确融合策略,否则只是把两路噪声混在一起。

Rerank:在候选里选真正可回答的证据

召回阶段通常追求“别漏掉”,rerank 阶段追求“排对顺序”。

当 top-50 里有正确答案,但 top-5 经常不稳定时,rerank 很有价值。它可以用 cross-encoder、轻量模型、大模型评分或规则特征,把候选和查询放在一起判断相关性。

rerank 特别适合:

  • 相似文档很多。
  • 文档标题相似但适用条件不同。
  • 查询较长,包含多个约束。
  • 需要把历史工单和正式文档区分权威性。
  • 向量 top-k 里正确片段排名靠后。

收益:提高进入上下文的证据质量,减少“找到了没用上”。

成本:额外模型调用、延迟和费用;还需要处理超时、分数阈值和候选数量。rerank 不能弥补召回阶段完全没找到正确资料的问题。

方案阶梯

检索优化可以按下面顺序推进:

  1. 建立基线:记录用户 query、召回结果、答案和反馈。
  2. 优化 chunk:让片段可检索、可阅读、可引用。
  3. 补关键 metadata:先补影响答案的字段。
  4. 引入 hybrid:解决精确词和语义表达混合的问题。
  5. 引入 rerank:解决候选多但排序不稳的问题。
  6. 加阈值和拒答:资料不足时不强答。
  7. 用 Eval 回归:每次改索引、参数、模型都跑评估集。

不要跳过基线。没有基线时,团队很容易把一次主观体验变好误认为整体质量提升。

决策判断:什么时候升级检索链路

场景条件推荐方案不推荐方案判断理由额外成本
文档结构清晰、问题接近标题关键词搜索 + 标题权重复杂 rerank可解释,成本低搜索配置
自然语言问法多、同义词多向量检索 + 查询改写只靠关键词语义召回更稳embedding 和索引
FAQ、表格、步骤经常被切断结构化 chunk调大 top-k根因是片段不可用,不是候选不够解析和重建索引
版本、套餐、地区影响答案metadata 过滤只靠向量相似度业务条件需要显式约束schema 和标注
错误码和自然语言混合hybrid search纯向量或纯关键词两种信号互补融合策略和评估
候选里有正确片段但排名靠后rerank继续扩大上下文排序问题会被更多噪声放大模型费用和延迟
高风险答案需要稳定证据hybrid + metadata + rerank + 引用校验单路检索需要召回、适用性和证据质量全链路评估和监控

反模式

第一种反模式:用固定长度切所有文档。

固定 500 字或 1000 token 可以作为起点,但不能处理 FAQ、表格、代码、版本说明和多级标题。切分规则应该服务可回答性。

第二种反模式:metadata 越多越好。

字段多但不准,会让过滤结果更差。先找出真正影响答案的条件,再逐步扩展。

第三种反模式:hybrid 只是两路结果拼接。

没有去重、融合、权重和评估,hybrid 可能只是把关键词噪声和向量噪声一起带进上下文。

第四种反模式:用 rerank 掩盖召回不足。

rerank 只能重排候选,不能凭空找回没有召回的文档。如果正确片段不在候选集里,问题在 query、chunk、索引或召回策略。

第五种反模式:只用线上感觉调参数。

检索参数对不同问题类型影响不同。一个参数让 FAQ 变好,可能让错误码变差。必须用分类型评估集回归。

结论收束:检索上线前工程清单

  • 场景边界:核心问题类型是否分成错误码、概念解释、操作步骤、政策规则和历史案例。
  • 文档解析:标题、表格、代码、图片文字、FAQ、版本说明是否正确抽取。
  • Chunk 设计:片段是否包含足够标题、条件、来源和可回答内容。
  • Metadata:字段是否少而准,是否能从问题中抽取或由系统上下文提供。
  • 权限过滤:metadata 过滤是否在检索和上下文组装前完成。
  • 检索组合:关键词、向量、hybrid 和 rerank 是否按问题类型路由。
  • 阈值策略:低相关性、候选冲突、资料不足时是否追问或拒答。
  • 可观测性:是否记录每路召回、融合分数、rerank 分数和进入上下文的片段。
  • 评估集:是否覆盖找不到、找错、条件不适用、排名靠后和精确词问题。
  • 成本延迟:rerank 候选数量、超时、缓存和降级路径是否明确。

小结

检索质量优化的关键是先定位失败类型。

chunk 解决片段不可用,metadata 解决业务条件不适用,hybrid search 解决精确匹配和语义召回的互补,rerank 解决候选排序不稳。它们不是越多越好,而是分别对应不同瓶颈。

知识库小、问题清晰、失败代价低时,关键词或简单向量就够。知识库大、条件复杂、答案要被业务使用时,检索必须进入工程化优化和评估闭环。