以编程方式使用文档

Oracle AI Database 支持通过以下方式查询数据的 AI 工作负载 **含义** (语义),而不仅仅是关键词。它将 **非结构化内容的语义搜索** 与 **业务数据的关联过滤** 结合在单一系统中——因此您可以构建检索工作流(如 RAG),而无需引入单独的向量数据库并跨多个平台分散数据。

本指南演示如何使用 OracleSummary 从 Oracle AI Vector Search LangChain 集成中生成文档摘要。

> **为什么在这里进行摘要?** > 摘要是将长文档压缩为适合检索的内容(预览、元数据或浓缩上下文)的实用方法,同时保持治理和操作保证接近数据。

如果您刚开始使用 Oracle Database,请考虑探索 免费 Oracle 26 AI。有关用户管理的背景信息,请参阅官方 Oracle 指南.

概述

集成详情

本地PY 支持
OracleSummary@oracle/langchain-oracledb

设置

要访问 OracleSummary,请安装 @oracle/langchain-oracledb 帮助程序(包含 @langchain/core)并确保满足 Oracle Database 驱动程序 的先决条件。

凭据

为拥有摘要配置的 Oracle 用户设置凭据(或使用密钥管理器):

如果您计划调用第三方提供商(如 OCI Generative AI 或 Hugging Face),请先在 Oracle Database 中创建凭据(例如 OCI_CRED, HF_CRED) using the PL/SQL helpers documented in the Oracle AI Vector Search 指南.

安装

npm install @oracle/langchain-oracledb @langchain/core
yarn add @oracle/langchain-oracledb @langchain/core
pnpm add @oracle/langchain-oracledb @langchain/core

实例化工具

const connection = await oracledb.getConnection({
  user: process.env.ORACLE_USER,
  password: process.env.ORACLE_PASSWORD,
  connectionString: process.env.ORACLE_DSN,
});

const summary = new OracleSummary(
  connection,
  {
    provider: "database",
    glevel: "S",
    numParagraphs: 1,
    language: "english",
  },
  process.env.HTTP_PROXY, // optional
);

第三个构造函数参数是一个可选的代理字符串。仅当出站请求必须通过 HTTP 代理时提供它(例如,调用 Hugging Face 端点时)。

使用数据库内模型进行文本摘要

直接在 Oracle Database 中运行 ONNX 摘要模型,以将数据保留在与事务工作负载相同的主机上。

const result = await summary.getSummary(
  "Oracle Database combines relational and vector workloads so you can build secure RAG pipelines.",
);

console.log(result); // => concise summary text

使用托管提供商

切换 provider 参数以通过以下方式路由摘要请求 OCI Generative AI 或 Hugging Face。提供您在 Oracle Database 中注册的凭据名称,以及需要时提供代理字符串。

const ociSummary = new OracleSummary(
  connection,
  {
    provider: "ocigenai",
    credential_name: "OCI_CRED",
    url: "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/summarizeText",
    model: "cohere.command",
  },
  process.env.HTTP_PROXY,
);

const hfSummary = new OracleSummary(connection, {
  provider: "huggingface",
  credential_name: "HF_CRED",
  url: "https://api-inference.huggingface.co/models/",
  model: "facebook/bart-large-cnn",
  wait_for_model: "true",
});

与 LangChain 工具链接

您可以将 OracleSummary 包装在自定义 LangChain 工具或可运行对象中,以将其与代理工具调用集成。

const summarizeTool = tool(
  async ({ text }: { text: string }) => summary.getSummary(text),
  {
    name: "oracle_summary",
    description: "Summarize Oracle-sourced documents.",
    schema: z.object({
      text: z.string().describe("Full text to summarize"),
    }),
  },
);

const toolSummary = await summarizeTool.invoke({ text });

后续步骤

API 参考

有关所有 OracleSummary 参数和返回类型的详细文档,请参阅 Oracle LangChain Oracle DB 代码仓库.