Skip to main content
兼容性:仅在 Node.js 上可用。
Oracle Database 通过将非结构化内容的语义搜索与业务数据的关系查询结合在单个系统中,支持以文档为中心的 AI 工作流。这使得构建检索工作流(如 RAG)变得更加容易,而无需将数据和向量拆分到多个数据库中。
为什么要在数据库内进行文档处理? 您可以将 Oracle Database 的功能(安全性、事务、可扩展性和高可用性)应用于相同的管道,该管道为 AI 搜索和检索加载、分块和存储内容。
如果您刚开始使用 Oracle Database,可以考虑探索 免费的 Oracle AI Database 26ai,它提供了一种简单的设置方式。在使用数据库时,通常建议避免将 SYSTEM 用户用于应用程序工作负载;而是创建一个具有最低所需权限的专用用户。有关用户管理的背景信息,请参阅官方的 Oracle Database 指南

概述

集成详情

兼容性本地Python 支持
OracleDocLoader@oracle/langchain-oracledb仅 Node
OracleTextSplitter@oracle/langchain-oracledb仅 Node

加载文档

用户可以通过适当配置加载器参数,灵活地从 Oracle Database、文件系统或两者加载文档。有关这些参数的完整详细信息,请查阅 Oracle AI Vector Search 指南 使用 OracleDocLoader 的一个重要优势是它能够处理超过 150 种不同的文件格式,无需为不同文档类型使用多个加载器。有关支持格式的完整列表,请参阅 Oracle Text 支持的文档格式

设置

要使用 OracleDocLoader,请安装 @oracle/langchain-oracledb 辅助工具(以及 @langchain/core),并确保满足 Oracle Database 驱动程序先决条件。有关 Oracle Database 驱动程序的完整信息,请参阅 指南

凭据

为拥有源数据的 Oracle 用户设置环境变量(或使用其他机密管理器)。
export ORACLE_USER=testuser
export ORACLE_PASSWORD=testuser
export ORACLE_DSN="localhost:1521/free"

安装

npm install @oracle/langchain-oracledb @langchain/core

实例化

import oracledb from "oracledb";
import { OracleDocLoader } 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 loader = new OracleDocLoader(connection, {
  owner: "TESTUSER",
  tablename: "DEMO_TAB",
  colname: "DATA",
});

// 记住在应用程序关闭时关闭连接(或池)。
// await connection.close();

从 Oracle Database 加载

const docs = await loader.load();
console.log(`Loaded ${docs.length} documents`);
console.log(docs[0]?.pageContent.slice(0, 120));

从文件或目录加载

切换加载器参数以摄取本地内容。OracleDocLoader 自动处理超过 150 种文件格式;请参阅 Oracle Text 支持的格式 获取完整列表。
const fileLoader = new OracleDocLoader(connection, {
  file: "/path/to/sample.pdf",
});

const directoryLoader = new OracleDocLoader(connection, {
  dir: "/path/to/documents",
});

分块文档

文档大小可能不同,从很小到非常大。用户通常更喜欢将文档分块成较小的部分,以方便生成嵌入。此拆分过程有广泛的自定义选项可用。有关这些参数的完整详细信息,请查阅 Oracle AI Vector Search 指南
import { OracleTextSplitter } from "@oracle/langchain-oracledb";

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

const chunks = await splitter.splitText(docs[0].pageContent);
console.log(`Generated ${chunks.length} chunks`);

后续步骤


API 参考

有关所有 OracleDocLoaderOracleTextSplitter 功能和配置选项的详细文档,请访问 Oracle LangChain Oracle DB 仓库