S3·检索与Agent

检索(Retrieval)

检索增强3 分钟

检索是 RAG 的"查找"环节——从知识库中找到与用户问题最相关的信息。检索质量直接决定了 RAG 系统的上限。

① 一句话定义

检索(Retrieval)是 RAG 流程中的第一步——从知识库中找到与用户查询最相关的文档片段。检索的输入是用户的查询向量,输出是 Top-K 个最相关的 Chunk。整个 RAG 的最终回答质量,不会超过检索回来的文档质量——垃圾进,垃圾出。

② 为什么重要

RAG 系统有一句名言:"生成的上限由检索决定"。即使你用 GPT-4 做生成,如果检索回来的文档不相关或不完整,AI 的回答一定出问题。检索是整个 RAG 链路中最值得投入优化精力的环节——提升检索质量比换更强的 LLM 往往 ROI 更高。

检索有两个核心指标:召回率(相关文档被找到的比例)和精确率(返回文档中真正相关的比例)。实际 RAG 系统中通常更看重召回率——宁可多返回一些不相关的(交给后续 Reranking 或 LLM 自己过滤),也不能漏掉关键信息。

③ 核心机制

检索方式分三代:第一代——关键词检索(BM25/TF-IDF),精确但不懂语义;第二代——向量语义检索,懂语义但可能漏精确匹配;第三代——混合检索+重排序,结合两者优势,是当前生产环境标配。选择的关键参数:Top-K(返回多少个Chunk,通常5-20)、相似度度量(余弦相似度 vs 点积 vs 欧氏距离)、索引算法(HNSW vs IVF)。

④ 典型应用场景

客服场景 → Top-K=5,因为客服问题的答案通常集中在一个Chunk;研究调研 → Top-K=20,因为可能需要从多篇文档中综合信息;代码搜索 → 混合检索(代码中的函数名用关键词,功能描述用语义)。

⑤ 常见误区

误区:Top-K 越大越好——更大的 Top-K 会增加 LLM 的处理负担和 Token 成本,而且混入的噪音可能干扰 LLM 判断。5-10 是常用范围,超过 20 要慎重。误区:检索质量只看 Embedding 模型——Chunk 大小、Overlap、索引算法、相似度度量、Query 改写(把用户的口语化查询改写成更适合检索的形式)每一项都显著影响检索质量。

更多

2024年出现了Query Rewriting(查询改写)和HyDE(Hypothetical Document Embeddings——先让LLM生成一个假设的理想答案,再用这个答案去做向量检索)等高级检索技术。一派认为这些"花招"大幅提升检索质量,另一派认为增加了延迟和复杂度得不偿失。目前顶级RAG系统大多至少使用Query Rewriting。

检索是 RAG 的"千里眼"——找得准,AI 的回答才靠谱。投时间优化检索,比花大钱换更强的 LLM 更明智。