> ## 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

## 概述

> [!NOTE]
>
> 本概述涵盖 **基于文本的嵌入模型**。LangChain 目前不支持多模态嵌入。

嵌入模型将原始文本——如句子、段落或推文——转换为固定长度的数字向量，以捕捉其 **语义意义**。这些向量使机器能够根据意义而不是确切词语来比较和搜索文本。

在实践中，这意味着具有相似想法的文本在向量空间中会被放置在一起。例如，嵌入模型不仅可以匹配 *"机器学习"* 这个短语，还可以在用不同措辞的情况下，提取讨论相关概念的文档。

### 工作原理

1. **向量化**：模型将每个输入字符串编码为高维向量。
2. **相似度评分**：使用数学指标比较向量，以衡量底层文本的关联程度。

### 相似度指标

常用以下几种指标来比较嵌入：

* **余弦相似度**：测量两个向量之间的夹角。
* **欧几里得距离**：测量两点之间的直线距离。
* **点积**：测量一个向量在另一个向量上的投影程度。

## 接口

LangChain 通过 @\[Embeddings] 接口为文本嵌入模型（例如 OpenAI、Cohere、Hugging Face）提供标准接口。

提供两种主要方法：

* `embedDocuments(documents: string[]) → number[][]`：嵌入一系列文档。
* `embedQuery(text: string) → number[]`：嵌入单个查询。

> [!NOTE]
>
> 该接口允许使用不同的策略嵌入查询和文档，尽管在实践中大多数提供者以相同方式处理它们。

## 安装和使用

> [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 install @langchain/aws @langchain/core
> ```
>
> ```bash yarn theme={null}
> yarn add @langchain/aws @langchain/core
> ```
>
> ```bash pnpm theme={null}
> pnpm add @langchain/aws @langchain/core
> ```
>
> 添加环境变量：
>
> ```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 install @langchain/google-genai @langchain/core
> ```
>
> ```bash yarn theme={null}
> yarn add @langchain/google-genai @langchain/core
> ```
>
> ```bash pnpm theme={null}
> pnpm add @langchain/google-genai @langchain/core
> ```
>
> 添加环境变量：
>
> ```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 install @langchain/google-vertexai @langchain/core
> ```
>
> ```bash yarn theme={null}
> yarn add @langchain/google-vertexai @langchain/core
> ```
>
> ```bash pnpm theme={null}
> pnpm add @langchain/google-vertexai @langchain/core
> ```
>
> 添加环境变量：
>
> ```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 install @langchain/cohere @langchain/core
> ```
>
> ```bash yarn theme={null}
> yarn add @langchain/cohere @langchain/core
> ```
>
> ```bash pnpm theme={null}
> pnpm add @langchain/cohere @langchain/core
> ```
>
> 添加环境变量：
>
> ```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"
> });
> ```

## 缓存

嵌入可以被存储或临时缓存，以避免需要重新计算它们。

使用 `CacheBackedEmbeddings` 可以缓存嵌入。这个包装器将嵌入存储在键值存储中，其中文本被哈希，哈希值用作缓存中的键。

初始化 `CacheBackedEmbeddings` 的主要支持方式是 `fromBytesStore`。它接受以下参数：

* **underlyingEmbeddings**：用于嵌入的嵌入器。
* **documentEmbeddingStore**：任何 [`BaseStore`](https://langchain-docs-zh.mintlify.site/langchain/oss/python/integrations/stores/)，用于缓存文档嵌入。
* **options.namespace**：(可选，默认为 `""`) 用于文档缓存的命名空间。有助于避免冲突（例如，将其设置为嵌入模型名称）。

- 始终设置 `namespace` 参数，以避免在使用不同的嵌入模型时发生冲突。
- `CacheBackedEmbeddings` 默认不缓存查询嵌入。要启用此功能，请指定一个 `query_embedding_store`。

```typescript theme={null}
import { CacheBackedEmbeddings } from "@langchain/classic/embeddings/cache_backed";
import { InMemoryStore } from "@langchain/core/stores";

const underlyingEmbeddings = new OpenAIEmbeddings();

const inMemoryStore = new InMemoryStore();

const cacheBackedEmbeddings = CacheBackedEmbeddings.fromBytesStore(
  underlyingEmbeddings,
  inMemoryStore,
  {
    namespace: underlyingEmbeddings.model,
  }
);

// Example: caching a query embedding
const tic = Date.now();
const queryEmbedding = cacheBackedEmbeddings.embedQuery("Hello, world!");
console.log(`First call took: ${Date.now() - tic}ms`);

// Example: caching a document embedding
const tic = Date.now();
const documentEmbedding = cacheBackedEmbeddings.embedDocuments(["Hello, world!"]);
console.log(`Cached creation time: ${Date.now() - tic}ms`);
```

在生产环境中，您通常会使用更健壮的持久化存储，例如数据库或云存储。请参阅 [stores integrations](https://langchain-docs-zh.mintlify.site/langchain/oss/python/integrations/stores.md) 获取选项。

## 所有集成

| 集成 | 下载 |
| :- | :- |
| [`AzureOpenAIEmbeddings`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/embeddings/azure_openai) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/openai?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/openai) |
| [`OpenAIEmbeddings`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/embeddings/openai) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/openai?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/openai) |
| [`GoogleGenerativeAIEmbeddings`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/embeddings/google_generative_ai) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/google-genai?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/google-genai) |
| [`Bedrock`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/embeddings/bedrock) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/aws?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/aws) |
| [`VertexAIEmbeddings`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/embeddings/google_vertex_ai) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/google-vertexai?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/google-vertexai) |
| [`OllamaEmbeddings`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/embeddings/ollama) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/ollama?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/ollama) |
| [`MistralAIEmbeddings`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/embeddings/mistralai) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/mistralai?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/mistralai) |
| [`PineconeEmbeddings`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/embeddings/pinecone) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/pinecone?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/pinecone) |
| [`VoyageEmbeddings`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/embeddings/voyageai) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/mongodb?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/mongodb) |
| [`CohereEmbeddings`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/embeddings/cohere) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/cohere?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/cohere) |
| [`FireworksEmbeddings`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/embeddings/fireworks) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/fireworks?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/fireworks) |
| [`Nomic`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/embeddings/nomic) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/nomic?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/nomic) |
| [`Baidu qianfan`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/embeddings/baidu_qianfan) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/baidu-qianfan?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/baidu-qianfan) |
| [`CloudflareWorkersAIEmbeddings`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/embeddings/cloudflare_ai) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/cloudflare?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/cloudflare) |
| [`TogetherAIEmbeddings`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/embeddings/togetherai) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/together-ai?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/together-ai) |
| [`WatsonxEmbeddings`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/embeddings/ibm) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/ibm?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/ibm) |
| [`EmpirioLabsEmbeddings`](https://docs.empiriolabs.ai/integrations#langchain) | [  ![Downloads per month](https://img.shields.io/npm/dm/@empiriolabs/langchain?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@empiriolabs/langchain) |
| [`Mixedbread AI`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/embeddings/mixedbread_ai) | [  ![Downloads per month](https://img.shields.io/npm/dm/@langchain/mixedbread-ai?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@langchain/mixedbread-ai) |
| [`SCXEmbeddings`](https://scx.ai/) | [  ![Downloads per month](https://img.shields.io/npm/dm/@scx-ai/langchain?style=flat-square\&label=%20&)](https://www.npmjs.com/package/@scx-ai/langchain) |
| [`Minimax`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/embeddings/minimax) | N/A |
| [`OracleEmbeddings`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/embeddings/oracleai) | N/A |

***

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


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