14-Oracle 23ai Vector Search 向量索引和混合索引-实操

news2025/6/8 22:17:07

一、Oracle 23ai支持的2种主要的向量索引类型:

1.1 内存中的邻居图向量索引 (In-Memory Neighbor Graph Vector Index)

HNSW(Hierarchical Navigable Small World :分层可导航小世界)索引 是 Oracle AI Vector Search 中唯一支持的内存邻居图向量索引类型。基于HNSW图算法,通过多层图结构加速搜索。

HNSW索引在23ai版本引入的新的内存结构:向量内存池(Vector Memory Pool)中创建;向量内存池(Vector Memory Pool)位于SGA中,Oracle通过 vector_memory_size参数控制这块内存的大小。Oracle 23 ai free目前的版本需要设置 vector_memory_size后,shutdown immediate ,startup

0. HNSW 索引原理详解
HNSW(Hierarchical Navigable Small World)是一种高效的高维向量近似最近邻搜索算法,其核心思想是通过构建多层图结构来加速相似性搜索。以下是其工作原理的深入解析:
1. 基础概念:小世界网络
  • ​核心特性​:任意两个节点可通过少量边连接(类似社交网络中的"六度空间"理论)
  • ​HNSW 创新点​:将小世界特性分层实现,形成可导航的层级结构
  • 2. 多层图结构构建
    HNSW 构建一个由多层组成的图(Layer 0 到 Layer L):
    ​层级特性​:
    • ​高层​(Layer L):节点稀少,长距离连接(快速导航)
    • ​底层​(Layer 0):包含所有节点,密集连接(精确搜索)
    • ​节点进入规则​:随机分配层级(概率随层级升高指数下降)

3. 搜索流程(查询向量 Q)​​
​顶层导航​(粗粒度):
  • 从最高层随机节点开始
  • 沿"长距离边"快速跳转到目标区域
​逐层细化​:
  • 每下降一层,使用更密集的连接
  • 逐步缩小搜索范围
​底层精确搜索​:
  • 在 Layer 0 执行贪婪遍历
  • 从上层确定的入口点开始
  • 不断跳转到更近的邻居,直到找到局部最优
4. HNSW 高效特性
层级漏斗效应​:
  • 高层快速定位区域(减少 90%+ 搜索量)
  • 底层精确定位目标
小世界特性​:
  • 平均路径长度:O(log N)
  • 聚类系数高(相似节点紧密连接)
动态平衡​:
  • 插入/删除时自动重连最优邻居
  • 保持图的导航性不变
5. Oracle 如何实现HNSW
​内存优化​:
  • 全内存存储(SGA 的向量内存池)
  • 通过 vector_memory_size 控制内存分配
​参数控制​:
CREATE VECTOR INDEX ... PARAMETERS (
  TYPE HNSW,
  NEIGHBORS 64,        -- 每层最大邻居数 (M)
  EFCONSTRUCTION 500   -- 构建候选数
)

1.2 磁盘上的邻居分区矢量索引 (Neighbor Partition Vector Index)

IVF(Inverted File Flat :倒排文件扁平) 索引是一种基于分区的向量索引技术,是 Oracle AI Vector Search 中唯一支持的邻居分区向量索引类型。IVF索引在磁盘上创建,并且和其他数据块一样可以缓存在buffer cache。

0. IVF 索引原理深度解析

IVF(Inverted File Flat)是一种基于空间划分的高效向量索引方法,通过分区聚类技术实现大规模向量数据的快速近似最近邻搜索

1. 空间分区:构建向量空间地图​

 

关键步骤​:
  • 使用 K-means 算法将 N 个向量聚类成 K 个分区(K << N)
  • 每个分区由聚类中心(质心)代表
  • 构建倒排索引:​中心点 → 所属向量列表​

Oracle 参数控制​: 

PARAMETERS (
  TYPE IVF,
  NEIGHBOR PARTITIONS 1000,  -- 分区数K
  SAMPLES_PER_PARTITION 1000 -- 聚类采样数
)

2. 搜索流程:三阶段过滤​ 

 

粗搜索(Coarse Search)​​:
  • 计算查询向量与所有聚类中心的距离
  • 选择距离最近的 M 个分区(M << K)
  • Oracle 优化:使用 VECTOR_IVF_PROBE 提示控制 M 值
​精细搜索(Fine Search)​​:
  • 在选中的 M 个分区内进行线性扫描
  • 计算查询向量与分区内所有向量的距离
​结果合并​:
  • 从 M 个分区中收集候选向量
  • 按距离排序返回 Top-K 结果
4. Oracle 如何实现IVF
​磁盘存储结构​:
智能缓存机制​:
  • 热分区自动缓存在 Buffer Cache
  • 冷分区按需从磁盘加载
  • 通过 DBMS_VECTOR 包预加载:
EXEC DBMS_VECTOR.LOAD_IVF_PARTITIONS('idx_ivf', 50);
动态再平衡 ​:
  • 定期重新计算聚类中心
  • 增量添加新向量时自动调整分区
  • 重建索引维护窗口:
    ALTER INDEX idx_ivf REBUILD 
       PARAMETERS('NEIGHBOR_PARTITIONS 2000');

1.3 Oracle 23ai支持的向量索引的特性:

​向量索引​
  • 加速高维向量的相似性搜索(如欧氏距离、余弦相似度)
  • 两种类型:​HNSW​(内存图结构)和 ​IVF​(磁盘分区结构)
​混合向量索引​
结合向量搜索与文本搜索(如 DBMS_VECTOR_CHAIN 包),支持多模态查询(文本+向量)

1.4 索引选择

在 Oracle 中,HNSW 特别适合需要亚秒级响应的场景(如:实时推荐系统), IVF 更适合超大规模数据集(10亿+向量)。在 Oracle 中处理 >1亿向量时,IVF 相比 HNSW 可降低 5-10 倍内存占用,同时保持 90%+ 召回率。通过调整 NEIGHBOR_PARTITIONS 和 VECTOR_IVF_PROBE 可实现精度与速度的平衡。

二、创建向量索引的实操过程

1. HNSW 索引

实际运行,其中--参数解释:

CREATE VECTOR INDEX idx_hnsw 
  ON fashion_items2 (FEATURES)
  ORGANIZATION INMEMORY NEIGHBOR GRAPH
  DISTANCE COSINE  -- 相似度计算方式(余弦)
  WITH TARGET ACCURACY 95  -- 目标精度%
  PARAMETERS (
    TYPE HNSW,
    NEIGHBORS 64,       -- 每层最大邻居数(1-2048)
    EFCONSTRUCTION 500  -- 构建候选数(1-65535)
  )
  PARALLEL 4;  -- 并行构建
特点​:
  • - 存储在 SGA 的向量内存池(vector_memory_size 控制大小)
  • - 低延迟查询(毫秒级响应)
  • - 适用场景:实时推荐系统、小数据集高速搜索
CREATE VECTOR INDEX idx_hnsw ON fashion_items2 (FEATURES) ORGANIZATION INMEMORY NEIGHBOR GRAPH DISTANCE COSINE WITH TARGET ACCURACY 95
  2    PARAMETERS (
  3      TYPE HNSW,
  4      NEIGHBORS 64,
  5      EFCONSTRUCTION 500
  6    )
  7    PARALLEL 4;

索引已创建。

SYS@FREE> DESC fashion_items2
 名称                                                            是否为空? 类型
 ----------------------------------------------------------------- -------- --------------------------------------------
 ITEM_ID                                                                    NUMBER
 FEATURES                                                                   VECTOR(*, *, DENSE)

SYS@FREE>
特点​:
  • 存储在磁盘(可缓存在 Buffer Cache)
  • 高吞吐量,适合亿级向量
  • 适用场景:大规模图像检索、生物特征库搜索
3. 混合向量索引实操​

结合文本搜索与向量搜索的跨模态查询:

-- 创建包含文本和向量的表
CREATE TABLE hybrid_data (
  id NUMBER PRIMARY KEY,
  description VARCHAR2(4000),
  text_embedding VECTOR,
  image_embedding VECTOR
);

-- 创建文本索引
CREATE INDEX idx_text ON hybrid_data (description) 
  INDEXTYPE IS CTXSYS.CONTEXT;

-- 创建向量索引
CREATE VECTOR INDEX idx_vec ON hybrid_data (image_embedding)
  ORGANIZATION INMEMORY NEIGHBOR GRAPH
  DISTANCE COSINE;

-- 混合搜索:文本匹配 + 图像相似度
SELECT id, description 
FROM hybrid_data
WHERE 
  CONTAINS(description, '自然风光') > 0  -- 文本搜索
  AND VECTOR_DISTANCE(image_embedding, :query_vec, COSINE) < 0.2 -- 向量搜索
ORDER BY SCORE(1) DESC;
SP2-0552: 未声明绑定变量 "QUERY_VEC"。需要设定变量
帮助:https://docs.oracle.com/error-help/db/sp2-0552/
SYS@FREE>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2404629.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web前端基础:JavaScript

1.JS核心语法 1.1 JS引入方式 第一种方式&#xff1a;内部脚本&#xff0c;将JS代码定义在HTML页面中 JavaScript代码必须位于<script></script>标签之间在HTML文档中&#xff0c;可以在任意地方&#xff0c;放置任意数量的<script></script>一般会把…

基于AWS Serverless架构:零运维构建自动化SEO内容生成系统

作者&#xff1a;[Allen] 技术专栏 | 深度解析云原生SEO自动化 在流量为王的时代&#xff0c;持续产出高质量SEO内容成为技术运营的核心痛点。传统方案面临开发成本高、扩展性差、关键词响应滞后三大难题。本文将分享如何用AWS Serverless技术栈&#xff0c;构建一套零服务器运…

电镀机的阳极是什么材质?

知识星球&#xff08;星球名&#xff1a;芯片制造与封测技术社区&#xff0c;点击加入&#xff09;里的学员问&#xff1a;电镀的阳极有什么讲究&#xff1f;什么是可溶性阳极和非可溶性阳极&#xff1f; 什么是可溶性阳极与非可溶性阳极&#xff1f; 可溶性阳极 阳极本身就是…

vscode调试deepspeed的方法之一(无需调整脚本)

现在deepspeed的脚本文件是&#xff1a; # 因为使用 RTX 4000 系列显卡时&#xff0c;不支持通过 P2P 或 IB 实现更快的通信宽带&#xff0c;需要设置以下两个环境变量 # 禁用 NCCL 的 P2P 通信&#xff0c;以避免可能出现的兼容性问题 export NCCL_P2P_DISABLE"1" …

Codeforces Round 509 (Div. 2) C. Coffee Break

题目大意&#xff1a; 给你n、m、d n为元素个数,m为数列长度,d为每个元素之间的最短间隔 问最少需要多少个数列可以使得元素都能装进数列&#xff0c;并且满足每个元素之间的间隔大于等于d 核心思想 使用贪心的思想&#xff0c;将元素的大小进行排序&#xff0c;问题出在必…

榕壹云健身预约系统:多门店管理的数字化解决方案(ThinkPHP+MySQL+UniApp实现)

随着全民健身热潮的兴起&#xff0c;传统健身房在会员管理、课程预约、多门店运营等方面面临诸多挑战。针对这一需求&#xff0c;我们开发了一款基于ThinkPHPMySQLUniApp的榕壹云健身预约系统&#xff0c;为中小型健身机构及连锁品牌提供高效、灵活的数字化管理工具。本文将详细…

QUIC——UDP实现可靠性传输

首先我们要知道TCP存在什么样的痛点问题 TCP的升级很困难TCP建立连接的延迟网络迁移需要重新建立连接TCP存在队头阻塞问题 QUIC就是为了解决以上的问题而诞生了, 下面我会介绍QUIC的一些特性和原理 QUIC对比TCP优势: 握手建连更快 QUIC内部包含了TLS, 它在自己的帧会携带TL…

快速上手shell脚本运行流程控制

一、条件运行流程控制 1.if单分支结构 #!/bin/bash if [ 条件 ] then动作1动作2... fi 2.if双分支结构 ​ #!/bin/bash if [ 条件 ] then动作1动作2... else动作1动作2... fi​ 3.if多分支结构 二、循环运行流程控制 1.无判定for循环 给网卡一键添加5个IP 2.判断循环 while…

10.Linux进程信号

1. 理解信号 信号VS信号量 老婆&#xff1a;老婆饼-》没有任何关系&#xff01;信号&#xff1a;闹钟&#xff0c;上课铃声&#xff0c;脸色...人-》进程&#xff1b;信号中断人正在做的事&#xff0c;是一种事件的异步通知机制&#xff1b; 我们自习一会&#xff0c;等张三回…

机器学习基础(四) 决策树

决策树简介 决策树结构&#xff1a; 决策树是一种树形结构&#xff0c;树中每个内部节点表示一个特征上的判断&#xff0c;每个分支代表一个判断结果的输出&#xff0c;每个叶子节点代表一种分类结果 决策树构建过程&#xff08;三要素&#xff09;&#xff1a; 特征选择 选…

CentOS 7如何编译安装升级gcc至7.5版本?

CentOS 7如何编译安装升级gcc版本? 由于配置CentOS-SCLo-scl.repo与CentOS-SCLo-scl-rh.repo后执行yum install -y devtoolset-7安装总是异常&#xff0c;遂决定编译安装gcc7.5 # 备份之前的yum .repo文件至 /tmp/repo_bak 目录 mkdir -p /tmp/repo_bak && cd /etc…

为什么React列表项需要key?(React key)(稳定的唯一标识key有助于React虚拟DOM优化重绘大型列表)

文章目录 1. **帮助 React 识别列表项的变化**2. **性能优化**3. **避免组件状态混乱**4. **为什么使用 rpid 作为 key**5. **不好的做法示例**6. **✅ 正确的做法** 在 React 中添加 key{item.rpid} 是非常重要的&#xff0c;主要有以下几个原因&#xff1a; 1. 帮助 React 识…

飞牛云一键设置动态域名+ipv6内网直通访问内网的ssh服务-家庭云计算专家

IPv6访问SSH的难点与优势并存。难点主要体现在网络环境支持不足&#xff1a;部分ISP未完全适配IPv6协议&#xff0c;导致客户端无法直接连通&#xff1b;老旧设备或工具&#xff08;如Docker、GitHub&#xff09;需额外配置才能兼容IPv6&#xff0c;技术门槛较高&#xff1b;若…

Java高级 | 【实验七】Springboot 过滤器和拦截器

隶属文章&#xff1a;Java高级 | &#xff08;二十二&#xff09;Java常用类库-CSDN博客 系列文章&#xff1a;Java高级 | 【实验一】Springboot安装及测试 |最新-CSDN博客 Java高级 | 【实验二】Springboot 控制器类相关注解知识-CSDN博客 Java高级 | 【实验三】Springboot 静…

深入理解 Spring IOC:从概念到实践

目录 一、引言 二、什么是 IOC&#xff1f; 2.1 控制反转的本质 2.2 类比理解 三、Spring IOC 的核心组件 3.1 IOC 容器的分类 3.2 Bean 的生命周期 四、依赖注入&#xff08;DI&#xff09;的三种方式 4.1 构造器注入 4.2 Setter 方法注入 4.3 注解注入&#xff08;…

行为设计模式之Command (命令)

行为设计模式之Command &#xff08;命令&#xff09; 前言&#xff1a; 需要发出请求的对象&#xff08;调用者&#xff09;和接收并执行请求的对象&#xff08;执行者&#xff09;之间没有直接依赖关系时。比如遥控器 每个按钮绑定一个command对象&#xff0c;这个Command对…

NeRF 技术深度解析:原理、局限与前沿应用探索(AI+3D 产品经理笔记 S2E04)

引言&#xff1a;光影的魔法师——神经辐射场概览 在前三篇笔记中&#xff0c;我们逐步揭开了 AI 生成 3D 技术的面纱&#xff1a;从宏观的驱动力与价值&#xff08;S2E01&#xff09;&#xff0c;到主流技术流派的辨析&#xff08;S2E02&#xff09;&#xff0c;再到实用工具的…

法律大语言模型(Legal LLM)技术架构

目录 摘要 1 法律AI大模型技术架构 1.1 核心架构分层 1.2 法律知识增强机制 2 关键技术突破与对比 2.1 法律专用组件创新 2.2 性能对比(合同审查场景) 3 开发部署实战指南 3.1 环境搭建流程 3.2 合同审查代码示例 4 行业应用与挑战 4.1 典型场景效能提升 4.2 关…

第六十二节:深度学习-加载 TensorFlow/PyTorch/Caffe 模型

在计算机视觉领域,OpenCV的DNN(深度神经网络)模块正逐渐成为轻量级模型部署的利器。本文将深入探讨如何利用OpenCV加载和运行三大主流框架(TensorFlow、PyTorch、Caffe)训练的模型,并提供完整的代码实现和优化技巧。 一、OpenCV DNN模块的核心优势 OpenCV的DNN模块自3.3…

MobaXterm配置跳转登录堡垒机

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 背景操作步骤 背景 主要是为了能通过MobaXterm登录堡垒机&#xff0c;其中需要另外一台服务器进行跳转登录 操作步骤 MobaXterm登录堡垒机的操作&#xff0c;需…