运用Oracle AI Vector Search生成高效嵌入:入门指南

54 阅读2分钟

运用Oracle AI Vector Search生成高效嵌入:入门指南

引言

Oracle AI Vector Search提供了一种基于语义而非关键词来查询数据的强大工具,尤其适合处理AI工作负载。将非结构化数据的语义搜索与业务数据的关系搜索结合在一起,不仅简化了数据处理,还消除了添加专用向量数据库的繁琐。这不仅提高了效率,也解决了多系统数据分散的问题。本指南将演示如何在Oracle AI Vector Search中使用嵌入功能,通过OracleEmbeddings为文档生成嵌入。

主要内容

与Oracle数据库连接

在开始生成嵌入之前,我们需要连接到Oracle数据库。确保已安装Oracle Python客户端驱动:

# pip install oracledb

连接到Oracle数据库的Python示例代码如下:

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数据库中:

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)

创建凭证

当选择第三方提供商生成嵌入时,需要创建凭证以安全访问这些提供商的端点:

try:
    cursor = conn.cursor()
    cursor.execute(
        """
       declare
           jo json_object_t;
       begin
           -- HuggingFace
           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));

           -- OCIGENAI
           dbms_vector_chain.drop_credential(credential_name  => 'OCI_CRED');
           jo := json_object_t();
           jo.put('user_ocid','<user_ocid>');
           jo.put('tenancy_ocid','<tenancy_ocid>');
           jo.put('compartment_ocid','<compartment_ocid>');
           jo.put('private_key','<private_key>');
           jo.put('fingerprint','<fingerprint>');
           dbms_vector_chain.create_credential(
               credential_name   => 'OCI_CRED',
               params            => json(jo.to_string));
       end;
       """
    )
    cursor.close()
    print("Credentials created.")
except Exception as ex:
    cursor.close()
    raise

嵌入生成

使用OracleEmbeddings生成嵌入的示例代码如下:

from langchain_community.embeddings.oracleai import OracleEmbeddings

# 使用ONNX模型加载到Oracle数据库
embedder_params = {"provider": "database", "model": "demo_model"}

# 如果您的环境不需要代理,可以忽略'proxy'参数
embedder = OracleEmbeddings(conn=conn, params=embedder_params, proxy="<proxy>")
embed = embedder.embed_query("Hello World!")

# 验证生成的嵌入
print(f"Embedding generated by OracleEmbeddings: {embed}")

常见问题和解决方案

  1. 连接问题:确保Oracle数据库的凭据和连接信息正确无误。检查网络环境和防火墙设置。
  2. ONNX模型加载失败:确认ONNX模型文件路径是否正确,并确保OracleEmbeddings库已经安装配置完毕。

总结和进一步学习资源

使用Oracle AI Vector Search可以高效地管理和查询语义数据,是现代AI应用的强力工具。深入了解可以参考以下资源:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---