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

# 向量存储集成

> 使用 LangChain JavaScript 集成向量存储

## 概述

一个 [向量存储](https://langchain-docs-zh.mintlify.site/langchain/oss/python/integrations/vectorstores.md) 存储了 [嵌入](https://langchain-docs-zh.mintlify.site/langchain/oss/python/integrations/embeddings.md) 数据，并执行相似性搜索。

```mermaid theme={null}
flowchart LR

    subgraph "📥 Indexing phase (store)"
        A[📄 Documents] --> B[🔢 Embedding model]
        B --> C[🔘 Embedding vectors]
        C --> D[(Vector store)]
    end

    subgraph "📤 Query phase (retrieval)"
        E[❓ Query text] --> F[🔢 Embedding model]
        F --> G[🔘 Query vector]
        G --> H[🔍 Similarity search]
        H --> D
        D --> I[📄 Top-k results]
    end

    classDef process fill:#E5F4FF,stroke:#006DDD,stroke-width:2px,color:#030710
    class A,B,C,D,E,F,G,H,I process
```

### 接口

LangChain 提供了一个统一的向量存储接口，允许你：

* `addDocuments` - 向存储中添加文档。
* `delete` - 通过 ID 删除存储的文档。
* `similaritySearch` - 查询语义相似的文档。

这种抽象让你可以在不同的实现之间切换，而无需更改应用程序逻辑。

### 初始化

LangChain 中的大多数向量存储在初始化向量存储时接受一个嵌入模型作为参数。

```typescript theme={null}
import { OpenAIEmbeddings } from "@langchain/openai";
import { MemoryVectorStore } from "@langchain/classic/vectorstores/memory";

const embeddings = new OpenAIEmbeddings({
  model: "text-embedding-3-small",
});
const vectorStore = new MemoryVectorStore(embeddings);
```

### 添加文档

你可以通过使用 `addDocuments` 函数向向量存储中添加文档。

```typescript theme={null}
import { Document } from "@langchain/core/documents";
const document = new Document({
  pageContent: "Hello world",
});
await vectorStore.addDocuments([document]);
```

### 删除文档

你可以通过使用 `delete` 函数从向量存储中删除文档。

```typescript theme={null}
await vectorStore.delete({
  filter: {
    pageContent: "Hello world",
  },
});
```

### 相似性搜索

使用 `similaritySearch` 发起语义查询，它将返回最接近的嵌入文档：

```typescript theme={null}
const results = await vectorStore.similaritySearch("Hello world", 10);
```

许多向量存储支持以下参数：

* `k` — 返回的结果数量
* `filter` — 基于元数据的条件过滤

### 相似性指标与索引

嵌入相似性可能使用以下方法计算：

* **余弦相似度**
* **欧几里得距离**
* **点积**

高效的搜索通常采用 HNSW（分层可导航小世界）等索引方法，但具体细节取决于向量存储。

### 元数据过滤

通过元数据（例如，来源、日期）过滤可以细化搜索结果：

```typescript theme={null}
vectorStore.similaritySearch("query", 2, { source: "tweets" });
```

<重要>
  对基于元数据的过滤的支持在不同的实现之间有所不同。
  请查阅你选择的向量存储的文档以获取详细信息。
</重要>

## 顶级集成

**选择嵌入模型：**

> [accordion] OpenAI
>
> 安装依赖项：
>
> ```bash npm theme={null}
> npm install @langchain/openai @langchain/core
> ```
>
> ```bash yarn theme={null}
> yarn add @langchain/openai @langchain/core
> ```
>
> ```bash pnpm theme={null}
> pnpm add @langchain/openai @langchain/core
> ```
>
> 添加环境变量：
>
> ```bash theme={null}
> OPENAI_API_KEY=your-api-key
> ```
>
> 实例化模型：
>
> ```typescript theme={null}
> import { OpenAIEmbeddings } from "@langchain/openai";
>
> const embeddings = new OpenAIEmbeddings({
>   model: "text-embedding-3-large"
> });
> ```

> [accordion] Azure
>
> 安装依赖项
>
> ```bash npm theme={null}
> npm install @langchain/openai @langchain/core
> ```
>
> ```bash yarn theme={null}
> yarn add @langchain/openai @langchain/core
> ```
>
> ```bash pnpm theme={null}
> pnpm add @langchain/openai @langchain/core
> ```
>
> 添加环境变量：
>
> ```bash theme={null}
> AZURE_OPENAI_API_INSTANCE_NAME=<YOUR_INSTANCE_NAME>
> AZURE_OPENAI_API_KEY=<YOUR_KEY>
> AZURE_OPENAI_API_VERSION="2024-02-01"
> ```
>
> 实例化模型：
>
> ```typescript theme={null}
> import { AzureOpenAIEmbeddings } from "@langchain/openai";
>
> const embeddings = new AzureOpenAIEmbeddings({
>   azureOpenAIApiEmbeddingsDeploymentName: "text-embedding-ada-002"
> });
> ```

> [accordion] AWS
>
> 安装依赖项：
>
> ```bash npm theme={null}
> npm i @langchain/aws
> ```
>
> ```bash yarn theme={null}
> yarn add @langchain/aws
> ```
>
> ```bash pnpm theme={null}
> pnpm add @langchain/aws
> ```
>
> 添加环境变量：
>
> ```bash theme={null}
> BEDROCK_AWS_REGION=your-region
> ```
>
> 实例化模型：
>
> ```typescript theme={null}
> import { BedrockEmbeddings } from "@langchain/aws";
>
> const embeddings = new BedrockEmbeddings({
>   model: "amazon.titan-embed-text-v1"
> });
> ```

> [accordion] Google Gemini
>
> 安装依赖项：
>
> ```bash npm theme={null}
> npm i @langchain/google-genai
> ```
>
> ```bash yarn theme={null}
> yarn add @langchain/google-genai
> ```
>
> ```bash pnpm theme={null}
> pnpm add @langchain/google-genai
> ```
>
> 添加环境变量：
>
> ```bash theme={null}
> GOOGLE_API_KEY=your-api-key
> ```
>
> 实例化模型：
>
> ```typescript theme={null}
> import { GoogleGenerativeAIEmbeddings } from "@langchain/google-genai";
>
> const embeddings = new GoogleGenerativeAIEmbeddings({
>   model: "gemini-embedding-001"
> });
> ```

> [accordion] Gemini Enterprise Agent Platform
>
> 安装依赖项：
>
> ```bash npm theme={null}
> npm i @langchain/google-vertexai
> ```
>
> ```bash yarn theme={null}
> yarn add @langchain/google-vertexai
> ```
>
> ```bash pnpm theme={null}
> pnpm add @langchain/google-vertexai
> ```
>
> 添加环境变量：
>
> ```bash theme={null}
> GOOGLE_APPLICATION_CREDENTIALS=credentials.json
> ```
>
> 实例化模型：
>
> ```typescript theme={null}
> import { VertexAIEmbeddings } from "@langchain/google-vertexai";
>
> const embeddings = new VertexAIEmbeddings({
>   model: "gemini-embedding-001"
> });
> ```

> [accordion] MistralAI
>
> 安装依赖：
>
> ```bash npm theme={null}
> npm install @langchain/mistralai @langchain/core
> ```
>
> ```bash yarn theme={null}
> yarn add @langchain/mistralai @langchain/core
> ```
>
> ```bash pnpm theme={null}
> pnpm add @langchain/mistralai @langchain/core
> ```
>
> 添加环境变量：
>
> ```bash theme={null}
> MISTRAL_API_KEY=your-api-key
> ```
>
> 实例化模型：
>
> ```typescript theme={null}
> import { MistralAIEmbeddings } from "@langchain/mistralai";
>
> const embeddings = new MistralAIEmbeddings({
>   model: "mistral-embed"
> });
> ```

> [accordion] Cohere
>
> 安装依赖：
>
> ```bash npm theme={null}
> npm i @langchain/cohere
> ```
>
> ```bash yarn theme={null}
> yarn add @langchain/cohere
> ```
>
> ```bash pnpm theme={null}
> pnpm add @langchain/cohere
> ```
>
> 添加环境变量：
>
> ```bash theme={null}
> COHERE_API_KEY=your-api-key
> ```
>
> 实例化模型：
>
> ```typescript theme={null}
> import { CohereEmbeddings } from "@langchain/cohere";
>
> const embeddings = new CohereEmbeddings({
>   model: "embed-english-v3.0"
> });
> ```

> [accordion] Ollama
>
> 安装依赖：
>
> ```bash npm theme={null}
> npm install @langchain/ollama @langchain/core
> ```
>
> ```bash yarn theme={null}
> yarn add @langchain/ollama @langchain/core
> ```
>
> ```bash pnpm theme={null}
> pnpm add @langchain/ollama @langchain/core
> ```
>
> 实例化模型：
>
> ```typescript theme={null}
> import { OllamaEmbeddings } from "@langchain/ollama";
>
> const embeddings = new OllamaEmbeddings({
>   model: "llama2",
>   baseUrl: "http://localhost:11434", // Default value
> });
> ```

> [accordion] Voyage AI
>
> 安装依赖：
>
> ```bash npm theme={null}
> npm install @langchain/mongodb @langchain/core
> ```
>
> ```bash yarn theme={null}
> yarn add @langchain/mongodb @langchain/core
> ```
>
> ```bash pnpm theme={null}
> pnpm add @langchain/mongodb @langchain/core
> ```
>
> 添加环境变量：
>
> ```bash theme={null}
> VOYAGE_API_KEY=your-api-key
> ```
>
> 实例化模型：
>
> ```typescript theme={null}
> import { VoyageEmbeddings } from "@langchain/mongodb";
>
> const embeddings = new VoyageEmbeddings({
>   model: "voyage-4"
> });
> ```

**选择向量存储：**

> [accordion] Memory
>
> ```bash theme={null}
> npm i langchain
> ```
>
> ```bash yarn theme={null}
> yarn add langchain
> ```
>
> ```bash pnpm theme={null}
> pnpm add langchain
> ```
>
> ```typescript theme={null}
> import { MemoryVectorStore } from "@langchain/classic/vectorstores/memory";
>
> const vectorStore = new MemoryVectorStore(embeddings);
> ```

> [accordion] MongoDB
>
> > [tab] Manual embedding
> >
> > ```bash npm theme={null}
> > npm install @langchain/mongodb mongodb @langchain/core
> > ```
> >
> > ```bash yarn theme={null}
> > yarn add @langchain/mongodb mongodb @langchain/core
> > ```
> >
> > ```bash pnpm theme={null}
> > pnpm add @langchain/mongodb mongodb @langchain/core
> > ```
> >
> > ```typescript theme={null}
> > import { MongoDBAtlasVectorSearch } from "@langchain/mongodb"
> > import { MongoClient } from "mongodb";
> >
> > const client = new MongoClient(process.env.MONGODB_ATLAS_URI!);
> > const collection = client
> >   .db(process.env.MONGODB_ATLAS_DB_NAME)
> >   .collection(process.env.MONGODB_ATLAS_COLLECTION_NAME);
> >
> > const vectorStore = new MongoDBAtlasVectorSearch(embeddings, {
> >   collection,
> >   indexName: "vector_index",
> >   textKey: "text",
> >   embeddingKey: "embedding",
> > });
> > ```
>
> > [tab] Automated embedding
> >
> > ```bash npm theme={null}
> > npm install @langchain/mongodb mongodb @langchain/core
> > ```
> >
> > ```bash yarn theme={null}
> > yarn add @langchain/mongodb mongodb @langchain/core
> > ```
> >
> > ```bash pnpm theme={null}
> > pnpm add @langchain/mongodb mongodb @langchain/core
> > ```
> >
> > ```typescript theme={null}
> > import { MongoDBAtlasVectorSearch } from "@langchain/mongodb"
> > import { MongoClient } from "mongodb";
> >
> > const client = new MongoClient(process.env.MONGODB_ATLAS_URI!);
> > const collection = client
> >   .db(process.env.MONGODB_ATLAS_DB_NAME)
> >   .collection(process.env.MONGODB_ATLAS_COLLECTION_NAME);
> >
> > const vectorStore = new MongoDBAtlasVectorSearch({ collection });
> > ```

> [accordion] Pinecone
>
> ```bash npm theme={null}
> npm install @langchain/pinecone @langchain/core @pinecone-database/pinecone
> ```
>
> ```bash yarn theme={null}
> yarn add @langchain/pinecone @langchain/core @pinecone-database/pinecone
> ```
>
> ```bash pnpm theme={null}
> pnpm add @langchain/pinecone @langchain/core @pinecone-database/pinecone
> ```
>
> ```typescript theme={null}
> import { PineconeStore } from "@langchain/pinecone";
> import { Pinecone as PineconeClient } from "@pinecone-database/pinecone";
>
> const pinecone = new PineconeClient();
> const vectorStore = new PineconeStore(embeddings, {
>   pineconeIndex,
>   maxConcurrency: 5,
> });
> ```

> [accordion] Redis
>
> ```bash npm theme={null}
> npm install @langchain/redis @langchain/core redis
> ```
>
> ```bash yarn theme={null}
> yarn add @langchain/redis @langchain/core redis
> ```
>
> ```bash pnpm theme={null}
> pnpm add @langchain/redis @langchain/core redis
> ```
>
> ```typescript theme={null}
> import { RedisVectorStore } from "@langchain/redis";
>
> const vectorStore = new RedisVectorStore(embeddings, {
>   redisClient: client,
>   indexName: "langchainjs-testing",
> });
> ```

> [accordion] Qdrant
>
> ```bash npm theme={null}
> npm install @langchain/qdrant @langchain/core
> ```
>
> ```bash yarn theme={null}
> yarn add @langchain/qdrant @langchain/core
> ```
>
> ```bash pnpm theme={null}
> pnpm add @langchain/qdrant @langchain/core
> ```
>
> ```typescript theme={null}
> import { QdrantVectorStore } from "@langchain/qdrant";
>
> const vectorStore = await QdrantVectorStore.fromExistingCollection(embeddings, {
>   url: process.env.QDRANT_URL,
>   collectionName: "langchainjs-testing",
> });
> ```

> [accordion] Oracle AI Database
>
> ```bash npm theme={null}
> npm i @oracle/langchain-oracledb @langchain/core
> ```
>
> ```bash yarn theme={null}
> yarn add @oracle/langchain-oracledb @langchain/core
> ```
>
> ```bash pnpm theme={null}
> pnpm add @oracle/langchain-oracledb @langchain/core
> ```
>
> ```typescript theme={null}
> import oracledb from "oracledb";
> import { OracleEmbeddings, OracleVS } from "@oracle/langchain-oracledb";
>
> const connection = await oracledb.getConnection({
>   user: process.env.ORACLE_USER,
>   password: process.env.ORACLE_PASSWORD,
>   connectionString: process.env.ORACLE_DSN,
> });
>
> const embeddings = new OracleEmbeddings(connection, {
>   provider: "database",
>   model: process.env.DEMO_ONNX_MODEL ?? "DEMO_MODEL",
> });
>
> const vectorStore = new OracleVS(embeddings, {
>   client: connection,
>   tableName: "DEMO_VECTORS",
>   query: "Find support tickets mentioning service outages.",
>   distanceStrategy: "DOT",
> });
> await vectorStore.initialize();
> ```

> [accordion] Weaviate
>
> ```bash npm theme={null}
> npm install @langchain/weaviate @langchain/core weaviate-client
> ```
>
> ```bash yarn theme={null}
> yarn add @langchain/weaviate @langchain/core weaviate-client
> ```
>
> ```bash pnpm theme={null}
> pnpm add @langchain/weaviate @langchain/core weaviate-client
> ```
>
> ```typescript theme={null}
> import { WeaviateStore } from "@langchain/weaviate";
>
> const vectorStore = new WeaviateStore(embeddings, {
>     client: weaviateClient,
>     indexName: "Langchainjs_test",
> });
> ```

LangChain.js 与多种向量存储集成。以下为完整列表：

## 所有向量存储

| 向量存储 | 下载 |
| :- | :- |
| [`WeaviateStore`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/vectorstores/weaviate) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/weaviate?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/weaviate) |
| [`PineconeStore`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/vectorstores/pinecone) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/pinecone?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/pinecone) |
| [`MongoDBAtlasVectorSearch`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/vectorstores/mongodb_atlas) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/mongodb?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/mongodb) |
| [`QdrantVectorStore`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/vectorstores/qdrant) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/qdrant?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/qdrant) |
| [`RedisVectorStore`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/vectorstores/redis) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/redis?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/redis) |
| [`OracleVS`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/vectorstores/oracleai) | [  ![Downloads per month](https://img.shields.io/npm/dm/@oracle/langchain-oracledb?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@oracle/langchain-oracledb) |
| [`PGVectorStore`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/vectorstores/pgvector) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/pgvector?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/pgvector) |
| [`Cloudflare vectorize`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/vectorstores/cloudflare_vectorize) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/cloudflare?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/cloudflare) |
| [`TurbopufferVectorStore`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/vectorstores/turbopuffer) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/turbopuffer?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/turbopuffer) |
| [`Google cloud SQL for postgresql`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/vectorstores/google_cloudsql_pg) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/google-cloud-sql-pg?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/google-cloud-sql-pg) |
| [`Azure Cosmos DB for MongoDB vCore (deprecated)`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/vectorstores/azure_cosmosdb_mongodb) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/azure-cosmosdb?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/azure-cosmosdb) |
| [`Azure Cosmos DB for NoSQL`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/vectorstores/azure_cosmosdb_nosql) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/azure-cosmosdb?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/azure-cosmosdb) |
| [`Azure DocumentDB`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/vectorstores/azure_documentdb) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/azure-cosmosdb?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/azure-cosmosdb) |
| [`Neo4jVectorStore`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/vectorstores/neo4jvector) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/neo4j?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/neo4j) |
| [`SAP HANA Cloud Vector Engine`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/vectorstores/sap_hanavector) | [  ![Downloads per month](https://img.shields.io/npm/dm/@sap/hana-langchain?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@sap/hana-langchain) |
| [`LambdaDB`](https://docs.lambdadb.ai/guides/get-started/quickstart) | [  ![Downloads per month](https://img.shields.io/npm/dm/@functional-systems/langchain-lambdadb?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@functional-systems/langchain-lambdadb) |
| [`Infino`](https://infino.ai/docs) | [  ![Downloads per month](https://img.shields.io/npm/dm/@infino-ai/langchain-infino?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@infino-ai/langchain-infino) |
| [`YDB`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/vectorstores/ydb) | [  ![Downloads per month](https://img.shields.io/npm/dm/@ydbjs/langchain?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@ydbjs/langchain) |
| [`langchain`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/vectorstores/memory) | N/A |

***

> 官方原文：[src/oss/javascript/integrations/vectorstores/index.mdx](https://github.com/langchain-ai/docs/blob/main/src/oss/javascript/integrations/vectorstores/index.mdx) · 非官方翻译，译文由 AI 生成，以英文原文为准。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.