以编程方式使用文档

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) 的指南,请参阅以下部分:

API 参考

有关所有 TurbopufferVectorStore 功能和配置的详细文档,请前往 API 参考.