向量检索的核心是在高维空间中快速找到与目标向量相似的向量,而索引则是实现这一目标的关键。Oracle 23ai 原生向量引擎针对不同场景,提供了两种主流的向量索引:HNSW 索引与IVF-Flat 索引。
1. HNSW 索引:分层可导航小世界索引 —— 高召回率的首选
- 原理:
HNSW(Hierarchical Navigable Small World)是基于 “小世界理论” 的图索引结构,核心是构建多层级的向量图:
顶层:少量高维向量节点,作为 “导航入口”,覆盖整个向量空间;
底层:所有向量节点,通过边连接相似向量;
中间层:过渡层级,平衡顶层的粗检索与底层的精检索。
检索时,从顶层入口节点出发,逐层向下导航,快速缩小检索范围,最终在底层找到相似向量。这种 “从粗到精” 的检索方式,大幅减少了向量距离计算的次数。 - 核心优势:
高召回率:几乎能检索到所有相似向量,无漏检问题;
低延迟:亿级向量数据检索响应时间可控制在 10ms 内;
支持动态插入 / 删除:向量数据新增 / 删除时,索引可快速更新,适配实时数据场景。 - 适用场景:
对检索准确率要求高、数据实时更新的场景,如智能客服语义检索、个性化推荐、相似文本查询。
创建示例:-- 为商品表的描述向量创建HNSW索引 CREATE INDEX idx_products_hnsw ON products USING VECTOR HNSW (description_emb VECTOR_COSINE_DISTANCE) WITH (DIMENSIONS=1536, M=16, EF_CONSTRUCTION=200);M:每个节点的最大边数,值越大索引精度越高但存储开销越大;
EF_CONSTRUCTION:索引构建时的候选集大小,值越大索引质量越好但构建耗时越长。2. IVF-Flat 索引:倒排文件 + 扁平向量索引 —— 海量数据的高效之选
- 原理:
IVF-Flat(Inverted File with Flat)是基于 “聚类” 的索引结构,核心分为两步:
索引构建阶段:通过聚类算法(如 K-Means)将所有向量划分为多个 “聚类中心”,每个向量归属到最近的聚类中心,形成 “倒排文件”(记录每个聚类包含的向量);
检索阶段:先计算目标向量与各聚类中心的距离,筛选出 Top-N 个相似聚类,再在这些聚类中逐一计算向量距离,找到最终相似向量。 - 核心优势:
海量数据适配:支持十亿级向量数据存储与检索,存储与计算开销远低于 HNSW;
高吞吐量:批量检索场景下性能更优,适合大数据量的离线分析。 - 适用场景:
数据量超亿级、对检索速度要求高于召回率的场景,如医疗影像相似病例检索、工业传感器时序向量检索、大规模日志向量分析。
创建示例:-- 为医疗影像表的影像向量创建IVF-Flat索引 CREATE INDEX idx_medical_images_ivf ON medical_images USING VECTOR IVF (image_emb VECTOR_EUCLIDEAN_DISTANCE) WITH (DIMENSIONS=512, NUM_CLUSTERS=1024);NUM_CLUSTERS:聚类中心数量,通常建议为向量总数的 1/1000~1/100,平衡检索速度与准确率。
- 总结:技术拆解背后的落地逻辑
VECTOR 数据类型解决了向量 “存得下、算得动” 的问题,而 HNSW 与 IVF-Flat 索引则解决了向量 “查得快” 的问题。开发者可根据自身业务场景的数据量、召回率要求、实时性需求,灵活选择索引类型,无需在性能与成本之间妥协。