引言
Oracle AI Vector Search为人工智能任务提供了一个强大的工具,允许您基于语义而非关键词查询数据。通过将对非结构化数据的语义搜索与对业务数据的关系型搜索结合在一个系统中,Oracle AI Vector Search消除了多系统间的数据碎片化问题。本篇文章旨在介绍如何利用OracleEmbeddings在Oracle内生成文档嵌入向量。
主要内容
嵌入生成原理
Oracle AI Vector Search支持利用本地ONNX模型或第三方Embedding服务生成嵌入。选择数据库作为提供者时,需要将ONNX模型加载到Oracle数据库中;而选择第三方提供者则需创建相关的访问凭证。
连接到Oracle数据库
为了与Oracle数据库集成,首先需要安装Oracle Python Client驱动。默认情况下,Python-oracledb运行在“薄客户端”模式,直接连接到Oracle数据库。以下是连接数据库的示例代码:
import sys
import oracledb
# 更新以下变量以便连接到您的Oracle数据库
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)
加载ONNX模型
加载ONNX模型可以利用Oracle的安全性和性能优势,将数据传输到外部第三方的需求降到最低。以下是加载ONNX模型的示例代码:
from langchain_community.embeddings.oracleai import OracleEmbeddings
# 更新您的ONNX模型路径
onnx_dir = "DEMO_DIR"
onnx_file = "tinybert.onnx"
model_name = "demo_model"
try:
OracleEmbeddings.load_onnx_model(conn, onnx_dir, onnx_file, model_name)
print("ONNX model loaded.")
except Exception as e:
print("ONNX model loading failed!")
sys.exit(1)
代码示例
以下是生成嵌入的完整示例代码:
from langchain_community.embeddings.oracleai import OracleEmbeddings
# 使用ONNX模型生成嵌入
embedder_params = {"provider": "database", "model": "demo_model"}
# 如果环境不需要使用代理,可以省略'proxy'参数
proxy = "<proxy>" # 使用API代理服务提高访问稳定性
embedder = OracleEmbeddings(conn=conn, params=embedder_params, proxy=proxy)
embed = embedder.embed_query("Hello World!")
""" verify """
print(f"Embedding generated by OracleEmbeddings: {embed}")
常见问题和解决方案
- 连接失败或超时:检查用户名、密码和DSN配置,可能还需要考虑网络代理服务的配置来应对网络限制。
- ONNX模型加载错误:确保模型文件存在于正确的目录中,AND检查文件权限。
总结和进一步学习资源
Oracle AI Vector Search通过消除数据碎片化问题和提供强大的数据库功能,极大地提升了AI任务的效率。建议进一步阅读Tutorial来深度探索Oracle AI的更多特性。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---