这一页先看完整路径。下表按问题列出各篇。
| 现在想弄懂什么 | 从哪里看 | 读完先能解释什么 |
|---|---|---|
| 为什么命中了关键词,却排不对? | TF-IDF 与 BM25 | 重复词与文档长度怎样影响打分 |
| 文本怎样变成可检索(retrieval)的向量? | 双塔检索 | 什么能提前算,正负例怎样参与训练 |
| 选 Qwen3 Embedding 还是 BGE-M3? | 具体模型对比 | 输入、pooling 与索引为什么得配套 |
| 向量太多,怎样找得快又不漏太多? | 向量索引 | IVF、PQ、HNSW 各拿什么换速度和内存,ANN recall 为什么不是业务 recall |
| 几路结果怎么合在一起? | 混合检索与重排 | 怎样融合,怎样在相同预算下比较 |
| 找到了文档,为什么还是答错? | RAG 的证据 | 分块、检索指标和生成各自会在哪里出错 |
每篇先给直觉和小例子,再展开计算与实现。只想了解机制,可以先停在那里;准备动手时,再接后面的代码和排错。
不只是“找几段相似的文字”
这里说的搜索,不只是从数据库里找相似内容。模型还得判断:该找什么、去哪里找、找到的资料够不够,以及什么时候可以停下来回答。
从一个模型答不了的问题开始
用户说:“把我上次提到的那篇关于 Agent memory 的论文找出来。”
系统可能需要:
- 理解“上次”对应哪段历史;
- 判断用户记得的是标题、作者还是主题;
- 搜索个人对话、笔记和公开论文库;
- 分清几个相似结果,确认哪篇才是用户说的那篇;
- 如果证据还不够,先向用户追问。
这时只做一次最近邻检索(nearest-neighbor lookup)还不够:系统得先判断去哪找,找到以后再核对。
一次搜索通常怎么走
flowchart TB
query["找上次提到的 Agent memory 论文"] --> history["在有权限的对话记录里搜索"]
history --> matches["找到两条提到论文的消息"]
matches --> check["核对日期、标题和原始链接"]
check --> found["能确认:返回论文与那条消息"]
check --> unclear["仍有歧义:询问大概是哪次对话"]
unclear -. "补充时间范围" .-> history
这些环节都可能出问题。相关内容没召回,后面的模型就缺少依据;排序不合适,无关内容可能干扰回答;上下文塞得太满,关键信息又容易被忽略。
为什么一个向量经常不够
双塔(dual-encoder)检索通常把查询和候选(candidate)内容分别编码成一个向量,再比较相似度。这样适合在大量内容中快速找候选,但在固定维度和相似度函数下,表示未必保留了任务需要的全部差异。这是要验证的问题,不是“单向量一定不行”的结论。
例如“适合带父母去、自然风景多、不要太累的意大利路线”同时包含多个条件。一个向量可能更强调“意大利旅行”,却弱化“父母”和“不要太累”。
常见改进包括:
- 用多个向量保留不同意图或侧重点;
- 用延迟交互(late interaction)保留 token 之间的细粒度匹配;
- 将用户资料(profile)、历史和当前查询分开编码;
- 用混合检索(hybrid retrieval)结合关键词、向量和结构化信息;
- 先找出一小批候选,再用重排序模型(reranker)仔细比较。
不过,每多一条召回路径都可能增加计算、存储和去重成本。先固定总候选数,比较新增路径是否找到了原来遗漏的相关内容;只是多给了候选预算,不能证明表示更好。
相关,不代表这组结果就够好
如果十个结果都高度相似,Recall 可能不错,但用户没有获得更多选择。
还要看看:
- 覆盖率(coverage):重要方向有没有漏掉?
- 多样性(diversity):结果是不是都在重复同一件事?
- 新颖性(novelty):有没有用户可能喜欢、但还没见过的内容?
- 新鲜度(freshness):信息是否已经过期?
- 来源可靠性(authority):这些资料来自哪里,值不值得信任?
- 不确定性(uncertainty):还有哪些关键问题没找到依据?
Agent 什么时候需要搜索
对 Agent 来说,搜索是可选的行动之一。模型需要判断下一步该:
- 直接回答;
- 检索更多证据;
- 调用工具;
- 向用户澄清;
- 或者承认当前无法可靠完成。
所以不只是搜到文档就结束了,还得根据结果决定要不要继续找、换个问法,或先向用户确认。
怎样评估
除了 Recall / NDCG,还可以看:
- 关键证据是否进入上下文;
- 结果是否覆盖不同意图;
- 错误是否集中在新用户、短历史或长 query;
- 加入检索后,最终任务是否真的更好;
- 系统是否在证据不足时继续搜索或正确追问。
继续阅读
- 向量索引:IVF 与 PQ:从内存账、距离算例到索引取舍。
- RAG:证据与评估:文档找到了,答案为什么仍然可能错。
- 表征与记忆
- 数据与反馈
- Evaluation
- Agent Observability
参考论文
本页术语 10
- 检索 retrieval
- 从外部语料里找出相关内容
- 双塔 dual-encoder
- 用户和内容各一个编码器,映到同一向量空间靠内积召回
- 候选 candidate
- 召回阶段捞出来、等待精排挑选的内容
- 延迟交互 late interaction
- 先分别编码查询和内容,再保留较细粒度的表示进行匹配
- 用户资料 profile
- 用户提供或系统整理的相对稳定信息,与具体行为历史区分
- 混合检索 hybrid retrieval
- 结合关键词、向量等不同检索方式,互相补充
- 重排序模型 reranker
- 在已有候选上进行更细的比较,重新决定顺序
- 覆盖率 coverage
- 结果覆盖了多少目标内容或类别,计算前需要说清范围和分母
- 多样性 diversity
- 结果之间在主题、来源或其他指定维度上有多大差异
- 新鲜度 freshness
- 内容产生到可被检索之间的延迟