
文章摘要RAG检索并不是“上了向量数据库就结束”。BM25擅长精确词、编号和专有名词向量检索擅长语义改写和自然语言表达混合检索则试图结合两者优势。本文从召回机制、中文场景、成本、延迟、可解释性和企业数据特点出发对三种方案进行系统比较并给出按文档类型、查询类型和业务风险进行选型的方法。一、三种检索分别在解决什么问题BM25BM25属于关键词检索。它关注查询词是否出现在文档中 出现频率是多少 该词是否具有区分度 文档长度是否合理适合产品型号订单号条款编号API名称错误码专有名词精确短语。向量检索向量检索把查询和文档转换成Embedding在语义空间中寻找相似内容。它擅长表达不同 含义相近例如用户怎么申请出差 文档员工差旅审批流程关键词并不完全一致但语义接近。混合检索混合检索同时执行关键词召回 向量召回再通过融合算法或Reranker排序。二、BM25的优势与局限优势精确词匹配稳定对编号、代码和缩写友好结果容易解释不需要Embedding成本索引和查询技术成熟文档更新后无需重新生成向量。局限同义词和改写召回弱用户表达与文档术语不同时容易漏召回中文分词质量会影响结果长问题中无意义词可能干扰排序无法真正理解上下文语义。三、向量检索的优势与局限优势能处理自然语言问题对同义表达更友好适合问答、制度和说明文档可以跨语言或多模态检索对用户口语化输入更稳健。局限精确编号可能召回不稳定相似不等于答案相关Embedding模型更换需要重建索引成本和延迟更高分数不容易直接解释专业术语和罕见词可能表现不佳。四、一个典型例子知识库中有文档错误码E1007表示经销商账户已被冻结。查询一E1007是什么意思BM25通常非常强因为错误码完全匹配。查询二为什么这个经销商账号不能继续操作向量检索可能更有优势因为用户没有输入错误码。查询三E1007为什么导致经销商无法下单混合检索通常更合适BM25锁定E1007向量检索理解“无法下单”和“账户冻结”的关系。五、混合检索如何融合最常见方法是RRF即倒数排名融合。假设某文档BM25排名第2 向量排名第5RRF不直接比较两种不可比的分数而是根据排名计算score 1 / (k rank)组合后RRF总分 BM25排名贡献 向量排名贡献伪代码defrrf(rankings:list[list[str]],k:int60):scores:dict[str,float]{}forrankinginrankings:forrank,document_idinenumerate(ranking,start1):scores[document_id](scores.get(document_id,0.0)1.0/(krank))returnsorted(scores.items(),keylambdaitem:item[1],reverseTrue)RRF优点是简单稳定不需要手工归一化不同系统的分数。六、加权分数融合是否可靠另一种方法最终分数 0.4 × BM25分数 0.6 × 向量分数问题是两种分数的范围和分布可能完全不同。例如BM250—25 向量相似度0—1直接加权没有意义。必须先做Min-Max归一化Z-Score分位数映射基于训练数据学习融合权重。如果团队没有足够评测数据RRF通常比手工分数相加更稳妥。七、什么时候必须使用BM25以下查询不建议只依赖向量错误码SKU产品型号法规编号合同编号人名企业名称方法名类名API路径精确短语。例如POST /api/v2/order/cancelEmbedding可能把它与其他订单接口判为相似但用户需要精确接口。八、什么时候向量检索更重要以下场景向量检索价值更高用户口语化提问问题与文档术语不一致知识问答语义搜索长问题跨语言检索相似案例售前需求匹配。例如怎么判断经销商有没有真实动销文档标题可能是终端扫码与消费核销分析关键词重叠不高但语义相关。九、企业RAG为什么通常更适合混合检索企业数据往往同时包含自然语言 编号 专业词 产品名 版本号 表格字段单一检索很难覆盖。推荐链路用户查询 → 查询解析 → BM25召回Top20 → 向量召回Top20 → RRF合并Top30 → Metadata过滤 → Reranker Top10 → 上下文组装Top5十、查询路由比全量混合更节省成本并非每个查询都必须同时执行两种检索。可以先分类importre CODE_PATTERNre.compile(r\b[A-Z]{1,8}[-_]?\d{2,}\b)defchoose_retrieval(query:str)-str:ifCODE_PATTERN.search(query):returnHYBRIDiflen(query)8:returnHYBRIDreturnVECTOR更完整的路由规则查询策略明确编号BM25或混合精确词搜索BM25自然语言问题向量或混合混合编号和语义混合相似案例向量法规条款混合Metadata十一、中文检索要注意什么BM25依赖分词。中文场景应测试标准分词搜索分词自定义词典同义词产品词企业简称中英文混写数字与单位。例如一物一码 一品一码 单品码 五码关联如果词典不完整关键词召回会明显下降。向量模型也需要测试中文专业术语中英文混合长句否定表达数字条件。十二、如何评测三种策略准备真实查询集每条标注相关文档。指标Recall5 Recall10 MRR nDCG Answer-Bearing Recall P95延迟 单次成本同时比较BM25 Vector Hybrid-RRF Hybrid-Rerank不要只看几条演示问题。十三、常见错误1. 只用向量检索所有内容错误码和编号查询容易失效。2. 混合检索后不去重同一Chunk可能出现两次。3. 只融合分数不看排名分布不同分数不可直接比较。4. 没有Metadata过滤旧版本和其他租户内容会进入结果。5. Top K无限增加噪声和成本一起上升。十四、选型建议FAQ和自然语言知识库向量BM25混合代码、API和错误码BM25优先向量补充法规、制度和合同混合检索 版本过滤 Reranker相似案例推荐向量优先超低延迟精确搜索BM25优先总结BM25、向量检索和混合检索并不是替代关系。最稳妥的企业RAG架构通常是精确词交给BM25 语义表达交给向量 最终排序交给融合与Reranker选型必须基于真实查询集和答案证据评测而不是根据框架默认配置决定。