Oracle AI 向量搜索:生成摘要
Oracle AI向量搜索是为人工智能(AI)工作负载设计的,它允许您基于语义而非关键词查询数据。 Oracle AI向量搜索的一大优势在于可以将非结构化数据上的语义搜索与业务数据上的关系搜索结合在一个系统中使用。 这不仅非常强大而且更加有效,因为您不需要添加一个专门的向量数据库,从而避免了在多个系统之间进行数据碎片化的痛苦。
此外,您的向量可以利用Oracle数据库的所有最强大功能,例如以下内容:
- 分区支持
- 真实应用集群的可扩展性
- Exadata 智能扫描
- 跨地理分布数据库的分片处理
- 交易
- 平行SQL
- 灾难恢复
- 安全
- Oracle 机器学习
- Oracle 图数据库
- Oracle Spatial and Graph
- Oracle 区块链
- JSON
The guide demonstrates how to use Summary Capabilities within Oracle AI Vector Search to generate summary for your documents using OracleSummary.
如果您是第一次使用 Oracle 数据库,可以考虑探索我们的 免费 Oracle 23 AI,它提供了一个很好的入门介绍来设置您的数据库环境。在操作数据库时,默认避免使用系统用户会更加安全和灵活;您可以创建自己的用户以增强安全性并进行个性化设置。有关用户创建的详细步骤,请参阅我们的 端到端指南,其中还介绍了如何在 Oracle 中设置用户。此外,了解用户权限对于有效管理数据库安全至关重要。您可以在官方 Oracle 指南 中了解更多关于管理用户帐户和安全性的内容。
前置条件
请安装Oracle Python客户端驱动以使用LangChain与Oracle AI向量搜索。
# pip install oracledb
连接到Oracle数据库
以下示例代码将展示如何连接到Oracle数据库。默认情况下,python-oracledb 以‘薄’模式运行,直接连接到 Oracle 数据库。这种模式不需要 Oracle 客户端库。但是,在使用这些库时会提供一些额外的功能性。当 python-oracledb 使用 Oracle 客户端库时,它被认为是以‘厚’模式运行的。两种模式都具有全面的功能以支持 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)
生成摘要
The Oracle AI向量搜索 Langchain 库提供了用于文档摘要的一系列API。它支持多种摘要提供者,如数据库、OCIGENAI、HuggingFace 等,允许用户选择最适合他们需求的提供商。要利用这些功能,用户必须按照指定配置摘要参数。有关这些参数的详细信息,请参阅 Oracle AI向量搜索指南手册。
Note: The users may need to set proxy if they want to use some 3rd party summary generation providers other than Oracle's in-house and default provider: 'database'. If you don't have proxy, please remove the proxy parameter when you instantiate the OracleSummary.
# proxy to be used when we instantiate summary and embedder object
proxy = "<proxy>"
The following sample code will show how to generate summary:
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}")
End to End Demo
请参考我们的完整示例指南 Oracle AI向量搜索端到端示例指南,在Oracle AI向量搜索的帮助下构建完整的RAG流水线。