简介:本文围绕向量检索方案与工具驱动检索方案的差异展开,从架构、能力、成本、适用场景等维度进行系统对比,帮助开发者理解两类方案的边界与选型依据,并给出迁移注意事项与决策建议。
在 AI Agent 与代码智能、企业知识问答等场景中,检索增强生成(RAG)曾一度被视为默认的架构范式。其中,向量检索是最主流的实现方式:将文档或代码分块、做嵌入、存入向量库、按相似度取 top-k,再交给生成模型组织答案。
但近一年来,越来越多的 Agent 系统开始放弃“默认上向量库”的做法,转向工具驱动检索:让模型通过调用文件读取、目录浏览、关键词搜索、逐行编辑等工具,主动在原始数据源中定位信息。
需要澄清的是:向量检索并没有“死”。更准确的说法是,它从默认选项降级为备选方案。本文围绕这两类方案展开对比,帮助读者判断在什么条件下该用哪种。
向量检索方案
将文本或代码切分为块,通过嵌入模型转为稠密向量,写入向量数据库;查询时将问题向量化,按相似度召回若干块,拼接进上下文。核心假设是“语义相近的内容,向量距离也相近”。
工具驱动检索方案
不预先构建向量索引,而是给 Agent 一组通用工具,例如:列出目录、按关键词搜索、打开文件、滚动阅读、按行编辑。Agent 通过多轮推理,自主决定查什么、查几次、如何缩小范围。核心假设是“结构化导航 + 精确匹配 + 迭代反馈,比一次性语义召回更可靠”。
两者目标一致:在生成回答或补丁前,为模型提供足够的、相关的上下文,降低幻觉。二者都面临上下文窗口约束,都需要考虑召回质量与噪声控制,也都可以与缓存、重排、摘要等通用手段组合使用。在简单问答、单轮查询场景中,两者的效果差距可能并不明显。
向量检索依赖嵌入模型、向量库、分块策略、索引构建与更新流程,属于“离线索引 + 在线召回”的两段式架构。工具驱动检索依赖 Agent 的推理循环、工具定义与执行环境,属于“在线导航 + 迭代收敛”的单段式架构,无需预构建索引。
向量检索擅长语义模糊匹配、跨表述召回;但对精确符号(变量名、函数名、错误码)不敏感,且分块会切断跨块逻辑关系。工具驱动检索擅长精确定位、逐层缩小范围、读取完整文件上下文;但对“语义分散、无关键词锚点”的模糊查询效率较低。
引入向量检索需要选嵌入模型、定分块策略、搭索引管道、处理增量更新,改造量集中在数据侧。工具驱动检索需要定义工具集、设计提示词与循环控制、处理超时与步数上限,改造量集中在 Agent 侧。从向量方案迁移到工具方案,通常需要重写检索层,但可复用原有数据源。
向量检索首跳延迟低,适合高并发只读查询;但索引与数据同步存在延迟窗口。工具驱动检索延迟随推理步数增加而上升,单次查询成本更高;但对数据变更实时可见,不依赖索引新鲜度。两者在弹性扩展上的瓶颈不同:前者受向量库吞吐约束,后者受模型调用与工具执行约束。
两者都需要考虑数据隔离、权限控制与审计。向量库中存储的是嵌入,虽非明文但仍可能被反推,需加密与访问控制。工具驱动检索直接访问原始数据源,权限模型可复用现有文件或接口权限,但需防止越权读取与提示注入导致的越界操作。
向量方案需维护索引构建、重建、监控召回质量、处理分块漂移。工具方案需维护工具稳定性、监控步数与失败率、优化提示词。前者偏数据运维,后者偏 Agent 运维。
向量方案成本包括嵌入计算、向量存储与查询、索引重建。工具方案成本主要是模型推理 token 与工具调用次数。数据量大且查询频繁时,向量方案的单位成本可能更低;查询复杂、需要多步推理时,工具方案的成本更可预测但单次更高。
| 维度 | 向量检索方案 | 工具驱动检索方案 |
|---|---|---|
| 核心逻辑 | 语义相似度召回 | 迭代导航与精确匹配 |
| 索引依赖 | 需要预构建 | 无需索引 |
| 精确符号匹配 | 较弱 | 较强 |
| 模糊语义匹配 | 较强 | 依赖关键词设计 |
| 数据实时性 | 受索引同步影响 | 实时可见 |
| 单次延迟 | 较低 | 随步数上升 |
| 运维重心 | 数据与索引 | Agent 与工具 |
| 迁移成本 | 数据侧改造 | Agent 侧改造 |
| 典型瓶颈 | 向量库吞吐 | 模型调用与步数 |
不要默认“必须上向量库”,也不要一刀切“弃用向量”。可按以下条件判断:
从向量方案迁移到工具方案时,需重点评估:原有数据源的访问权限是否可直接复用;工具失败与超时的降级策略;步数上限与成本控制;提示注入防护;以及召回质量评估体系的重建。反向迁移同样需要处理索引构建与增量同步问题。无论哪个方向,都建议保留灰度对比与回滚能力。
向量检索与工具驱动检索并非替代关系,而是适用边界不同。向量检索胜在语义召回与低延迟首跳,工具驱动检索胜在精确导航与实时可见。真正的决策依据是:查询特征、数据变更频率、并发规模、团队运维能力与成本结构。把向量库从“默认”降为“备选”,本质是让架构选择回归问题本身,而非沿用惯性。