# 引言
Oracle AI Vector Search是为AI工作负载设计的,它允许你基于语义而非关键词来查询数据。其最大的优势在于它将非结构化数据的语义搜索与业务数据的关系搜索合二为一,消除了多系统间数据碎片化的烦恼。这篇文章将带你深入了解如何使用Oracle AI Vector Search生成文档嵌入。
# 主要内容
## 嵌入生成的优势
Oracle AI Vector Search不仅整合了Oracle数据库的强大功能,如分区支持、Exadata智能扫描、事务处理和安全性,还支持与第三方提供商的集成。
## 环境准备
- 安装Oracle Python客户端:
```bash
pip install oracledb
连接到Oracle数据库
连接数据库是使用Oracle AI Vector Search的第一步:
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模型进行嵌入生成:
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
嵌入生成
下述代码示例展示了如何使用Oracle AI Vector Search生成嵌入:
from langchain_community.embeddings.oracleai import OracleEmbeddings
embedder_params = {"provider": "database", "model": "demo_model"}
embedder = OracleEmbeddings(conn=conn, params=embedder_params)
embed = embedder.embed_query("Hello World!")
print(f"Embedding generated by OracleEmbeddings: {embed}")
常见问题和解决方案
- 连接问题:确保网络配置正确,并检查凭证信息。
- ONNX模型加载失败:验证模型文件的路径和文件名是否正确。
总结和进一步学习资源
Oracle AI Vector Search的嵌入生成功能强大且灵活。若要深入学习,请参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---