【RAG】【embeddings40】Oracle AI Vector Search嵌入生成

张开发
2026/5/6 1:27:14 15 分钟阅读
【RAG】【embeddings40】Oracle AI Vector Search嵌入生成
案例目标Oracle AI Vector Search是为人工智能(AI)工作负载设计的解决方案允许您基于语义而非关键词查询数据。本案例展示了如何使用Oracle AI Vector Search中的嵌入功能通过OracleEmbeddings为文档生成嵌入向量。Oracle AI Vector Search的最大优势之一是可以在一个单一系统中将非结构化数据的语义搜索与业务数据的关系搜索相结合。这不仅功能强大而且显著更有效因为您不需要添加专门的向量数据库消除了多个系统之间数据碎片化的痛点。通过本案例您将学习如何连接Oracle数据库并配置环境加载ONNX模型到Oracle数据库配置第三方嵌入服务提供商的凭证使用OracleEmbeddings生成文本嵌入向量利用Oracle数据库的高级特性优化向量搜索技术栈与核心依赖核心库llama-index-embeddings-oracleai - LlamaIndex的Oracle AI嵌入模型集成oracledb - Oracle数据库Python客户端驱动llama-index - 数据框架核心库数据库特性分区支持实时应用集群(RAC)可扩展性Exadata智能扫描跨地理分布式数据库分片处理事务处理并行SQL灾难恢复安全性Oracle机器学习环境配置安装依赖%pip install llama-index-embeddings-oracleai连接Oracle数据库Oracle Python客户端驱动支持两种模式Thin模式和Thick模式。Thin模式直接连接到Oracle数据库不需要Oracle客户端库而Thick模式使用Oracle客户端库提供更多功能。import sys import oracledb # 更新以下变量为您的Oracle数据库凭证和连接详情 username username password password dsn hostname/service_name try: conn oracledb.connect(userusername, passwordpassword, dsndsn) print(连接成功!) except Exception as e: print(连接失败!) sys.exit(1)提示如果您刚开始使用Oracle数据库可以考虑探索免费的Oracle 23 AI它为设置数据库环境提供了很好的入门指南。建议避免默认使用系统用户而是创建自己的用户以增强安全性和自定义性。案例实现实现步骤1 加载ONNX模型Oracle支持多种嵌入提供商用户可以选择专有数据库解决方案和第三方服务如OCIGENAI和HuggingFace。如果选择数据库选项必须将ONNX模型上传到Oracle数据库。from llama_index.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模型已加载。) except Exception as e: print(ONNX模型加载失败!) sys.exit(1)在Oracle中直接使用ONNX模型的一个显著优势是它通过无需向外部方传输数据提供了增强的安全性和性能。此外这种方法避免了通常与网络或REST API调用相关的延迟。2 创建凭证当选择第三方提供商生成嵌入时用户需要建立凭证以安全访问提供商的端点。如果选择database提供商生成嵌入则不需要凭证。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(凭证已创建。) except Exception as ex: cursor.close() raise3 生成嵌入向量Oracle AI Vector Search提供了多种生成嵌入的方法利用本地托管的ONNX模型或第三方API。用户可能需要配置代理来使用第三方嵌入生成提供商不包括使用ONNX模型的database提供商。# 实例化摘要和嵌入对象时使用的代理 proxy proxyfrom llama_index.embeddings.oracleai import OracleEmbeddings # 使用ocigenai embedder_params { provider: ocigenai, credential_name: OCI_CRED, url: https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/embedText, model: cohere.embed-english-light-v3.0, } # 使用huggingface embedder_params { provider: huggingface, credential_name: HF_CRED, url: https://api-inference.huggingface.co/pipeline/feature-extraction/, model: sentence-transformers/all-MiniLM-L6-v2, wait_for_model: true } # 使用加载到Oracle数据库的ONNX模型 embedder_params {provider: database, model: demo_model} # 如果不需要移除代理 embedder OracleEmbeddings(connconn, paramsembedder_params, proxyproxy) embed embedder._get_text_embedding(Hello World!) 验证 print(f由OracleEmbeddings生成的嵌入: {embed})案例效果通过使用Oracle AI Vector Search生成嵌入可以获得以下效果统一数据存储将向量数据与业务数据存储在同一数据库中消除数据碎片化企业级特性利用Oracle数据库的所有强大功能如分区、集群、并行处理等安全性在数据库内部处理敏感数据避免向外部服务传输性能优化减少网络延迟利用数据库优化技术灵活性支持多种嵌入提供商包括本地ONNX模型和第三方API输出结果案例成功使用OracleEmbeddings生成了文本嵌入向量展示了Oracle AI Vector Search的嵌入生成能力。案例实现思路本案例的实现基于以下思路统一平台利用Oracle数据库作为统一平台同时处理结构化数据和非结构化数据的向量搜索多种选择提供多种嵌入生成选项包括本地ONNX模型和第三方服务满足不同安全和性能需求企业级集成将向量搜索功能与Oracle数据库的企业级特性无缝集成简化管理通过单一系统管理所有数据减少系统复杂性和维护成本整个实现遵循企业级AI的设计理念将AI功能与成熟的企业数据库技术相结合为用户提供安全、可靠、高性能的向量搜索解决方案。扩展建议功能扩展构建完整的RAG管道结合Oracle数据库的查询功能利用Oracle机器学习功能进行模型训练和优化集成Oracle Spatial和Graph进行空间和图数据搜索使用Oracle Blockchain技术保护向量数据完整性性能优化利用Oracle分区功能优化大规模向量数据管理配置Real Application Clusters提高并发处理能力使用Exadata智能扫描加速向量搜索实施并行SQL处理提高批量嵌入生成效率提示可以参考Oracle AI Vector Search端到端演示指南了解如何构建完整的RAG管道。总结本案例展示了如何使用Oracle AI Vector Search生成文本嵌入向量通过OracleEmbeddings类与LlamaIndex集成。这种方法将AI功能与企业级数据库技术相结合提供了统一、安全、高性能的向量搜索解决方案。关键要点Oracle AI Vector Search允许在单一系统中结合语义搜索和关系搜索支持多种嵌入提供商包括本地ONNX模型和第三方服务向量数据可以受益于Oracle数据库的所有企业级特性通过避免数据碎片化简化了系统架构和管理提供了增强的安全性和性能优化Oracle AI Vector Search为企业AI应用提供了一个强大而全面的平台特别适合需要处理大量结构化和非结构化数据的企业环境。

更多文章