Skip to content
Cloudflare Docs
非官方翻译 - 此文档为非官方中文翻译版本,仅供参考。如有疑问请以 英文官方文档 为准。

检索增强生成

Agents 可以使用检索增强生成(RAG)来检索相关信息并使用它来增强对 AI 模型的调用。存储用户的聊天历史记录以用作未来对话的上下文,总结文档以引导 Agent 的知识库,和/或使用来自 Agent 的网页浏览任务的数据来增强您的 Agent 的能力。

您可以使用 Agent 自己的 SQL 数据库作为数据的事实来源,并将嵌入存储在 Vectorize(或任何其他支持向量的数据库)中,以允许您的 Agent 检索相关信息。

向量搜索

您可以从 Agent 上的任何方法查询向量索引(或索引):您附加的任何 Vectorize 索引都可以在 Agent 内的 this.env 上使用。如果您已经将元数据关联到映射回存储在 Agent 中的数据的向量,您可以使用 this.sql 直接在 Agent 内查找数据。

以下是如何为 Agent 提供检索功能的示例:

import { Agent } from "agents";
export class RAGAgent extends Agent {
// 我们 Agent 上的其他方法
// ...
//
async queryKnowledge(userQuery) {
// 将查询转换为嵌入
const queryVector = await this.env.AI.run("@cf/baai/bge-base-en-v1.5", {
text: [userQuery],
});
// 从我们的向量索引中检索结果
let searchResults = await this.env.VECTOR_DB.query(queryVector.data[0], {
topK: 10,
returnMetadata: "all",
});
let knowledge = [];
for (const match of searchResults.matches) {
console.log(match.metadata);
knowledge.push(match.metadata);
}
// 使用元数据将向量搜索结果重新关联
// 到我们 Agent 的 SQL 数据库中的数据
let results = this
.sql`SELECT * FROM knowledge WHERE id IN (${knowledge.map((k) => k.id)})`;
// 返回它们
return results;
}
}

您还需要将您的 Agent 连接到您的向量索引:

{
// ...
"vectorize": [
{
"binding": "VECTOR_DB",
"index_name": "your-vectorize-index-name",
},
],
// ...
}

如果您有多个要提供的索引,您可以提供一个 vectorize 绑定数组。

下一步