尧图精选

【向量召回漏召回完整解决方案】

🕒 发布时间:2026/9/2 5:00:31 📁 来源:尧图网络
向量漏召回明明知识库存在正确 chunk但是向量相似度打分低没有被召回出来。 根源分几大类切分 Chunk 不合理、Embedding 模型不匹配、查询和文档语义错位、只依赖单路向量、召回参数设置保守、向量库索引问题。 下面分「调参数」「数据预处理」「查询侧优化」「架构层面兜底」面试可以直接拿来作答。一、检索参数调优最简单优先做1. 放大召回 top_k不要只召回 top‑3、top‑5向量检索阶段放大候选数量。 比如业务最终只要 5 条给 LLM向量召回取top_k40~50。向量库里正确的 chunk 可能相似度排 30 位你取 top10 就直接丢掉造成漏召。 多召回出来的噪声交给后面 RRF Rerank 精排过滤掉。⚠️注意top_k 不能无限大会增加检索耗时。2. 调整相似度阈值不要设置过高不要写死很高相似度阈值比如score0.85才返回。 不同查询、不同模型相似度分数分布波动很大。很多正确但是相关性中等的 chunk会被硬阈值直接过滤发生漏召回。 ✅实践向量召回阶段尽量不使用硬相似度阈值过滤靠后续 Rerank 做相关性过滤。二、知识库 Chunk 预处理问题非常高频漏召原因1. chunk 尺寸要合理不要过大 / 过小chunk 过大一段里面混杂多个主题整体向量被无关内容稀释。明明包含目标信息但整块向量跑偏相似度低。chunk 过小信息残缺语义不完整Embedding 生成质量差。✅中文通用经验500‑1000token重叠overlap100‑200token。overlap 重叠很关键避免一个语义被切在两个 chunk 缝隙导致两边都不完整两边向量都匹配不上。2. 丰富 Chunk 上下文给 chunk 增加 “标题、小标题、元信息”Embedding 是对整个 chunk 文本算向量。 原始片段事假每年最多5天向量化文本改成拼接标题【员工请假制度】事假每年最多5天很多原始切片只有零散内容缺少上下文embedding 理解不到场景就会漏召。把标题、章节名、文档类型拼接到 chunk 正文一起做 Embedding但是存入 BM25 的原始文本也要同步带上保证 chunk_id 一致。3. 避免把大段噪声特殊符号、乱码、无关页眉页脚带入向量化文本噪声会污染向量表示降低正确内容的相似度。预处理阶段清洗文本。三、查询侧优化Query 改写查询增强 Query Expansion用户输入的 query 很短、口语化、残缺生成的 query‑embedding 质量差直接漏召。 几种常用手段查询改写多 query 生成调用小 LLM把用户原始问题扩写成多个同义问句多路向量检索结果合并去重。用户输入事假能休几天LLM 生成改写 ①员工事假一年可以申请多少天 ②企业事假假期上限规定 拿 3‑5 个改写后的 query 全部做向量检索合并结果集。子问题拆分复杂长问句拆成多个子 query 分别召回合并候选。注意多路向量查询之后一定要基于 chunk_id 做去重避免重复候选膨胀。四、Embedding 模型层面优化选择适配业务领域的 Embedding 模型通用开源模型对行业专业文档效果差。比如医疗、金融、工业手册尽量用领域微调后的 embedding。通用模型对专业术语表征弱直接导致大量专业内容漏召回。不要混用两套不同 Embedding 模型文档入库用 modelA查询推理用 modelB向量空间不一致大规模漏召回属于低级错误。评估 Embedding 效果做召回评测集 构造一批【问题‑正确 chunk】测试对计算 Recall 召回率量化看漏召情况不要凭感觉调参。五、向量库索引层面IVF 类索引Milvus/Qdrant调整 nlist、nprobe 参数nprobe 代表检索时访问多少聚类中心。nprobe 设置过小搜索范围不够直接漏召回。现象测试环境用 FLAT 暴力搜索没问题上生产 IVF 索引就大量漏召绝大多数是 nprobe 太低。 ✅调优增大 nprobe换取召回率牺牲少量性能。数据量很小的时候直接用暴力搜索 FLAT 索引完全不会因为索引结构漏召。六、架构兜底引入多路召回最重要工程方案只靠单一向量检索无论怎么调都无法彻底消灭漏召回。这就是为什么要 BM25 向量混合检索向量漏召的专有名词、编号、短术语交给 BM25 关键词检索兜底捞回来。两路召回结果通过chunk_id去重RRF 粗融合再送入 Rerank 精排。向量漏召的文档如果文本包含关键词BM25 有很大概率可以把这份 chunk 捞回候选池。七、后置补偿Rerank 不能解决向量召回阶段漏召面试高频坑⚠️非常重要Rerank 精排救不了召回阶段的漏召回。如果正确的 chunk 在向量召回 TopK 阶段就没有进入候选集合Rerank 根本看不到这条数据再强的重排模型也无济于事。 Rerank 只能对已经捞出来的候选做排序不能凭空把知识库里面没召回出来的文档变出来。面试简答直接背向量漏召回指知识库存在目标文档但相似度较低未被召回。解决方案分为检索参数调优适当放大向量召回 top‑k避免设置过高硬相似度阈值把筛选压力后置交给 Rerank向量索引合理调大 nprobe扩大搜索范围。文档切片优化合理设置 chunk 大小与 overlap 重叠避免语义被切分拼接标题、元信息丰富 chunk 上下文清洗噪声文本。查询增强使用 LLM 做 query 改写、生成多条同义查询多路召回合并候选集。Embedding 模型选择业务适配的向量模型入库和查询使用同一套 Embedding通过测试集评估召回指标。架构兜底多路召回增加 BM25 关键词检索作为补充向量漏召的专有名词、术语由 BM25 捞取两路结果经过去重、RRF 融合再交给 Rerank 精排。注意Rerank 只能重排已有候选无法修复召回阶段已经丢失的 chunk。整体链路对应漏召回的位置知识库 → chunk切片 → embedding入库 ↓ 用户Query → Embedding → 向量召回【漏召回发生在这里正确文档直接没拿到】→ topK候选 → RRF → Rerank → LLM ↑ BM25关键词召回兜底捞向量漏掉的文档
上一篇/下一篇内容由系统自动关联 返回资讯列表 →