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

# OracleEmbeddings 集成

> 使用 LangChain JavaScript 集成 OracleEmbeddings 嵌入模型。

> [!TIP]
>
> **兼容性**: 仅适用于 Node.js。

Oracle AI 数据库支持 AI 工作负载，您可以通过 **语义**（语义学）查询数据，而不仅仅是关键词。它将 **非结构化内容语义搜索** 与 **业务数据关系过滤** 结合在一个系统中——这样您可以在不引入单独的向量数据库的情况下构建检索工作流（如 RAG），并且不会将数据分散到多个平台。

本指南演示了如何使用 `OracleEmbeddings` 为您的内容生成嵌入。

> **为什么在（或通过）Oracle 中生成嵌入？**
> 您可以将数据治理和操作保证（安全、事务、可用性）紧密集成到您的 AI 工作流中——同时选择适合您环境的嵌入提供者模型。

## 概述

### 集成详情

| 类别 | 包 | 本地 | [PY 支持](https://langchain-docs-zh.mintlify.site/langchain/oss/python/integrations/embeddings/oracleai.md) |
| :- | :- | :-: | :-: |
| `OracleEmbeddings` | [`@oracle/langchain-oracledb`](https://www.npmjs.com/package/@oracle/langchain-oracledb) | ✅ | ✅ |

## 设置

要使用 OracleEmbeddings，请安装 `@oracle/langchain-oracledb` 辅助工具（以及 `@langchain/core`），并确保您的系统满足 Oracle 数据库驱动程序的先决条件。

### 凭证

导出（或从您的密钥管理器加载）属于您的向量表和 ONNX 模型的 Oracle 用户的凭证。

```bash theme={null}
export ORACLE_USER=testuser
export ORACLE_PASSWORD=testuser
export ORACLE_DSN="localhost:1521/free"
```

如果您计划调用第三方提供者（例如，OCI 生成式 AI 或 Hugging Face），您必须在 Oracle 数据库中首先创建凭证。有关 PL/SQL 辅助程序过程的详细信息，请参阅 [Oracle AI 向量搜索指南](https://www.oracle.com/pls/topic/lookup?ctx=dblatest\&id=GUID-C6439E94-4E86-4ECD-954E-4B73D53579DE)。

### 安装

```bash npm theme={null}
npm install @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 } 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: "DEMO_MODEL",
});

// Close the connection (or pool) when you are done to avoid leaking resources.
// await connection.close();
```

构造函数的第三个参数是一个可选的 `proxy` 字符串。当出站请求必须通过 HTTP 代理传输时（例如，在私有网络中调用 Hugging Face 时）使用它。

## 在 Oracle 数据库中运行 ONNX 模型

Oracle 数据库支持多种嵌入提供者，使用户能够在专有数据库解决方案和 OCIGENAI、HuggingFace 等第三方服务之间进行选择。这种选择决定了生成和管理嵌入的方法。

***重要*** : 如果用户选择数据库选项，他们必须将 ONNX 模型上传到 Oracle 数据库。相反，如果选择第三方提供者进行嵌入生成，则无需将 ONNX 模型上传到 Oracle 数据库。

在 Oracle 中直接使用 ONNX 模型的一个显著优势是它通过消除向外部方传输数据的需求，提供了增强的安全性和性能。此外，这种方法避免了通常与网络或 REST API 调用相关的延迟。

以下是将 ONNX 模型上传到 Oracle 数据库的示例代码：

```typescript theme={null}
import { OracleEmbeddings } from "@oracle/langchain-oracledb";

await OracleEmbeddings.loadOnnxModel(
  connection,
  "/path/to/model",
  "all-minilm-l12-v2.onnx",
  "DEMO_MODEL",
);

const dbEmbeddings = new OracleEmbeddings(connection, {
  provider: "database",
  model: "DEMO_MODEL",
});

const singleVector = await dbEmbeddings.embedQuery(
  "Summarize hybrid search patterns in Oracle Database.",
);
console.log(singleVector.length);
```

## 调用托管嵌入提供者

将 `provider` 切换为通过 OCI 生成式 AI 或 Hugging Face 路由嵌入请求。提供您使用 Oracle 的 `DBMS_VECTOR_CHAIN` 辅助工具创建的凭证名称，如果需要，请提供代理。

```typescript theme={null}
const ociEmbeddings = new OracleEmbeddings(connection, {
  provider: "ocigenai",
  credential_name: "OCI_CRED",
  url: "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/embedText",
  model: "cohere.embed-english-light-v3.0",
}, process.env.HTTP_PROXY);

const hfEmbeddings = new OracleEmbeddings(connection, {
  provider: "huggingface",
  credential_name: "HF_CRED",
  url: "https://api-inference.huggingface.co/pipeline/feature-extraction/",
  model: "sentence-transformers/all-MiniLM-L6-v2",
});

// Clean up when finished:
// await connection.close();
```

## 为检索嵌入文档

使用相同的嵌入实例准备内容，以便在 Oracle 数据库中进行向量存储或混合检索。

```typescript theme={null}
import { OracleDocLoader, OracleTextSplitter } from "@oracle/langchain-oracledb";

const loader = new OracleDocLoader(connection, {
  owner: "TESTUSER",
  tablename: "DEMO_TAB",
  colname: "DATA",
});

const docs = await loader.load();

const splitter = new OracleTextSplitter(connection, {
  split: "chars",
  max: 500,
  normalize: "all",
});

const chunks = await splitter.splitText(docs[0].pageContent);
const vectors = await embeddings.embedDocuments(chunks);

console.log(`Generated ${vectors.length} vectors`);
```

## 下一步

* 使用 [`OracleVS`](https://langchain-docs-zh.mintlify.site/langchain/oss/javascript/integrations/vectorstores/oracleai) 存储嵌入以进行混合搜索
* 使用 [`OracleSummary`](https://langchain-docs-zh.mintlify.site/langchain/oss/python/integrations/tools/oracleai) 对文档进行摘要

***

## API 参考

有关所有 `OracleEmbeddings` 选项的详细文档，请访问 [Oracle LangChain Oracle DB 存储库](https://github.com/oracle/langchain-oracle/tree/main/libs/js/langchain-oracledb)。

***

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


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