概述

在数据量爆炸式增长的今天,单纯的关键词搜索或语义向量搜索已难以满足复杂场景的精准检索需求。Oracle 的混合向量索引(Hybrid Vector Index)创新性地整合了 Oracle Text 全文搜索与 Oracle AI 向量搜索的核心能力,让开发者能同时实现关键词匹配与语义理解的双重检索,大幅提升信息检索的相关性和全面性。本文将从核心概念、适用场景、核心优势、实战案例、创建流程和维护操作六个维度,带大家全面掌握混合向量索引的应用。

一、什么是混合向量索引?

混合向量索引是 Oracle Text 的专用域索引(Domain Index),核心是将 Oracle Text 的文本索引数据结构与 Oracle AI 向量搜索的向量索引数据结构整合为统一结构。

它的核心特性的是:

  • 单索引存储双字段:一个索引同时包含文档的文本字段(用于关键词搜索)和向量字段(用于语义搜索);
  • 支持组合查询:允许同时执行关键词搜索与向量搜索,结果会自动合并并评分,返回统一结果集;
  • 兼容多种评分技术:支持现成及自定义的评分逻辑,灵活适配不同场景的检索需求。

简单来说,它既保留了关键词搜索对精确术语的匹配能力,又具备了向量搜索对文本语义和上下文的理解能力,让检索结果更精准、更全面。

二、什么时候该用混合向量索引?

当你的查询场景同时满足 “需要语义相似性” 和 “限定特定领域 / 条件” 时,混合向量索引就是最优解。典型示例:“查找 ABC 公司相关的十大股票欺诈案例”。

这类查询包含两个核心诉求,而纯关键词搜索和纯向量搜索都存在明显局限:

检索方式 核心能力 局限性
纯关键词搜索 精确匹配分词后的术语 忽略语义关联,未出现精确术语时会遗漏结果
纯向量搜索 理解文本语义与上下文 范围过宽,难以精准限定特定条件(如特定公司、日期)

混合向量索引则能同时处理两个诉求:对同一数据执行关键词搜索(限定 “ABC 公司”)和向量搜索(匹配 “股票欺诈” 语义),再合并结果,既保证相关性又不遗漏关键条件。

三、为什么选择混合向量索引?

相较于单一检索方式或独立维护两类索引,混合向量索引有三大核心优势:

1. 召回率更高,结果更精准

融合了 Oracle Text 的关键词匹配能力与 Oracle AI 向量搜索的语义理解能力,解决了单一检索方式的局限性。在复杂场景中,能有效减少无关结果,精准命中同时满足 “精确条件” 和 “语义相似” 的目标数据。

2. 缓解分块(Chunking)带来的弊端

向量嵌入模型对输入文本长度有上限,长文档需拆分为小块才能生成向量,这会导致原始文档上下文丢失。混合向量索引通过 “文档级文本搜索 + 分块级向量搜索” 的组合,能恢复文档完整上下文,避免检索遗漏。

3. 部署管理更简便,支持统一查询 API

  • 单一索引维护双数据:作为独立域索引,通过 DML 可同时维护文本和向量数据,无需单独管理两类索引;
  • 自动化索引流水线:自动将输入数据转换为适配两种搜索的格式,无需手动处理数据转换;
  • 统一 SEARCH API:通过DBMS_HYBRID_VECTOR PL/SQL 包,可在纯关键词、纯向量、混合模式间灵活切换。

基础 DDL 示例(最低输入要求):

CREATE HYBRID VECTOR INDEX my_hybrid_idx 
ON DOCS(file_name)   
PARAMETERS ('MODEL MY_INDB_MODEL'); -- 库内ONNX格式嵌入模型

统一查询 API 示例(对应 “ABC 公司股票欺诈” 场景):

select DBMS_HYBRID_VECTOR.SEARCH(
    json('{ 
            "hybrid_index_name" : "my_hybrid_idx", -- 索引名
            "vector": { "search_text" : "stock fraud" }, -- 向量搜索(语义匹配)
            "text"  : { "contains"    : "$ABC AND $Corporation" }, -- 关键词搜索(限定公司)
            "return": { "topN"        : 10 } -- 返回Top10结果
          }')) 
from dual;

四、混合向量索引的实战场景示例

混合向量索引的灵活性使其适配多个行业的核心场景,以下是典型落地案例:

1. 欺诈检测

  • 核心需求:识别语义相似但不完全匹配已知模式的欺诈交易;
  • 实现方式:关键词 / 规则筛选(如 “金额> 10 万”“异地交易”)+ 向量搜索(对比交易嵌入向量,捕捉交易时间、商户类型等特征),精准识别隐性欺诈模式。

2. 法律文档分析

  • 核心需求:在海量法律文档中快速定位 “语义相似 + 包含特定术语” 的案例;
  • 实现方式:
    • 方式 1:关键词筛选(如 “合同法”“违约责任”)→ 向量搜索(语义匹配目标案例);
    • 方式 2:向量搜索(语义相似案例)→ 关键词筛选(含特定法规编号、引用内容)。

3. 医学文档分析

  • 核心需求:在专业医学文献中定位 “相关领域 + 关键术语 / 参考文献” 的论文;
  • 实现方式:
    • 关键词搜索(快速定位含 “肺癌靶向治疗” 等术语的文档);
    • 向量搜索(定位肺癌研究领域的相关论文);
    • 组合方式:向量搜索(初步筛选领域相关论文)→ 关键词筛选(含特定参考文献、医学指标)。

4. 人力资源招聘

  • 核心需求:筛选 “技术达标 + 软技能匹配” 的候选人;
  • 实现方式:关键词筛选(“Java”“MySQL” 等技术技能)→ 向量搜索(匹配 “团队合作”“领导经验” 等软技能语义),高效完成双重维度筛选。

五、混合向量索引创建概述

创建混合向量索引无需复杂配置,核心是指定 “索引对象” 和 “关键参数”,剩余流程由 Oracle 自动完成。

1. 核心配置项

创建时需指定的关键信息:

  • 索引目标:要创建索引的表和列(支持VARCHAR2CLOBBLOB类型);
  • 数据存储:源文档的存储位置(本地 / 远程,通过数据存储偏好设置指定);
  • 嵌入模型:用于生成向量的库内 ONNX 格式模型;
  • 可选参数:向量索引类型(如 IVF、HNSW)、文本处理参数(分词器、停用词表等)。

2. 索引流水线流程

混合向量索引的创建过程是自动化的流水线处理,核心步骤如下:

  1. 读取文档:从指定数据存储(如 MY_DS)读取源文档;
  2. 数据预处理:
    • 过滤器:将 PDF、Word 等二进制文档转换为纯文本;
    • 分词器:对文本分词,用于关键词搜索;
    • 向量化器:拆分长文档为分块,生成嵌入向量,用于语义搜索;
  3. 索引构建:创建二级表存储索引数据,最终形成混合向量索引。

3. 核心二级表

创建后会自动生成两类关键二级表,用于支撑双重检索:

  • $I 表:与 Oracle Text 索引结构一致,存储分词术语的倒排索引数据,支撑关键词搜索;
  • $VR 表:存储文档分块及对应嵌入向量,支撑向量搜索,同时通过 ROWID 和 DOCID 关联原始文档,实现结果合并。

六、混合向量索引维护操作

混合向量索引完全兼容 Oracle Text 索引的传统维护操作,核心支持以下功能:

  • 自动 / 手动维护:MAINTENANCE AUTO(后台自动同步 DML 操作)或MAINTENANCE MANUAL(手动控制同步);
  • 同步操作:SYNC(支持手动、定时自动、提交后立即同步三种模式);
  • 优化操作:OPTIMIZE(支持手动、每日自动、定时自动优化,提升检索性能)。

详细的维护参数配置和操作示例,可参考 Oracle 官方文档《混合向量索引的指导原则与限制》。

总结

混合向量索引的核心价值是 “融合”—— 既解决了纯关键词搜索的语义缺失问题,又弥补了纯向量搜索的精准度不足,同时简化了索引的部署和管理。无论是欺诈检测、法律 / 医学文档分析,还是人力资源招聘,只要涉及 “精确条件 + 语义相似” 的双重检索需求,它都是高效且可靠的选择。

如果需要针对具体场景(如法律文档分析)生成完整的索引创建、查询 SQL 脚本,或者想了解更多参数配置细节,欢迎在评论区留言交流!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐