向量是文本、图像、音频或视频的数字表示形式,用于对数据(而不是实际内容,例如基础单词或像素)进行特征/语义编码。一个向量就是按照一种特定格式排列的一列数值(称为“维度”)。
Oracle AI Vector Search 支持多达 65535 个向量维度。
Oracle AI Vector Search 支持 INT8、Float32 和 Float64 格式。
一个向量的大小取决于其维度的数量和每个维度的大小。
例如,一个具有 2048 个维度,采用 INT8(1 个字节)格式的向量的大小是 2 KB。一个具有 1024 个维度,采用 Float32(4 个字节)格式的向量的大小是 4 KB。
向量是由深度学习模型(称为“嵌入模型”)基于各种类型的输入数据(文本、图像、音频、视频等)创建的。您可以在数据库外,使用您自己的嵌入模型或嵌入服务来创建向量,也可以在数据库内,使用通过 VECTOR_EMBEDDING() SQL 函数导入的嵌入模型创建向量。
Oracle AI Vector Search 支持所有可基于其所支持格式生成向量(最多 65535 个维度)的有效的嵌入模型。
嵌入模型的选择取决于很多因素,例如数据的性质、性能指标、成本等等。您可以前往 Hugging Face 或类似站点获取免费的开源嵌入模型,例如各种句子转换器。这些模型可转换为 ONNX 格式,通过 Oracle AI Vector Search 在数据库中使用。另外,Hugging Face 托管的 MTEB Leaderboard 提供出色的文本嵌入模型,也是一个常用的模型来源。您还可以通过一些成熟的提供商获取模型,例如 OpenAI 和 Cohere。
您可以对向量执行很多数学运算,但最重要的运算是 VECTOR_DISTANCE() SQL 函数,它可以基于所选择的距离公式计算两个向量之间的数学距离。Oracle AI Vector Search 支持多种距离公式,包括欧式距离、余弦相似度和汉明距离。距离函数的选择通常取决于用于生成向量的嵌入模型。
所有类型的向量都具有一个特点:两个实体越相似,相应向量之间的数学距离越短。例如,“苹果”向量和“橙子”向量之间的数学距离就比“苹果”向量与“狗”向量之间的数学距离短。基于这一特点,向量可用于按语义相似度搜索数据。
您可以使用简单、直观的 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;
Oracle AI Vector Search 可执行涉及过滤器、联接、聚合、组等的复杂查询。例如,以下查询能够按产品图片查找前 10 项最匹配的美国加州制造产品。
SELECT Product.name, Product.photo, Manufacturer.name
FROM Product p JOIN Manufacturer m ON (p.mfr_id = m.id)
WHERE Manufacturer.state = ‘CA’
ORDER BY VECTOR_DISTANCE(product_photo_vector, :search_photo_vector)
FETCH FIRST 10 ROWS ONLY;
传统数据库索引用于加快基于匹配数值进行的搜索速度。例如,B 树索引能够加快基于值的查找和范围扫描速度。向量索引则旨在基于语义相似度(而不是通过精确匹配值)查找前 K 个最相似匹配项。例如,可使用向量索引从一个现有词汇语料库中查找与“苹果”意义最相似的前 K 个词汇。基于向量索引的搜索是近似搜索,它不检验一个列中的每一个向量,支持牺牲一定的搜索准确性来换取最高达 100 倍的性能。
除了 SQL 和 PL/SQL,您还可以使用各种编程语言来构建 Oracle AI Vector Search 应用。对于 Java、Python、JavaScript 和 C# 等流行语言,Oracle AI Vector Search 都提供了原生驱动程序支持。
Oracle AI Vector Search 可用于众所周知的检索增强生成 (RAG) 工作流,增强基于 GenAI 大语言模型 (LLM) 的自然语言对话的准确性与上下文相关性。在 RAG 工作流中,用户问题将首先被转换为向量,然后通过 Oracle AI Vector Search 映射到数据库中相关性最高的文档。随后,用户问题和相关文档将被传输至 LLM,由 LLM 基于其自有的一般知识和来自向量存储的专门知识,生成适当的答案。
Oracle AI Vector Search 支持 Llama2 和 Llama3 等开源 LLM,还支持来自 OpenAI 和 Cohere 等提供商的 LLM。
Oracle AI Vector Search 已与 LangChain 集成。LangChain 是一个流行的开源框架,可用于构建基于 RAG 的解决方案。
Oracle 提供广泛的可扩展性机制,例如并行执行、分区、RAC、分片和 Exadata。您可以使用所有这些机制来扩展 Oracle AI Vector Search,满足几乎任意规模的数据和任意数量的用户的需求。
注:为免疑义,本网页所用以下术语专指以下含义: