以编程方式使用文档

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

本指南演示如何使用 OracleSummary 从 Oracle AI 向量搜索 LangChain 集成中生成文档摘要。

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

如果您刚刚开始使用 Oracle 数据库,请考虑探索 免费 Oracle 26 AI。有关端到端设置演练,请参阅 Oracle AI 向量搜索演示笔记本。有关用户管理的背景,请参阅官方 Oracle 指南.

先决条件

安装 langchain-oracledb。这 python-oracledb 驱动程序将作为依赖项自动安装。

pip install -qU langchain-oracledb
uv add langchain-oracledb

连接到 Oracle 数据库

以下示例代码将展示如何连接到 Oracle 数据库。默认情况下,python-oracledb 以"精简"模式运行,直接连接到 Oracle 数据库。此模式不需要 Oracle 客户端库。但是,当 python-oracledb 使用它们时,可以获得一些附加功能。当使用 Oracle 客户端库时,Python-oracledb 被称为处于"厚"模式。两种模式都支持全面的功能,符合 Python 数据库 API v2.0 规范。请参阅以下 指南 了解每种模式支持的功能。如果您无法使用精简模式,可能需要切换到厚模式。

# Please update with your username, password, hostname, port and service_name
username = "<username>"
password = "<password>"
dsn = "<hostname>:<port>/<service_name>"

connection = oracledb.connect(user=username, password=password, dsn=dsn)
print("Connection successful!")

生成摘要

Oracle AI 向量搜索 LangChain 库提供了一套专为文档摘要设计的 API。它支持多种摘要提供商,如 Database、OCIGENAI、HuggingFace 等,允许用户选择最能满足其需求的提供商。要使用这些功能,用户必须按照规定配置摘要参数。有关这些参数的详细信息,请参阅 Oracle AI 向量搜索指南.

***Note:*** 如果用户想使用 Oracle 内部和默认提供商“database”之外的第三方摘要生成提供商,可能需要设置代理。如果您没有代理,请在实例化 OracleSummary 时移除代理参数。

# proxy to be used when we instantiate summary and embedder object
proxy = "<proxy>"

以下示例代码将展示如何生成摘要:

from langchain_oracledb.utilities.oracleai import OracleSummary
from langchain_core.documents import Document

"""
# using 'ocigenai' provider
summary_params = {
    "provider": "ocigenai",
    "credential_name": "OCI_CRED",
    "url": "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/summarizeText",
    "model": "cohere.command",
}

# using 'huggingface' provider
summary_params = {
    "provider": "huggingface",
    "credential_name": "HF_CRED",
    "url": "https://api-inference.huggingface.co/models/",
    "model": "facebook/bart-large-cnn",
    "wait_for_model": "true"
}
"""

# using 'database' provider
summary_params = {
    "provider": "database",
    "glevel": "S",
    "numParagraphs": 1,
    "language": "english",
}

# get the summary instance
# Remove proxy if not required
summ = OracleSummary(conn=conn, params=summary_params, proxy=proxy)
summary = summ.get_summary(
    "In the heart of the forest, "
    + "a lone fox ventured out at dusk, seeking a lost treasure. "
    + "With each step, memories flooded back, guiding its path. "
    + "As the moon rose high, illuminating the night, the fox unearthed "
    + "not gold, but a forgotten friendship, worth more than any riches."
)

print(f"Summary generated by OracleSummary: {summary}")

端到端演示

请参阅我们的完整演示指南 Oracle AI 向量搜索端到端演示指南 在 Oracle AI 向量搜索的帮助下构建端到端 RAG 管道。