> ## Content Index
> Fetch the complete content index at: https://www.hubwiz.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# RAG 没有死
- URL: https://www.hubwiz.com/blog/rag-is-not-dead/
- Published: 2026-08-30T12:48:39.000Z
- Updated: 2026-08-30T12:48:39.000Z
- Description: 为什么AI代理正在超越固定向量搜索，并学习如何选择检索信息的方式
- Author: admin
- Tags: RAG, #Import 2026-10-14 14:41

在过去几年中，基于私有知识库构建AI系统遵循了一个几乎可预测的配方：文档变成块，块变成嵌入，嵌入进入向量数据库，top-k检索馈送给模型。这是检索增强生成（RAG）的默认架构，而且有充分的理由——语言是混乱的。用户询问一件事，而相关文档使用完全不同的词汇，嵌入允许系统通过含义而不是确切关键词来检索。

但将此作为每个用例的默认设置隐藏了一个强烈的假设：

> 系统必须在模型开始推理问题之前决定什么是相关的。

一旦LLM本身可以搜索、检查、完善、跟踪引用并判断何时拥有足够的信息，这个假设就变得摇摇欲坠。一种不同的架构正在出现——称之为代理搜索、代理即检索器或即时上下文加载。名称不如转变重要：

> 与其构建一个馈送代理的检索器，不如让代理成为检索器。

![None](https://www.hubwiz.com/blog/content/images/2026/08/1-ioqHa6Crs13lutzyDPcZwA.png)

## 1、检索过去发生在推理之前

在经典RAG中，LLM从不真正搜索知识库，一个单独的检索系统代表模型搜索它。这划定了一个硬边界：检索器决定模型看到什么，模型在其被传递的任何内容上进行推理。当检索问题被很好理解时，这是有效的。当问题需要探索时，它就变得有限制。

![None](https://www.hubwiz.com/blog/content/images/2026/08/1-rUntrsq4k4RKgmoWowjTXQ.png)

## 2、代码是最清晰的例子

问一个编码代理："为什么结账有时会创建重复支付？"答案可能不在一个文档中。代理可能需要找到支付处理器，检查事务逻辑，跟踪导入的服务，定位重试处理，检查数据库约束，搜索幂等键，查看测试，并浏览最近的提交。

这不是"找到前5个相似块"的问题，这是一个调查，而调查是迭代的。代理搜索，学习一些东西，这改变了它接下来搜索的内容。它跟踪一个引用，发现另一个文件，更新其假设，最终决定它有足够的信息。

![None](https://www.hubwiz.com/blog/content/images/2026/08/1-6y8o6ghHKSJ2kKsqXlvf4Q.png)

## 3、核心思想：给模型工具，而不是检索器

与其使用单个检索函数将查询映射到top-k文档，不如给模型工具——glob、grep、read、find、git log、bash——并让它决定如何调查。循环看起来像：计划、搜索、读取结果、更新假设、再次搜索、跟踪引用，并在有足够的信息时停止。

这种变化是微妙但重要的：检索不再是一个单独的管道。它成为代理推理的一部分。

## 4、为什么这非常适合代码

代码已经携带结构。如果你想知道像process\_payment()这样的函数位于何处，精确搜索几乎是完美的，不需要跨数千个块计算语义相似性。从那一个命中开始，代理可以遍历存储库：process\_payment()导致PaymentService，它导致TransactionManager，然后是retry\_transaction()，然后是幂等键。这与检索五个语义相似的块并希望正确的链在其中非常不同。

## 5、Claude Code示例

一个更引人注目的例子来自Claude Code。据其创造者称，早期版本尝试了RAG和本地向量数据库，但团队发现使用普通搜索工具的代理在编码任务上表现得更好。教训不是简单的"grep胜过嵌入"。它更深层：

> 一个足够强大的模型可以使用廉价的搜索原语来动态执行检索。

这带来了三个具体优势。

新鲜度——使用嵌入，每次更改都意味着检测、重新分块、重新嵌入和更新索引。使用直接文件系统搜索，代理只需读取当前文件；没有索引需要同步，因为源是真实来源。对于每秒更改一次的存储库，这很重要。

精确标识符——"calculate\_tax()在哪里实现？"这不是语义查询；它是标识符查找。代码充满高度可搜索的符号——函数和类名、导入、文件路径、配置键、API路由、数据库表、环境变量——词法搜索在此大放异彩。

完善——这是最重要的。第一次搜索返回payment\_service.py；代理读取它并找到TransactionManager的导入；它搜索那个，落在transaction\_manager.py中，发现retry\_transaction()，然后再次搜索。搜索、观察、更新、再次搜索，这是一个静态top-k步骤自然没有的反馈循环。

## 6、检索成为策略

这是一个更清晰的方式来框定差异。传统RAG问："哪些文档与此查询相似？"代理检索问："接下来应该搜索什么？"这是一个根本不同的问题，因为检索系统现在有一个决策策略，检索过程本身包含推理。决定搜索什么、使用哪个工具、结果是否有用以及何时停止，是一个比固定检索器连接到LLM更通用的架构。

这也是为什么"代理即检索器"比"无向量RAG"更好的标签。真正的问题从来不是向量与无向量，而是谁控制检索。

## 7、即时上下文加载

Anthropic描述了一个密切相关的想法：不要将所有可能相关的内容都塞进上下文窗口。给代理轻量级引用，并让它仅在实际需要时加载信息。与其预先将100,000个文件预处理成分块，不如暴露轻量级引用，让代理决定，加载它需要的特定部分，进行推理，并在必要时加载更多。

这将检索直接与上下文工程联系起来。目标不是最大化进入上下文的信息量，而是最大化信噪比。

因为更多上下文并不自动更好。如果检索返回20个块，只有5个有用，模型仍然接收所有20个，烧毁上下文、注意力和令牌，并让无关文本干扰有用文本。代理系统增量构建上下文：搜索，读取一个文件，再次搜索，再读取两个，忽略其余部分。这更接近人类工程师实际工作的方式。

![None](https://www.hubwiz.com/blog/content/images/2026/08/1-PI4AEiZ_5vngq8DfleF_jg.png)

但这不是更昂贵吗？

是的，这是炒作需要反驳的地方。向量数据库非常便宜地回答查询。代理可能需要搜索、读取、搜索、读取、推理，然后在回答之前再次读取，每一步都消耗令牌和延迟。诚实的权衡如下：

向量RAG为您提供预计算的检索和低的、可预测的成本和延迟。它需要索引和持续同步以保持新鲜，它在语义相似性方面很强大，并且可以很好地扩展到非常大的语料库。

代理检索为您提供动态检索，通常没有索引维护，自然新鲜的结果，以及在精确标识符和多步探索方面的真正优势。代价是更高的令牌成本和延迟，在大型语料库上可能变得昂贵。

> 向量搜索没有死。它正在成为几种检索原语之一。

## 8、混合未来更有趣

最强大的架构可能不是向量或代理，而是一个可以访问词法、语义和结构化搜索以及数据库、文档和git历史记录的代理，并为每个问题选择正确的工具。"process\_payment()在哪里定义？"需要grep。"找到此接口的所有实现"需要结构化或AST搜索。"系统对重试策略说了什么？"需要语义加关键字搜索。"上个月支付流程中发生了什么变化？"需要git历史记录。代理成为检索的编排者。

## 9、结构化搜索：缺失的中间层

关键字搜索和嵌入之间有一个有用的层次。问："找到每个调用fetch()然后用.then()处理结果的函数。"普通grep查找文本；嵌入查找概念；但两者都不真正理解程序结构，AST感知工具可以。这给出了一个清晰的光谱：词法回答"什么包含这个确切符号？"，语义回答"什么谈论这个概念？"，结构回答"什么具有这个确切代码模式？"一个有能力的代理决定使用哪个层次。

![None](https://www.hubwiz.com/blog/content/images/2026/08/1-R0eFCYtug8h4rsWlObuS6Q.png)

## 10、MCP将检索转变为工具层

模型上下文协议添加了另一部分。与其将检索视为"向量数据库"，不如将其视为工具——文件系统、数据库、GitHub、Sentry、Slack、CRM、文档、可观察性——每个都暴露代理可以调用的能力。关键抽象：

> 代理不需要每个数据源看起来都像向量数据库。它只需要每个数据源的有用接口。

这是最大的架构后果：检索层正在成为工具层。在旧堆栈中，应用程序位于RAG管道上，位于嵌入模型上，位于向量数据库上，位于文档上。在新兴堆栈中，应用程序位于一个代理上，该代理在搜索、数据库和API之间进行选择，决定如何获取信息而不是接收其固定切片。

![None](https://www.hubwiz.com/blog/content/images/2026/08/1-pN6Eo6Yfr-RC2QXsUQZBWA.png)

## 11、代理检索有真正的失败模式

我们不应该用一种教条换取另一种。代理搜索有真正的弱点。

令牌成本——多个工具调用意味着更多推理。如果用户针对稳定的10,000文档知识库问"我们的退款政策是什么？"，一个好的向量索引可以便宜地回答它，而自主调查是多余的。

延迟——向量查询返回很快；几个连续的代理操作则不会。当用户期望接近即时响应时，这很重要。

大型语料库——动态搜索数百万文档并非免费。在大规模上，预计算索引对于在代理开始之前缩小空间是无价的。

语义查询——如果文档说"服务使用指数退避自动重试失败的请求"，用户问"当API调用失败时系统如何恢复？"，可能存在零词汇重叠。语义检索弥合了词汇差距；代理可以通过多次搜索来补偿，但这成本更高。

## 12、你应该实际构建什么？

停止问"我应该使用RAG吗？"开始问"我有什么样的检索问题？"

当语料库大且稳定、语义相似性重要、查询独立、延迟重要且检索必须便宜时使用向量搜索。

当数据频繁更改、精确标识符重要、源之间的关系重要、工作需要多个步骤或维护索引在操作上昂贵时使用代理检索。

当您使用源代码并且语法、定义和关系重要时使用结构检索。

当语料库很大且查询变化时使用混合检索——有些是词法的，有些是语义的，有些是调查性的。对于大多数严重的生产系统，混合是实际答案。

## 13、层的转变：从检索到搜索策略

一旦检索成为工具调用，您就可以训练模型更好地执行此操作。这就是为什么Search-R1等研究很有趣：不是提示"必要时搜索"，而是教模型何时搜索、发出什么查询、运行多少搜索、何时完善以及何时停止。检索成为一种学习策略。更好的嵌入模型全局改进检索；更好的检索策略可以根据实际任务调整其行为。

它反映了人类工程师调试大型代码库的方式。他们不是从要求十个最接近的代码块开始，而是形成假设，搜索，检查，修改，跟踪引用，查看测试，查看历史，并在证据足够时停止。代理检索赋予模型同样主动的信息收集能力，不是因为模型神奇地理解一切，而是因为系统允许它与信息交互，而不是接收静态切片。

## 14、RAG的真正演变

未来不是"RAG已死"。这是一个进展：RAG，然后是代理RAG，然后是工具驱动的检索，然后是混合检索，最终是学习的检索策略。向量数据库不会消失；它的角色改变了。它不再是检索系统，而是成为检索系统可用的工具之一，AI代理在中心选择词法搜索、向量搜索、AST搜索、数据库、API、git历史记录和内存。代理不再位于检索管道的末端。它控制它。

## 15、这对2026年的AI工程师意味着什么

不要因为每个RAG教程都是这样开始的，就条件反射地使用嵌入、向量数据库和top-k。首先问：数据是什么——代码、文档、日志、事务、结构化记录？它多久更改一次——秒、小时、月？用户会问什么——精确的、语义的、多跳的、调查性的？检索可以有多昂贵——毫秒、秒、分钟？代理需要探索吗？如果是，给它工具。如果没有，更简单的检索器可能更好。

要点不是"不要使用向量数据库"。它更简单：

> 不要让检索比问题要求的更静态。

如果问题是静态的，使用静态检索器。如果是动态的，让检索是动态的。如果是结构化的，使用结构搜索。如果是语义的，使用语义搜索。如果需要调查，赋予代理调查的能力。

多年来，我们将检索视为发生在智能之前的事情：系统搜索，然后模型推理。代理搜索颠覆了这一点，模型推理它需要什么，检索它，检查结果，调整其策略，并继续直到它有足够的证据。这不会使向量数据库过时。它使它们不那么神圣，这是AI工程更健康的方向。

未来不是向量RAG与代理搜索的对立。它是一个代理，具有适合问题的正确检索工具——有时是grep，有时是向量数据库，有时是AST解析器，有时是SQL，有时是web搜索。有趣的部分不再是您选择了哪种检索技术。而是您的代理知道何时使用每一种。

> 检索不必是管道。它可以是一种能力。

---

原文链接：[RAG Is Not Dead. Retrieval Is Becoming Agentic.](https://medium.com/@tai.build.13/rag-is-not-dead-retrieval-is-becoming-agentic-d72fe70a1db8?ref=hubwiz.com)

汇智网翻译整理，转载请标明出处