AI Agent 面试官又来拷打我了:“为什么不用纯向量检索“,我愣了三秒
2026/6/27 4:56:57 网站建设 项目流程

Alex:上次聊了分块,今天聊检索。你们 RAG 系统,检索这块怎么做的?

小七:向量检索,用的 Milvus,Embedding 模型是 bge-large-zh-v1.5。

Alex:就纯向量检索?

小七:对。

Alex:为什么不加 BM25?

小七愣了一下。

小七:BM25……就是传统的关键词检索?我们觉得向量检索语义理解更好,BM25 太老了。

Alex:太老了,所以不用?

小七:嗯……主要是觉得向量检索已经够用了。

Alex:我给你一个场景:用户搜"RFC 7231",你们的系统会返回什么?

小七想了想。

小七:会返回和 HTTP 协议语义相关的文档……

Alex:那篇明确写了"RFC 7231"的文档,排第几?

小七沉默了几秒。

小七:不一定排第一。向量检索看的是语义空间的距离,"RFC 7231"这个字符串本身不一定和它的 Embedding 最近。

Alex:对。这就是纯向量检索的第一个问题。


📌知识锚点 · 纯向量检索的三个致命问题

    1. 精确匹配差:专有名词、编号、代码片段(如RFC 7231GPT-4oerror_code: 4029)在语义空间里"找不到自己"。
    1. 专业术语召回低:领域术语(如医学、法律、金融)的 Embedding 可能和通用语义偏差大。
    1. 新词/生僻词丢失:模型训练时没见过的词,Embedding 质量差,检索直接失效。

BM25 不是"老技术",是互补技术:它做的是字面匹配,向量检索做的是语义匹配,两者覆盖的是不同的失败场景。


第二幕:BM25 怎么工作?

Alex 没有停,继续往下推。

Alex:BM25 的原理,说一下。

小七:BM25 是基于词频的检索算法,一个词在文档里出现越多、在整个语料库里越稀有,得分越高。比 TF-IDF 多了文档长度归一化。

Alex:公式能写出来吗?

小七:大概是……

其中 是词在文档里的词频,是文档长度,是平均文档长度,和是超参数,通常,。

Alex:和 分别控制什么?

小七:控制词频饱和度—— 越大,词频对得分的影响越大,但会有边际递减; 控制文档长度归一化的程度, 完全归一化, 不归一化。

Alex:好。那 BM25 有什么做不到的?

小七:同义词。用户搜"汽车",文档里写的是"轿车",BM25 完全匹配不上。向量检索能处理这种语义等价的情况。

Alex:所以两个要一起用。

小七:对,混合检索。


📌知识锚点 · BM25 vs 向量检索

维度BM25向量检索
原理词频 + 逆文档频率语义空间距离
擅长精确匹配、专有名词、编号同义词、语义理解、模糊查询
失败场景同义词、语义等价表达精确字符串、新词、生僻词
计算成本低(倒排索引)高(ANN 近似最近邻)

结论:两者是互补关系,不是替代关系。生产环境混合检索是标配。


第三幕:两路结果怎么合并?

Alex 拿起笔,在纸上画了两列。

Alex:向量检索返回一个排序列表,BM25 返回一个排序列表,怎么合成一个最终结果?

小七:加权融合?把两路的分数乘以权重加起来,按总分排序。

Alex:权重怎么定?

小七:嗯……可以调参,或者根据查询类型动态调整——精确查询多给 BM25 权重,语义查询多给向量权重。

Alex:加权融合有什么问题?

小七想了想。

小七:两路的分数量纲不一样。向量检索返回的是余弦相似度,范围 0 到 1;BM25 返回的是一个没有上界的分数,直接加权不合理。

Alex:对。所以生产上更常用什么?

小七:RRF——Reciprocal Rank Fusion,倒数排名融合。不看分数,只看排名。

Alex:公式?

小七:每个文档的 RRF 得分是它在各路结果里排名的倒数之和:

def rrf_merge(vector_results, bm25_results, k=60): scores = {} for rank, doc in enumerate(vector_results): scores[doc.id] = scores.get(doc.id, 0) + 1 / (k + rank + 1) for rank, doc in enumerate(bm25_results): scores[doc.id] = scores.get(doc.id, 0) + 1 / (k + rank + 1) return sorted(scores.items(), key=lambda x: x[1], reverse=True)

通常设 60,是个平滑参数,防止排名第一的文档得分过高。

Alex:RRF 的优势是什么?

小七:不需要对两路分数做归一化,也不需要学习权重,鲁棒性更好。两路结果都排前面的文档,最终得分最高。

Alex:效果怎么样?

小七:混合检索相比纯向量检索,召回准确率能提升 1%-9%,具体看场景。

Alex:你们上了混合检索吗?

小七:没有……我们还是纯向量。

Alex:为什么?

小七:当时评估觉得够用,没有专门做过对比实验。

Alex:你们怎么判断"够用"的?

小七停顿了一下,意识到这个问题没有好答案。

小七:主要是用户反馈,没有系统的评估指标。

Alex:嗯。


📌知识锚点 · 两路结果合并:加权 vs RRF

方案原理优势劣势
加权融合分数 × 权重求和直觉简单量纲不统一,权重难调
RRF排名倒数求和无需归一化,无需学习权重,鲁棒忽略分数差距信息

RRF 参数 k=60:平滑参数,防止第一名得分过高。实践中 k 在 20-100 之间效果差异不大,60 是经验默认值。

混合检索效果:相比纯向量检索,召回准确率提升 1%-9%(arXiv:2410.20381)。提升幅度取决于知识库中精确匹配需求的比例。


第四幕:Rerank,值得加吗?

Alex 看了看时间,还有十分钟。

Alex:混合检索之后,你会加 Rerank 吗?

小七:会。混合检索拿到 Top-20 候选,再用 Cross-Encoder 精排,取 Top-5 给 LLM。

Alex:为什么检索阶段不直接用 Cross-Encoder?

小七:Cross-Encoder 要把 query 和每个文档拼在一起过一遍模型,计算量是 O(n),百万级文档根本跑不完。Bi-Encoder 是 query 和文档分别编码,可以提前把文档向量存好,检索时只算 query 的向量,再做 ANN 近似最近邻,速度快几个数量级。

Alex:Cross-Encoder 为什么精度更高?

小七:Bi-Encoder 是独立编码,query 和文档之间没有 token 级别的交互。Cross-Encoder 把两者拼在一起,模型能看到 query 里每个词和文档里每个词的关系,精度更高,但慢。

Alex:Rerank 的效果数据,有印象吗?

小七:加了 Rerank 之后,Top-5 召回率能从 71% 提升到 89%,Top-3 准确率从 65% 提升到 84%——这是某个测试场景下的数据,不同场景会有差异。

Alex:什么情况下可以不加 Rerank?

小七:检索数量很少,比如只检索 3-5 个文档,而且索引质量已经很高的情况下,Rerank 的收益有限,可以省掉这一步降低延迟。

Alex:Rerank 的延迟大概多少?

小七:取决于候选集大小和模型大小。Top-20 候选用 bge-reranker-v2-m3,大概 50-200ms,具体要看部署环境。

Alex:好,今天就到这里。


📌知识锚点 · 双阶段检索架构

查询 ↓[粗筛] 向量检索 + BM25 → Top-20~50 候选(毫秒级) ↓[精排] Cross-Encoder Rerank → Top-3~5(50-200ms) ↓LLM 生成
阶段模型类型速度精度处理量
粗筛Bi-Encoder近似百万级
精排Cross-Encoder慢(约慢100倍)精确Top-20~50

常用 Rerank 模型

  • bge-reranker-v2-m3:中文效果好,开源可本地部署
  • bce-reranker-base_v1:中文场景轻量级
  • • Cohere Rerank:API 调用,英文效果好

加了 Rerank 的效果:Top-5 召回率 71% → 89%,Top-3 准确率 65% → 84%(特定测试场景)。


面试结果

走出会议室,小七看了眼手机——面试整整一小时。

第二天,HR 发来消息:“两轮技术面都通过了,下周 Offer 沟通。”

小七在备忘录里写下一行字:回去把 BM25 加上,做个 A/B 测试。

💬小七的复盘

“今天最大的教训:'够用’不是一个答案,‘我们没有系统评估过’才是真相。Alex 问’你们怎么判断够用的’,我答不上来——不是因为不懂技术,是因为我们从来没有认真量化过检索质量。下次面试,这个坑我不会再踩。”

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询