Oracle AI 向量搜索:生成摘要
Oracle AI 向量搜索专为人工智能 (AI) 工作负载而设计,允许您根据语义而不是关键字查询数据。Oracle AI 向量搜索的最大优势之一是,非结构化数据的语义搜索可以与一个系统中业务数据的关联搜索相结合。这不仅强大,而且效率更高,因为您无需添加专门的向量数据库,从而消除了跨多个系统的数据碎片化带来的麻烦。
此外,您的向量可以从 Oracle 数据库的所有强大功能中获益,例如:
- 分区支持
- Real Application Clusters 可扩展性
- Exadata 智能扫描
- 跨地理分布式数据库的碎片处理
- 事务
- 并行 SQL
- 灾难恢复
- 安全
- Oracle 机器学习
- Oracle 图数据库
- Oracle 空间和图
- Oracle 区块链
- JSON
本指南演示了如何使用 Oracle AI 向量搜索中的摘要功能来使用 OracleSummary 为您的文档生成摘要。
如果您刚开始使用 Oracle 数据库,请考虑探索 免费的 Oracle 23 AI,它提供了有关设置数据库环境的绝佳介绍。在使用数据库时,通常建议默认情况下避免使用系统用户;相反,您可以创建自己的用户以提高安全性并进行自定义。有关用户创建的详细步骤,请参阅我们的 端到端指南,其中还展示了如何在 Oracle 中设置用户。此外,了解用户权限对于有效管理数据库安全性至关重要。您可以在官方的 Oracle 指南 中了解有关管理用户帐户和安全性的更多信息。
先决条件
请安装 Oracle Python 客户端驱动程序,以便将 Langchain 与 Oracle AI 向量搜索一起使用。
# pip install oracledb
连接到 Oracle 数据库
以下示例代码将展示如何连接到 Oracle 数据库。默认情况下,python-oracledb 在“精简”模式下运行,该模式直接连接到 Oracle 数据库。此模式不需要 Oracle 客户端库。但是,使用 Oracle 客户端库时,一些额外的功能可用。当使用 Oracle 客户端库时,python-oracledb 被称为处于“完整”模式。这两种模式都具有全面的功能,支持 Python 数据库 API v2.0 规范。请参见以下 指南,其中介绍了每种模式支持的功能。如果您无法使用精简模式,则可能需要切换到完整模式。
import sys
import oracledb
# please update with your username, password, hostname and service_name
username = "<username>"
password = "<password>"
dsn = "<hostname>/<service_name>"
try:
conn = oracledb.connect(user=username, password=password, dsn=dsn)
print("Connection successful!")
except Exception as e:
print("Connection failed!")
sys.exit(1)
生成摘要
Oracle AI 向量搜索 Langchain 库提供了一套旨在用于文档摘要的 API。它支持多个摘要提供程序,例如数据库、OCIGENAI、HuggingFace 等,允许用户选择最符合其需求的提供程序。要使用这些功能,用户必须按指定配置摘要参数。有关这些参数的详细信息,请参阅 Oracle AI 向量搜索指南。
注意:如果用户想要使用除 Oracle 内部和默认提供程序“数据库”之外的其他第三方摘要生成提供程序,则可能需要设置代理。如果您没有代理,请在实例化 OracleSummary 时删除代理参数。
# proxy to be used when we instantiate summary and embedder object
proxy = "<proxy>"
以下示例代码将展示如何生成摘要
from langchain_community.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 管道。