一个基于 500 部科幻电影的 RAG 代理,使用约 60 行 TypeScript 实现
摘要
本文描述了一个使用 Mastra 和 Elasticsearch 向量存储的参考性 RAG 代理实现,在 500 部科幻电影的语料库上进行了演示,该代理使用大约 60 行 TypeScript 构建。
Elastic 最近向 Mastra 添加了原生 Elasticsearch 向量存储支持,并基于 500 部科幻电影的语料库构建了一个参考性 RAG 代理。因此,我们进行了一项实验,看看效果如何。代理本身相当小巧。它包含:1 个代理、1 个向量检索工具、1 个记忆存储、约 60 行 TypeScript、Elasticsearch 作为向量后端、openai/text-embedding-3-small 用于嵌入、openai/gpt-5-nano 用于答案生成。流程如下:用户问题 → 代理决定是否搜索 → vectorQueryTool → Elasticsearch → 检索到的块 → 答案。我们将检索作为工具暴露出来,而不是硬编码到每个回合中。这样,代理可以决定何时需要检索,使用记忆处理后续问题,并将其他交互保持为正常的代理循环。核心设置如下:
const esVector = new ElasticSearchVector({
id: "elasticsearch-vector",
url: process.env.ELASTICSEARCH_URL!,
auth: {
apiKey: process.env.ELASTICSEARCH_API_KEY!,
},
});
const vectorQueryTool = createVectorQueryTool({
vectorStore: esVector,
indexName: process.env.ELASTICSEARCH_INDEX_NAME!,
model: new ModelRouterEmbeddingModel(
"openai/text-embedding-3-small"
),
});
export const elasticsearchAgent = new Agent({
id: "elasticsearch-agent",
model: "openai/gpt-5-nano",
tools: {
vectorQueryTool
},
memory: new Memory(),
});
一些实现细节很有趣:记忆是一行代码。new Memory() 为代理提供跨回合的对话上下文。检索层是可替换的。createVectorQueryTool 可跨 Elasticsearch、PgVector、Pinecone、Qdrant 以及 Mastra 支持的其他存储使用。合成模型很小。在这个例子中,检索承担了大部分信息查找工作,因此 gpt-5-nano 只需要将检索到的块转换为有用的答案。您可以在不重写代理的情况下改进检索。演示从向量搜索开始,但 Elasticsearch 可以在稍后添加混合搜索和重排序,同时保持代理接口不变。更重要的是,代理只知道它有一个检索工具。它不需要关心后端是在进行纯向量搜索、混合词法 + 向量检索,还是在幕后进行重排序。对于基本的 RAG 应用,您可以硬编码:嵌入 → 搜索 → 提示 → 答案。一旦您需要对话记忆和模型控制的检索,为检索提供自己的工具可以使代理代码更加清晰。
相似文章
在遇到 LangGraph 天花板后,我构建了自己的智能体运行时——将 UI 作为图节点,Postgres 持久化,零编排成本
作者介绍了 cascaide,这是一个全栈智能体运行时和 AI 编排框架,使用 TypeScript 编写,可在任何支持 JS/TS 的环境运行。它提供 UI 作为图节点、持久化 Postgres 检查点、零编排成本,并且设计为可自托管,无供应商锁定。
为什么向量RAG在大规模AI编程代理中失败(以及我如何使用Neo4j图来解决它)
一款名为Writ的新开源工具采用混合检索流程,结合BM25、本地ONNX向量和Neo4j图遍历,为AI编程代理提供上下文规则,将令牌膨胀减少726倍,并通过bash钩子强制计划审批。
@tom_doerr: 构建生产级RAG系统与Agentic工作流 https://github.com/jamwithai/production-agentic-rag-course…
一个面向学习者的项目,教授构建生产级RAG系统和Agentic工作流,涵盖关键词搜索、混合检索和LangGraph代理集成。
@jerryjliu0: 从2023到2026年,RAG、文档上下文与AI智能体的完整之旅 - @hexapode 进行了全面的90分钟工作…
涵盖从2023到2026年RAG、文档上下文与AI智能体演变的全面工作坊幻灯片,涉及痛点、重排序、智能体循环与文档解析挑战。
使用 TypeScript 构建第一个 Agent 的新课程
Mastra 发布了一门面向初学者的课程,教你使用 TypeScript 构建 AI Agent,涵盖项目结构、工具、MCP、记忆和部署。