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

# IBM watsonx.ai集成

> 集成 IBM watsonx.ai 嵌入模型，使用 LangChain JavaScript

这将帮助您使用 LangChain 开始使用 IBM watsonx.ai [嵌入模型](https://langchain-docs-zh.mintlify.site/langchain/oss/python/integrations/embeddings.md)。有关 `IBM watsonx.ai` 功能和配置选项的详细文档，请参阅 [API 参考](https://reference.langchain.com/javascript/langchain-ibm/WatsonxEmbeddings)。

## 概述

### 集成详情

| 类 | 包 | 本地 | [Python 支持](https://langchain-docs-zh.mintlify.site/langchain/oss/python/integrations/embeddings/ibm_watsonx.md) | 下载 | 版本 |
| :- | :- | :-: | :-: | :-: | :-: |
| [`WatsonxEmbeddings`](https://reference.langchain.com/javascript/langchain-ibm/WatsonxEmbeddings) | [`@langchain/ibm`](https://www.npmjs.com/package/@langchain/ibm) | ❌ | ✅ | ![NPM - 下载](https://img.shields.io/npm/dm/@langchain/ibm?style=flat-square\&label=%20&) | ![NPM - 版本](https://img.shields.io/npm/v/@langchain/ibm?style=flat-square\&label=%20&) |

## 设置

要访问 IBM WatsonxAI 嵌入，您需要创建一个 IBM watsonx.ai 账户，获取 API 密钥或其他任何类型的凭证，并安装 `@langchain/ibm` 集成包。

### 凭证

前往 [IBM Cloud](https://cloud.ibm.com/login) 注册 IBM watsonx.ai 并生成 API 密钥，或提供下方所示的其他任何形式的身份验证。

#### IAM 身份验证

```bash theme={null}
export WATSONX_AI_AUTH_TYPE=iam
export WATSONX_AI_APIKEY=<YOUR-APIKEY>
```

#### Bearer 令牌身份验证

```bash theme={null}
export WATSONX_AI_AUTH_TYPE=bearertoken
export WATSONX_AI_BEARER_TOKEN=<YOUR-BEARER-TOKEN>
```

#### IBM watsonx.ai 软件身份验证

```bash theme={null}
export WATSONX_AI_AUTH_TYPE=cp4d
export WATSONX_AI_USERNAME=<YOUR_USERNAME>
export WATSONX_AI_PASSWORD=<YOUR_PASSWORD>
export WATSONX_AI_URL=<URL>
```

将这些放入您的环境变量中并初始化对象后，身份验证将自动进行。

也可以通过将这些值作为参数传递给新实例来完成身份验证。

## IAM 身份验证

```typescript theme={null}
import { WatsonxEmbeddings } from "@langchain/ibm";

const props = {
  version: "YYYY-MM-DD",
  serviceUrl: "<SERVICE_URL>",
  projectId: "<PROJECT_ID>",
  watsonxAIAuthType: "iam",
  watsonxAIApikey: "<YOUR-APIKEY>",
};
const instance = new WatsonxEmbeddings(props);
```

## Bearer 令牌身份验证

```typescript theme={null}
import { WatsonxEmbeddings } from "@langchain/ibm";

const props = {
  version: "YYYY-MM-DD",
  serviceUrl: "<SERVICE_URL>",
  projectId: "<PROJECT_ID>",
  watsonxAIAuthType: "bearertoken",
  watsonxAIBearerToken: "<YOUR-BEARERTOKEN>",
};
const instance = new WatsonxEmbeddings(props);
```

### IBM watsonx.ai 软件身份验证

```typescript theme={null}
import { WatsonxEmbeddings } from "@langchain/ibm";

const props = {
  version: "YYYY-MM-DD",
  serviceUrl: "<SERVICE_URL>",
  projectId: "<PROJECT_ID>",
  watsonxAIAuthType: "cp4d",
  watsonxAIUsername: "<YOUR-USERNAME>",
  watsonxAIPassword: "<YOUR-PASSWORD>",
  watsonxAIUrl: "<url>",
};
const instance = new WatsonxEmbeddings(props);
```

如果您想自动跟踪您的模型调用，也可以通过取消注释下方来设置您的 [LangSmith](https://docs.langchain.com/langsmith/observability) API 密钥：

```bash theme={null}
# export LANGSMITH_TRACING="true"
# export LANGSMITH_API_KEY="your-api-key"
```

### 安装

LangChain IBM watsonx.ai 集成位于 `@langchain/ibm` 包中：

```bash npm theme={null}
npm install @langchain/ibm @langchain/core
```

```bash yarn theme={null}
yarn add @langchain/ibm @langchain/core
```

```bash pnpm theme={null}
pnpm add @langchain/ibm @langchain/core
```

## 实例化

现在我们可以实例化我们的模型对象并嵌入文本：

```javascript theme={null}
import { WatsonxEmbeddings } from "@langchain/ibm";

const embeddings = new WatsonxEmbeddings({
  version: "YYYY-MM-DD",
  serviceUrl: process.env.API_URL,
  projectId: "<PROJECT_ID>",
  spaceId: "<SPACE_ID>",
  model: "<MODEL_ID>",
});
```

注意：

* 您必须提供 `spaceId` 或 `projectId` 才能继续。
* 根据您的服务实例所在的区域，使用正确的 serviceUrl。

### 模型网关

```typescript theme={null}
import { WatsonxEmbeddings } from "@langchain/ibm";

const instance = new WatsonxEmbeddings({
  version: "YYYY-MM-DD",
  serviceUrl: process.env.API_URL,
  model: "<ALIAS_MODEL_ID>",
  modelGateway: true,
});
```

## 索引和检索

嵌入模型通常用于检索增强生成 (RAG) 流程中，既用于索引数据，也用于稍后检索数据。有关更详细的说明，请参阅我们在 [**学习** 标签](https://langchain-docs-zh.mintlify.site/langchain/oss/learn.md) 下提供的 RAG 教程。

下面，我们将展示如何使用上面初始化的 `embeddings` 对象来索引和检索数据。在这个示例中，我们将使用 demo [`MemoryVectorStore`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/vectorstores/memory) 来索引和检索一个示例文档。

```javascript theme={null}
// Create a vector store with a sample text
import { MemoryVectorStore } from "@langchain/classic/vectorstores/memory";

const text = "LangChain is the framework for building context-aware reasoning applications";

const vectorstore = await MemoryVectorStore.fromDocuments(
  [{ pageContent: text, metadata: {} }],
  embeddings,
);

// Use the vector store as a retriever that returns a single document
const retriever = vectorstore.asRetriever(1);

// Retrieve the most similar text
const retrievedDocuments = await retriever.invoke("What is LangChain?");

retrievedDocuments[0].pageContent;
```

```text theme={null}
LangChain is the framework for building context-aware reasoning applications
```

## 直接使用

在底层，向量存储和检索器实现会调用 `embeddings.embedDocument(...)` 和 `embeddings.embedQuery(...)` 来为 `fromDocuments` 中使用的文本(s)以及检索器的 `invoke` 操作创建嵌入。

您可以直接调用这些方法来获取您自己的用例的嵌入。

### 嵌入单个文本

您可以使用 `embedQuery` 嵌入搜索查询。这将生成特定于查询的向量表示：

```javascript theme={null}
    const singleVector = await embeddings.embedQuery(text);
    singleVector.slice(0, 10);
```

```text theme={null}
[
   -0.017436018,  -0.01469498,
   -0.015685871, -0.013543149,
  -0.0011519607, -0.008123747,
    0.015286108, -0.023845721,
    -0.02454774,   0.07235078
]
```

### 嵌入多个文本

您可以使用 `embedDocuments` 嵌入多个用于索引的文本。此方法使用的内部机制可能与嵌入查询不同：

```javascript theme={null}
    const text2 = "LangGraph is a library for building stateful, multi-actor applications with LLMs";

    const vectors = await embeddings.embedDocuments([text, text2]);

    console.log(vectors[0].slice(0, 10));
    console.log(vectors[1].slice(0, 10));

```

```text theme={null}
[
  -0.017436024, -0.014695002,
   -0.01568589, -0.013543164,
  -0.001151976, -0.008123703,
   0.015286064, -0.023845702,
  -0.024547677,   0.07235076
]
[
     0.03278884, -0.017893745,
  -0.0027520044,  0.016506646,
    0.028271576,  -0.01284331,
    0.014344065, -0.007968607,
    -0.03899479,  0.039327156
]
```

***

## API 参考

有关 **module\_name** 所有功能和配置的详细文档，请前往 API 参考：**api\_ref\_module**

***

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


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