Skip to content

检索与 RAG ​

本文记录框架在**传统 RAG(检索增强生成)**这一问题上的真实现状与设计取舍,避免使用者依据过时描述误以为存在隐式 RAG 管线。

当前状态:RAG 已移除 ​

自 @ai-zen/agents-core 4.0.0(2026-08-14)起,框架移除了完整的 RAG 与检索基础设施。被删除的模块包括:

  • Rag / Rags/EmbeddingSearch(检索增强生成基类)
  • KnowledgeBase(知识库)
  • VectorDatabase(内存向量数据库)
  • EmbeddingModel / TextEmbeddingAda002_2(嵌入模型相关)
  • AgentContext.rag 字段与 Message.rewrite() / Message.raw_content(仅服务于被删除的 RAG 重写流程)

设计决策:

传统 RAG 的「隐式检索注入」被认定为低价值设计。检索能力应由搜索工具承担,而不是对每次请求做隐式的 prompt 重写。

因此当前框架没有内置向量检索 / embedding / 知识库管线。若未来需要知识检索,应作为工具提供(如 search 工具),而非隐式 RAG。

现状:检索由搜索工具承担 ​

当前可用的检索相关能力是 core 的 IndexedSearchTool —— 一种基于关键词的本地搜索工具:

ts
import { IndexedSearchTool } from "@ai-zen/agents-core";

const tool = new IndexedSearchTool({
  entries: [
    { keywords: ["price", "fee"], text: "This product costs $99/month" },
    { keywords: ["support", "warranty"], text: "One-year free warranty is provided" },
  ],
});
  • 工具名:indexed_search
  • 输入:以条目关键词为 enum 的参数(当只有一个关键词时,允许模型误传字符串而非数组,exec 内会归一化)。
  • 输出:匹配到条目的 JSON.stringify 结果。

它并不做向量相似度或语义检索,仅做关键词命中匹配。对于需要文件系统搜索的场景,SDK 另有 find_text / glob 等搜索类内置工具。

全局检索能力(SDK) ​

在 SDK 层,Scope 的能力发现会在 refresh() 时扫描文件系统,将可用的知识源(用户工具、Skill、MCP、SubAgent)纳入候选集,再由权限过滤与实例化装配。这同样属于「以工具/能力的粒度提供检索」,而非隐式 RAG。

具体可用的检索相关工具(取决于权限与配置):

工具来源说明
indexed_searchcore关键词本地搜索(IndexedSearchTool)
glob / find_textSDK 内置文件系统通配扫描 / 文本与正则搜索
load_skill / call_skill_sub_agentSDK 动态按需加载 Skill / 以 Skill 启动子 Agent
load_mcp / call_mcp_tool / read_mcp_resourceSDK 动态按需连接 MCP 服务器并调用其工具 / 资源

需要人工复核的不确定点 ​

以下描述基于源码与 CHANGELOG 的取证,但仍建议人工复核:

  1. 「知识库检索如未来需要,应作为工具而非隐式 RAG」是规划而非已实现功能。当前没有知识库检索工具。

相关文档 ​

MIT / ISC License