通过OpenSearch向量检索版进行混合检索的最佳实践

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
推荐全链路深度定制开发平台,高级版 1个月
OpenSearch LLM智能问答版免费试用套餐,存储1GB首月+计算资源100CU
简介: 本文介绍如何通过OpenSearch向量检索版,使用稀疏-稠密向量进行混合检索,获得更好的搜索效果。

1.背景介绍


1.1OpenSearch 向量检索版的混合搜索

混合搜索的方式能帮助文本数据搜索,将语义搜索与关键词搜索相结合,获得更好的效果。

在向量检索版中,您可以使用稀疏-稠密向量进行混合检索。对比传统的文本 + 向量多路召回,向量检索版中的稀疏-稠密向量是将稠密向量和稀疏向量嵌入组合为单个向量,而其中的稀疏向量是将文本向量化成稀疏向量,稠密向量是传统的向量。稀疏向量和稠密向量代表不同类型的信息并支持不同类型的搜索。

通过OpenSearch-向量检索版进行混合搜索的步骤如下:

  1. 通过外部的稠密向量模型生成稠密向量
  2. 通过外部的稀疏向量模型生成稀疏向量
  3. 购买OpenSearch-向量检索版实例,并配置稀疏-稠密向量索引
  4. 将稠密向量和稀疏向量更新到OpenSearch-向量检索版实例的索引中
  5. 使用稀疏-稠密向量索引搜索
  6. OpenSearch-向量检索版实例返回相应搜索到的数据

1.2稠密向量(Dense vectors)

向量检索版中基本的向量类型是稠密向量,稠密向量使得语义搜索成为可能,语义搜索根据特定的距离度量返回最相似的结果,即使没有完全匹配的项也可以。传统的文本搜索是将query和doc内容根据一定的分词规则进行分词,在检索时对query分词后的term与doc分词后的term进行匹配,只有完全匹配时query才能将doc进行召回,

而语义搜索则没有文本搜索的限制,只要语义相近通过向量就能将其召回。

1.3稀疏向量(Sparse vectors)

稀疏向量具有非常大的维度数,其中只有很小一部分的值为非零。当用于关键词搜索时,每个稀疏向量表示一个文档;维度表示来自字典的单词,值表示这些单词在文档中的重要性。关键字搜索算法根据关键字匹配的数量、频率和其他因素来计算文本文档的相关性。

稀疏向量的表示

V=[0,0,0,0,2,0,4,0,0,0]

对于向量V,其稀疏表示为(10,[4,6],[2,4])

10代表V的长度,[4,6] 表示非零元素的下标,[2,4]表示非零元素的值。

通过稀疏模型将文本向量化,比如文本内容为“OpenSearch-向量检索”稀疏向量化之后:

{"indices": [102, 16, 18, ...], "values": [0.21, 0.11, 0.15, ]}

其中indices表示稀疏向量下标(向量数组中有值的位置下标)

values表示稀疏向量

您可以通过以下脚本生成稀疏向量:(稠密向量需要通过其他向量模型生成)

ha3_vector_sparse_encoder.zip

也可以直接下载已经生成好的测试数据:

dense_spares_data.txt

其中:pk(主键)、content(文本内容)、dense_vector(1536维的稠密向量)、subscript(稀疏向量下标) 、sparse_vector(稀疏向量)。


2.配置实例


完成OpenSearch向量检索版实例购买在详情页中,新购买的实例状态为“待配置”,并且会自动部署一个与购买的查询节点和数据节点的个数及规格一致的引擎,之后需要为该实例配置表信息>数据同步>字段配置>索引结构,之后等待索引重建完成即可正常搜索。

1. 表基础信息

表管理点击“表添加",输入表名称,设置数据分片数数据更新资源数,场景模板选择:向量:文本语义搜索,并选择稠密&稀疏向量混合检索

配置说明

  • 表名称:可自定义。
  • 数据分片数:分片数设置时,各索引表分片数需保持一致;或至少一个索引表分片数为1,其余索引表分片数一致。
  • 数据更新资源数:数据更新所用资源数,每个索引默认免费提供2个4核8G的更新资源,超出免费额度的资源将产生费用。

2. 数据同步

配置数据源(目前支持的数据源有OSS数据源、MaxCompute数据源和API推送数据源),这里以MaxCompute数据源为例,数据源类型选择MaxCompute,设置Project、AccesskeyID、AccesskeySecret、Table、分组键partition、时间戳,可按需选择是否开启“自动索引重建”选择完成之后可选择校验,通过后可点击下一步:

3. 字段配置

稠密&稀疏向量混合检索场景需要配置如下字段:主键(id)、稠密向量(vector)、稀疏向量(sparse_values)、稀疏向量下标数组(sparse_indices):

字段配置说明:

  • 必选字段:主键字段和向量字段,主键字段为int或string类型并且需要勾选主键按钮,向量字段为float类型并且需要勾选向量字段按钮;
  • 向量字段为必选字段,可多选,该字段为向量数据,校验字段类型为多值FLOAT。
  • 稀疏向量进行混合检索,请成对配置稀疏向量下标字段(多值int32类型)与稀疏向量值字段(多值float类型)。
  • 使用向量检索,在定义字段时有位置要求,需要按照主键字段、命名空间字段(非必要)、向量字段的顺序创建。(如上图所示)

4. 索引结构

配置混合索引,混合索引选择“开启”,包含字段中配置主键、向量字段、稀疏向量下标、稀疏向量值:

配置说明

  • 索引名称:必填,可自定义
  • 混合检索:选择开启
  • 混合检索开启时:需要再配置稀疏向量下标、稀疏向量值
  • 向量维度:配置稠密向量维度
  • 开启混合检索,默认距离类型为InnerProduct,向量索引算法为HNSW,不支持修改
  • 高级配置,向量索引需要单独配置参数,详情可参考向量索引通用配置

说明

若使用本文中的测试数据,请将向量维度设置为1536

5. 确认创建

索引配置完成后,点击确认创建

6. 变更历史

实例管理-变更历史-数据源变更,可以看到创建表及新增索引及索引重建的所有FSM,全部完成之后引擎搭建完成,可以开始查询测试:

7. 查询测试

{
    "tableName": "dense_sparse_tb",
    "indexName": "vector",
    "vector": [
        0.1,
        0.2,
        0.3,
        0.4,
        0.5
    ],
    "sparseData": {
        "indices": [
            0,
            2
        ],
        "values": [
            1.2,
            2.4
        ]
    },
    "topK": 2,
    "order": "DESC"
}
  • tableName:表名
  • indexName:本例中为vector
  • vector:稠密向量
  • sparseData:稀疏向量
  • indices:稀疏向量下标
  • values:稀疏向量值
  • topK:取topK个结果
  • order:排序策略,DESC为倒序


效果演示

相关实践学习
基于OpenSearch搭建高质量商品搜索服务
本场景主要介绍开放搜索(OpenSearch)打造独有的电商行业垂直解决方案,模板内置电商查询分析、排序表达式及行业算法能力,沉浸式体验更高性能和效果的智能搜索服务,助力企业在线业务智能增长。
相关文章
|
自然语言处理 分布式计算 Java
基于OpenSearch向量检索版和智能问答版搭建企业专属对话搜索系统
本文将介绍如何使用OpenSearch向量检索版和智能问答版,搭建灵活自定义的企业专属对话搜索系统。
2002 1
|
7月前
|
数据采集 SQL 自然语言处理
阿里云OpenSearch RAG混合检索Embedding模型荣获C-MTEB榜单第一
阿里云OpenSearch引擎通过Dense和Sparse混合检索技术,在中文Embedding模型C-MTEB榜单上拿到第一名,超越Baichuan和众多开源模型,尤其在Retrieval任务上大幅提升。
1424 4
|
7月前
|
分布式计算 搜索推荐 MaxCompute
基于OpenSearch向量检索版的多主体识别最佳实践
本文将介绍如何通过OpenSearch向量检索版,在图像搜索服务中进行多主体识别。
136270 9
|
自然语言处理 算法 数据库
OpenSearch向量检索和大模型方案深度解读
深度解读开放搜索在向量检索和大模型方面的升级演进。
81431 7
|
存储 分布式计算 MaxCompute
基于OpenSearch向量检索版和MaxCompute快速搭建图搜服务
本文将介绍企业在没有向量数据的情况下,如何通过OpenSearch向量检索版、MaxCompute以及OSS,快速搭建图像搜索服务。
42781 1
基于OpenSearch向量检索版和MaxCompute快速搭建图搜服务
|
算法 数据挖掘 开发工具
以阿里云OpenSearch为例谈向量检索技术选型
本文从向量检索应用场景、常见的向量检索方法、向量检索性能优化、功能性能对比介绍了向量检索的业务应用场景和技术选型方式。
3206 3
|
存储 分布式计算 算法
OpenSearch向量检索版和MaxCompute快速搭建图搜服务
本方案介绍用户在没有向量数据的情况下,通过直接导入图片源数据,在OpenSearch内部便捷完成图片向量化、向量搜索等步骤,实现以图搜图、以文搜图等多种图像检索能力。
1559 0
|
存储 数据采集 人工智能
重磅再推 | 基于OpenSearch向量检索版+大模型,搭建对话式搜索
阿里云OpenSearch再推面向企业开发者的PaaS方案:基于OpenSearch向量检索版,为企业开发者提供性能表现优秀、性价比优异的向量检索服务,并提供与大模型结合脚本工具,用户可在使用能力可靠的向量检索服务的同时,自由选择文档切片方案、向量化模型、大语言模型。
15925 1
重磅再推 | 基于OpenSearch向量检索版+大模型,搭建对话式搜索
|
存储 分布式计算 搜索推荐
OpenSearch图搜图、文搜图向量检索最佳实践
本文介绍如何通过OpenSearch【向量检索版】帮助企业在没有向量数据的情况下快速搭建图像搜索服务,解决图片向量化、向量搜索等检索难题,实现以图搜图、以文搜图等多种图像检索能力。并通过数据压缩功能,降低存储空间,降低业务成本,为企业提供效果、性能双保障。
3178 3
|
7月前
|
SQL 监控 搜索推荐
Elasticsearch 与 OpenSearch:开源搜索技术的演进与选择
Elasticsearch 与 OpenSearch:开源搜索技术的演进与选择
551 2

相关产品

  • 智能开放搜索 OpenSearch