> ## Documentation Index
> Fetch the complete documentation index at: https://docs.langchain.com/llms.txt
> Use this file to discover all available pages before exploring further.

# TurbopufferVectorStore integration

> Integrate with the TurbopufferVectorStore using LangChain JavaScript.

[turbopuffer](https://turbopuffer.com) is a fast, cost-efficient vector database for search and retrieval.

This guide helps you get started with the turbopuffer [vector store](/oss/javascript/integrations/vectorstores). For detailed documentation of all `TurbopufferVectorStore` features and configurations, see the [API reference](https://reference.langchain.com/javascript/langchain-turbopuffer/TurbopufferVectorStore).

## Overview

### Integration details

| Class                                                                                                               | Package                                                                          | [PY support](https://python.langchain.com/docs/integrations/vectorstores/turbopuffer/) |                                                Downloads                                               |                                               Version                                               |
| :------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------: |
| [`TurbopufferVectorStore`](https://reference.langchain.com/javascript/langchain-turbopuffer/TurbopufferVectorStore) | [`@langchain/turbopuffer`](https://www.npmjs.com/package/@langchain/turbopuffer) |                                            ✅                                           | ![NPM - Downloads](https://img.shields.io/npm/dm/@langchain/turbopuffer?style=flat-square\&label=%20&) | ![NPM - Version](https://img.shields.io/npm/v/@langchain/turbopuffer?style=flat-square\&label=%20&) |

## Setup

[Sign up for a turbopuffer account](https://turbopuffer.com/join), create an API key, and install `@langchain/turbopuffer`, the official `@turbopuffer/turbopuffer` client, `@langchain/core`, and an embeddings provider (this guide uses [OpenAI embeddings](/oss/javascript/integrations/embeddings/openai)).

<CodeGroup>
  ```bash npm theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  npm install @langchain/turbopuffer @turbopuffer/turbopuffer @langchain/core @langchain/openai
  ```

  ```bash yarn theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  yarn add @langchain/turbopuffer @turbopuffer/turbopuffer @langchain/core @langchain/openai
  ```

  ```bash pnpm theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  pnpm add @langchain/turbopuffer @turbopuffer/turbopuffer @langchain/core @langchain/openai
  ```
</CodeGroup>

### Credentials

Set your API key as an environment variable:

```typescript theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
process.env.TURBOPUFFER_API_KEY = "your-api-key";
```

Optionally set a [region](https://turbopuffer.com/docs/regions) (for example `gcp-us-central1`).

## Instantiation

Create a turbopuffer client and namespace, then pass the namespace to `TurbopufferVectorStore`:

```typescript theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
import { OpenAIEmbeddings } from "@langchain/openai";
import { TurbopufferVectorStore } from "@langchain/turbopuffer";
import { Turbopuffer } from "@turbopuffer/turbopuffer";

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"),
});
```

## Manage vector store

### Add items to vector store

Currently, only string metadata values are supported.

```typescript theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
import type { Document } from "@langchain/core/documents";

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() },
  },
]);
```

### Delete items from vector store

```typescript theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
await vectorStore.delete({ ids: [ids[ids.length - 1]] });
```

## Query vector store

### Query directly

```typescript theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
const results = await vectorStore.similaritySearch("hello", 1);

for (const doc of results) {
  console.log(doc.pageContent, doc.metadata);
}
```

Filter by metadata using turbopuffer filter expressions. See the [turbopuffer filter documentation](https://turbopuffer.com/docs/reference/query#filter-parameters) for supported operators.

```typescript theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
const results2 = await vectorStore.similaritySearch("hello", 1, [
  "created_at",
  "Eq",
  (createdAt + 3).toString(),
]);

for (const doc of results2) {
  console.log(doc.pageContent, doc.metadata);
}
```

### Upsert with existing IDs

```typescript theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
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 }
);
```

### Delete all vectors in the namespace

```typescript theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
await vectorStore.delete({ deleteAll: true });
```

### Usage for retrieval-augmented generation

For guides on how to use this vector store for retrieval-augmented generation (RAG), see the following sections:

* [Build a RAG app with LangChain](/oss/javascript/deepagents/rag).
* [Agentic RAG](/oss/javascript/langgraph/agentic-rag)
* [Retrieval docs](/oss/javascript/langchain/retrieval)

***

## API reference

For detailed documentation of all `TurbopufferVectorStore` features and configurations head to the [API reference](https://reference.langchain.com/javascript/langchain-turbopuffer/TurbopufferVectorStore).

***

<div className="source-links">
  <Callout icon="terminal-2">
    [Connect these docs](/use-these-docs) to Claude, VSCode, and more via MCP for real-time answers.
  </Callout>

  <Callout icon="edit">
    [Edit this page on GitHub](https://github.com/langchain-ai/docs/edit/main/src/oss/javascript/integrations/vectorstores/turbopuffer.mdx) or [file an issue](https://github.com/langchain-ai/docs/issues/new/choose).
  </Callout>
</div>
