# 使用 Oracle AI Vector Search 生成嵌入示例代码
## 技术背景介绍
Oracle AI Vector Search 是一种为 AI 负载设计的强大工具,它允许基于语义而不是关键词来查询数据。这种语义搜索的优势在于其能够将非结构化数据的搜索与业务数据的关系搜索结合在一个系统中。这不仅增强了搜索能力,还避免了在多个系统之间进行数据碎片化的复杂操作。
## 核心原理解析
Oracle AI Vector Search 利用嵌入技术来进行语义搜索。嵌入是将文本或其他数据转换为可用于计算和比较的向量。Oracle 提供了在数据库内部生成嵌入的能力,也支持第三方服务如 OcigenAI 或 Hugging Face 来生成嵌入。
## 代码实现演示
### 连接到 Oracle 数据库
以下代码演示如何连接到 Oracle 数据库。确保安装了 Oracle Python Client 驱动。
```python
import sys
import oracledb
# Update the following variables with your Oracle database credentials and connection details
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
# Update the directory and file names for your ONNX model
# make sure that you have onnx file in the system
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)
生成嵌入
使用 Oracle AI Vector Search生成嵌入,可以选择数据库内模型或第三方API。
from langchain_community.embeddings.oracleai import OracleEmbeddings
embedder_params = {"provider": "database", "model": "demo_model"}
# If a proxy is not required for your environment, you can omit the 'proxy' parameter below
embedder = OracleEmbeddings(conn=conn, params=embedder_params, proxy=None)
embed = embedder.embed_query("Hello World!")
""" verify """
print(f"Embedding generated by OracleEmbeddings: {embed}")
应用场景分析
Oracle AI Vector Search 可以应用于各种需要语义搜索的场景,例如客户支持系统中快速检索相关文档,电子商务网站中的产品推荐,或知识库系统中的信息检索。
实践建议
- 确保数据库连接的稳定性和安全性。
- 根据具体应用场景选择合适的嵌入生成提供者。
- 在生产环境中,注意使用不同的用户角色和权限来增强安全性。
如果遇到问题欢迎在评论区交流。
---END---