向量是文本、图像、音频或视频的数学表示形式,用于对数据(而不是实际内容,例如基础单词或像素)进行特征或语义编码。向量由一系列数值(称为维度)组成,可用于人工智能 (AI) 操作。
向量是由深度学习模型(称为“嵌入模型”)基于各种类型的输入数据(文本、图像、音频、视频及其他数据)创建的。您可以使用嵌入模型、嵌入服务在数据库外创建向量,或者通过 VECTOR_EMBEDDING() SQL 函数使用 ONNX 嵌入模型在数据库内创建向量。
Oracle AI Vector Search 支持 BINARY、INT8、Float32 和 Float64 格式。
Oracle AI Vector Search 支持多达 65535 个向量维度。
一个向量的大小取决于其维度的数量和每个维度的大小。
例如,具有 2048 个维度且采用 INT8(1 字节)格式的向量,其大小为 2 KB;而具有 1024 个维度且采用 FLOAT32(4 字节)格式的向量,其大小为 4 KB。
Oracle AI Vector Search 支持稀疏向量,这类向量通常具有多个维度,但其中仅有少数维度为非零值。对于某个文档,向量中非零维度的数值对应于该文档中出现的关键词(及其变体)。
Oracle AI Vector Search 支持所有可基于其所支持维度格式生成向量(多达 65535 个维度)的有效的嵌入模型。
嵌入模型的选择取决于很多因素,例如数据的性质、性能指标、成本等等。您可以前往 Hugging Face 或类似站点获取免费的开源嵌入模型,例如各种句子转换器。这些模型可转换为 ONNX 格式,通过 Oracle AI Vector Search 在数据库中生成嵌入。Hugging Face 托管的 MTEB Leaderboard 提供出色的文本嵌入模型,这也是一个常用的模型来源。您还可以通过一些成熟的提供商获取模型,例如 OpenAI 和 Cohere。
AI Vector Search 支持从所有嵌入模型生成的向量,无论模型是用于文本、图像、音频、视频还是其他数据。Oracle AI Database 还包含 ONNX 预编译的嵌入模型,可用于通过 AI Vector Search 执行基于图像的距离操作。
向量支持多个数学操作。其中一个关键操作是 VECTOR_DISTANCE() SQL 函数,该函数根据所选距离公式查找两个向量之间的数学距离。Oracle AI Vector Search 支持多个距离公式,包括 Euclidean、Euclidean Squared、Cosine Similarity、Dot Product、Manhattan、Jaccard 和 Hamming。距离函数的选择通常取决于用于生成向量的嵌入模型。然而,在 Oracle AI Database 26ai 中,默认的距离度量是 Cosine Similarity。
所有向量都具有一个特点:两个实体越相似,相应向量之间的数学距离越短。例如,“苹果”向量和“橙子”向量之间的数学距离就比“苹果”向量与“狗”向量之间的数学距离短。基于这一特点,向量可用于按语义相似度搜索数据。
您可以使用简单、直观的 SQL 扩展来轻松将 Oracle AI Vector Search 纳入您的应用。由于向量距离是一种相似度度量,Oracle AI Vector Search 可以按照与所搜索向量的距离来对一组候选向量排序,返回前 K 个最匹配项。例如,以下查询能够查找出照片最接近用户所搜索图片的 10 项产品:
SELECT product_name, product_photo
FROM product
ORDER BY VECTOR_DISTANCE(product_photo_vector, :search_photo_vector)
FETCH FIRST 10 ROWS ONLY;
AI Vector Search 可用于涉及筛选器、联接、聚合、分组依据和其他元素的复杂查询。例如,我们可以使用以下查询,根据用户上传的照片,查找在加利福尼亚生产的前 10 个匹配产品。
SELECT p.name, p.photo, m.name
FROM product p
JOIN manufacturer m ON (p.mfr_id = m.id)
WHERE m.state = 'CA'
ORDER BY VECTOR_DISTANCE(product_photo_vector, :search_photo_vector)
FETCH FIRST 10 ROWS ONLY;
传统数据库索引用于加快基于匹配数值进行的搜索速度。例如,B 树索引能够加快基于值的查找和范围扫描速度。向量索引则旨在基于语义相似度(而不是通过精确匹配值)查找前 K 个最相似匹配项。向量索引可用于从一个现有词汇语料库中查找与“苹果”意义最相似的前 K 个词汇。基于向量索引的搜索是近似搜索,它不检验一个列中的每一个向量条目,支持牺牲一定的搜索准确性来换取最高达 100 倍的性能。
内存中相邻图形向量索引是基于图形的内存驻留索引。图形的顶点表示向量,顶点之间的边表示向量之间的相似性。Oracle AI Vector Search 支持 Hierarchical Navigable Small World (HNSW) 类型的内存中相邻图形向量索引。HNSW 索引借鉴了小世界网络和分层组织的原理,在相似性搜索中实现了更高的速度和精度。
Oracle AI Vector Search 支持 Inverted File Flat (IVF) 类型的相邻分区向量索引。相邻节点分区向量索引是一种基于磁盘的向量索引,通过将相似的向量聚类到不同的表分区中。这类索引提供高效的横向扩展能力,并支持快速且无缝的事务处理操作,能够在保持高质量搜索的同时实现合理的查询速度。由于不依赖内存,相邻分区向量索引可支持任意规模的数据。
混合向量索引是一种新型向量索引,允许用户结合全文搜索与语义向量搜索对文档轻松进行索引和查询,以获得更高质量的搜索结果。混合向量索引支持统一的查询 API,用户可以执行文本查询或向量相似度查询,或同时利用这两种方式的混合查询。
除了 SQL 和 PL/SQL,您还可以使用各种编程语言来构建 Oracle AI Vector Search 应用。对于 Java、Python、JavaScript 和 C# 等流行语言,Oracle AI Vector Search 都提供了原生驱动程序支持。
AI Vector Search 通常是检索增强生成 (RAG) 工作流的一部分。该解决方案提供了微调生成式 AI 大语言模型 (LLM) 响应所需的额外输入。
当 AI Vector Search 与 RAG 工作流结合使用时,用户问题将首先被转换为向量,然后通过 Oracle AI Vector Search 映射到数据库中相关性最高的文档。随后,用户问题和相关文档将被传输至 LLM,由 LLM 基于其自有的一般知识和来自向量存储的专门知识,生成适当的答案。
AI Vector Search 可用于任何 LLM 的 RAG,包括开源模型(例如 Llama3 和 Mistral)以及来自 OpenAI 和 Cohere 等提供商的专有模型。此外,专有 PL/SQL API 可在 AI Vector Search 和 RAG 的 LLM 之间无缝集成。
AI Vector Search 与 LangChain 和 LlamaIndex 集成。这些框架可以帮助集成大语言模型应用的私有和公共数据。
检索增强生成 (RAG) 在生成式 AI (GenAI) 中发挥着关键作用,为生成式 AI 应用提供了显著优势。以下是将 RAG 集成到您的生成式 AI 方案中的三个重要理由:
Oracle 广泛的可扩展性机制,例如 Parallel Execution、Partitioning、Real Application Clusters (Oracle RAC)、Sharding 和 Exadata,这些机制能够将 AI Vector Search 扩展到几乎任意规模的数据量和用户数。
Oracle 广泛的可扩展性机制,例如 Parallel Execution、Partitioning、Oracle Real Application Clusters (Oracle RAC)、Sharding 和 Exadata,这些机制能够将 AI Vector Search 扩展到几乎任意规模的数据量和用户数。Oracle Exadata 还包含 AI Smart Scan,它将 AI Vector Search 查询操作卸载到 Exadata Storage Servers,以实现出色的查询性能。
Oracle AI Vector Search 与 Oracle 出色的数据库安全功能无缝集成,可降低风险并简化合规性。通过使用强大的工具(例如加密、数据屏蔽、特权用户访问控制、活动监控和审计),企业可以保护向量数据,同时充分利用高级 AI 搜索功能。Database Vault 和 Virtual Private Database 等数据库内功能可帮助保护向量数据,并确保只有具有相应权限的用户才能访问。
这意味着 Oracle AI Vector Search 能大幅减少企业向量基础设施的占用。单个 Oracle AI Database 可满足众多不同用户在访问权限和授权方面的需求,无需像其他向量数据库一样复制数据或增加额外的管理负担。
向量在 Oracle AI Database 中属于一级数据库数据类型。这意味着向量自动继承了 Oracle 作为企业级数据库的众多创新特性与能力。通过在 Oracle RAC 或 Oracle Globally Distributed Database (Sharding) 上运行相似性搜索以实现 High Availability (HA)。Data Guard、Active Data Guard 以及 Oracle GoldenGate 也能自动提供灾难恢复能力。
注:为免疑义,本网页所用以下术语专指以下含义: