ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

26.混合检索是什么关键词检索与向量检索如何结合

26.混合检索是什么关键词检索与向量检索如何结合 混合检索是什么关键词检索与向量检索如何结合码海寻道 · 大模型、智能体与 RAG 工程组件系列第 26 篇向量检索擅长理解语义但可能忽略精确的产品型号、合同编号、错误码和专有名词关键词检索擅长精确匹配却不一定理解同义表达。混合检索的目标是同时利用两种能力。混合检索通常不是把两个分数直接相加。不同检索器的分数范围、排序方向和候选数量可能完全不同必须先做候选去重、分数归一化或使用排名融合再交给 Reranker。一、两种检索各自擅长什么稠密向量检索把问题和文档转换为稠密向量根据语义距离查找相关内容。适合同义改写自然语言问题概念和主题关联用户表达不规范的场景。稀疏或关键词检索根据词项、频率和倒排索引匹配文本。适合产品型号API 名称和错误码人名、组织名、合同编号必须出现的精确词。二、为什么单一检索会失败用户问“错误码PG-23505如何处理”关键词检索很容易定位包含该错误码的文档而纯语义检索可能认为“数据库唯一约束冲突”与问题相关却漏掉精确的错误码页面。反过来用户问“员工出差住酒店超标怎么办”如果文档写的是“住宿费用超出标准的处理流程”关键词可能匹配不稳定而向量检索更容易理解语义关系。三、混合检索的基本流程用户问题 ├── 稠密 Embedding → 向量检索 → 候选 A └── 关键词 / BM25 → 倒排检索 → 候选 B ↓ 合并、去重、归一化 ↓ RRF 或加权重排 ↓ Top K 结果四、RRF 是什么不同检索器的分数通常不可直接比较。余弦相似度、BM25 分数和内积的数值范围可能不同直接相加容易让某一路结果天然占优。RRFReciprocal Rank Fusion可以按排名合并RRF(d) Σ 1 / (k rank_i(d))其中rank_i(d)是文档在第 i 个检索结果中的名次k是平滑常数。RRF 不要求不同检索器的分数处于同一尺度工程上较容易使用。工程上要保存每个候选来自哪些召回通道便于解释“为什么命中”也便于分析某个通道是否长期带来噪声。五、Milvus 中的混合检索思路Milvus 支持在同一集合中保存稠密和稀疏向量并通过混合搜索合并结果。伪代码如下dense_requestAnnSearchRequest([dense_query],dense_vector,{metric_type:COSINE},limit20)sparse_requestAnnSearchRequest([sparse_query],sparse_vector,{metric_type:IP},limit20)resultsclient.hybrid_search(collection_nameknowledge_chunks,reqs[dense_request,sparse_request],rankerRRFRanker(),limit10,)具体方法名和参数随 SDK 版本可能不同正式实现应参考目标版本文档。混合检索并不是“加两个字段”就完成还需要同时维护两种向量的生成和版本。两路召回还应使用相同的租户、权限和文档版本边界合并时按稳定的chunk_id去重并记录各通道命中数、融合后命中数和最终排名。六、如何选择权重如果使用加权融合可以根据查询类型动态调整包含错误码、型号、编号 → 提高关键词权重 自然语言解释型问题 → 提高语义权重 无法判断查询类型 → 使用 RRF 或默认权重权重不要凭感觉长期固定。应准备包含精确术语和自然语言问题的评测集比较 RecallK、MRR、答案引用正确率和延迟。七、混合检索不等于最终答案混合检索得到的是候选集合还可能需要按租户和权限过滤按文档版本过滤按document_id去重使用 Reranker 对候选重新排序控制送入大模型的上下文数量。稠密 稀疏候选 ↓ 融合与去重 ↓ Reranker ↓ 上下文压缩 ↓ 大模型回答八、什么时候不需要混合检索如果语料主题单一、用户问题简单、关键词检索效果已经足够额外引入稀疏向量会增加模型调用、索引和运维成本。不要为了“架构完整”而强行使用混合检索。九、上线时需要注意什么稠密和稀疏向量必须对应同一 Chunk两种索引的更新和删除要保持一致记录各路召回数量和合并后的数量监控关键词检索和语义检索的空结果率对编号、金额和日期等字段增加规则校验注意混合检索会增加查询延迟和内存占用。结语混合检索的价值在于互补向量检索理解“意思相近”关键词检索守住“词必须准确”。二者合并后再通过去重、重排和评测才能形成适合企业知识库的检索链路。下一篇将继续优化召回质量从查询改写、召回数量和 Reranker 讲起。参考资料Milvus 官方文档Hybrid SearchMilvus 官方文档Sparse VectorMilvus 官方文档Full Text SearchPostgreSQL 官方文档Full Text Search本文为“码海寻道”原创技术文章。混合检索 API 和索引能力会随版本变化请使用目标版本 SDK 实测。
返回列表