turbopuffer 是一个快速、成本高效的向量数据库,用于搜索和检索。
本指南帮助你开始使用 turbopuffer 向量存储。有关所有 TurbopufferVectorStore 功能和配置的详细文档,请参阅 API 参考.
概述
集成详情
| 类 | 包 | PY 支持 | 下载量 | 版本 |
|---|---|---|---|---|
TurbopufferVectorStore | @langchain/turbopuffer | ✅ | !NPM - 下载量 | !NPM - 版本 |
设置
注册一个 turbopuffer 账户、创建 API 密钥并安装 @langchain/turbopuffer,官方 @turbopuffer/turbopuffer 客户端, @langchain/core,以及嵌入提供程序(本指南使用 OpenAI 嵌入).
npm install @langchain/turbopuffer @turbopuffer/turbopuffer @langchain/core @langchain/openai
yarn add @langchain/turbopuffer @turbopuffer/turbopuffer @langchain/core @langchain/openai
pnpm add @langchain/turbopuffer @turbopuffer/turbopuffer @langchain/core @langchain/openai
凭证
将您的 API 密钥设置为环境变量:
process.env.TURBOPUFFER_API_KEY = "your-api-key";
(可选)设置一个 区域 (例如 gcp-us-central1).
实例化
创建一个 turbopuffer 客户端和命名空间,然后传递命名空间给 TurbopufferVectorStore:
const embeddings = new OpenAIEmbeddings({
model: "text-embedding-3-small",
});
const client = new Turbopuffer({
apiKey: process.env.TURBOPUFFER_API_KEY,
region: "gcp-us-central1",
});
const vectorStore = new TurbopufferVectorStore(embeddings, {
namespace: client.namespace("my-namespace"),
});
管理向量存储
向向量存储添加项目
目前,仅支持字符串元数据值。
const createdAt = new Date().getTime();
const ids = await vectorStore.addDocuments([
{
pageContent: "some content",
metadata: { created_at: createdAt.toString() },
},
{ pageContent: "hi", metadata: { created_at: (createdAt + 1).toString() } },
{ pageContent: "bye", metadata: { created_at: (createdAt + 2).toString() } },
{
pageContent: "what's this",
metadata: { created_at: (createdAt + 3).toString() },
},
]);
从向量存储删除项目
await vectorStore.delete({ ids: [ids[ids.length - 1]] });
查询向量存储
直接查询
const results = await vectorStore.similaritySearch("hello", 1);
for (const doc of results) {
console.log(doc.pageContent, doc.metadata);
}
使用 turbopuffer 过滤器表达式按元数据过滤。请参阅 turbopuffer 过滤器文档 了解支持的运算符。
const results2 = await vectorStore.similaritySearch("hello", 1, [
"created_at",
"Eq",
(createdAt + 3).toString(),
]);
for (const doc of results2) {
console.log(doc.pageContent, doc.metadata);
}
使用现有 ID 进行 Upsert
await vectorStore.addDocuments(
[
{ pageContent: "changed", metadata: { created_at: createdAt.toString() } },
{
pageContent: "hi changed",
metadata: { created_at: (createdAt + 1).toString() },
},
{
pageContent: "bye changed",
metadata: { created_at: (createdAt + 2).toString() },
},
{
pageContent: "what's this changed",
metadata: { created_at: (createdAt + 3).toString() },
},
],
{ ids }
);
删除命名空间中的所有向量
await vectorStore.delete({ deleteAll: true });
用于检索增强生成
有关如何使用此向量存储进行检索增强生成 (RAG) 的指南,请参阅以下部分:
- - 使用 LangChain 构建 RAG 应用.
- - 代理式 RAG
- - 检索文档
API 参考
有关所有 TurbopufferVectorStore 功能和配置的详细文档,请前往 API 参考.