使用 Oracle AI Vector Search 生成嵌入示例代码

# 使用 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 可以应用于各种需要语义搜索的场景,例如客户支持系统中快速检索相关文档,电子商务网站中的产品推荐,或知识库系统中的信息检索。

实践建议

  1. 确保数据库连接的稳定性和安全性。
  2. 根据具体应用场景选择合适的嵌入生成提供者。
  3. 在生产环境中,注意使用不同的用户角色和权限来增强安全性。

如果遇到问题欢迎在评论区交流。

---END---
Spring AI 对 PGvector(PostgreSQL 的向量扩展)、MariaDB Vector Database(MariaDB向量存储)、Oracle Vector Database(Oracle向量嵌入)的支持意味着 Spring AI 能够与这些数据库进行有效的集成和交互,以实现基于向量数据的各种人工智能应用。 从数据存储和检索角度来看,Spring AI 可以利用这些数据库向量存储能力。例如,PGvector 能够高效存储大规模向量数据(通常为高维浮点数向量),Spring AI 可以将生成向量数据存储到 PGvector 中,并且利用其近似最近邻搜索(ANN)功能,快速找到与查询向量最相似的 K 个向量,同时支持多种距离度量方式(如欧氏距离、内积距离、余弦相似度)来计算向量之间的相似度,这对于语义搜索等应用非常关键 [^1]。 在应用场景方面,Spring AI 结合这些向量数据库可以应用于多个实际场景。如在智能客服系统中,利用 LLM 和对话记忆库构建上下文感知的客服系统,通过向量数据库存储和检索相关信息;在文档智能搜索中,使用文档处理器、嵌入模型向量数据库实现语义搜索,提高搜索的准确性和效率 [^2]。 从代码集成角度,Spring AI 可以借助 Spring 生态系统中的相关组件与这些数据库进行集成。例如,使用 Spring Data JPA 可以与 PostgreSQL 数据库进行交互,从而间接使用 PGvector 的功能;若使用非关系型数据库,Spring Data MongoDB 可以提供对 MariaDB数据库的支持 [^3]。 以下是一个简单的伪代码示例,展示 Spring AI 与 PostgreSQL(使用 PGvector)的集成: ```java import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; // 定义实体类 class VectorEntity { private Long id; private float[] vector; // getters and setters } // 定义 Repository 接口 @Repository interface VectorRepository extends JpaRepository<VectorEntity, Long> { // 可以定义自定义的查询方法 } // 在服务类中使用 class VectorService { private final VectorRepository vectorRepository; public VectorService(VectorRepository vectorRepository) { this.vectorRepository = vectorRepository; } public void saveVector(VectorEntity vectorEntity) { vectorRepository.save(vectorEntity); } public VectorEntity findById(Long id) { return vectorRepository.findById(id).orElse(null); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值