全部产品
Search
文档中心

智能开放搜索 OpenSearch:OSS + API 数据源

更新时间:Jun 12, 2024

开通OSS服务

image.png

  1. 开通OSS服务

  2. 控制台创建存储空间

  3. 控制台上传文件

添加表

  1. 实例详情>表管理页,点击添加表

image.png

  1. 填写表的基础信息,点击下一步

image.png

配置说明

  • 表名称:可自定义

  • 数据分片数:分片数设置时,各索引表分片数需保持一致;或至少一个索引表分片数为1,其余索引表分片数一致

  • 数据更新资源数:数据更新所用资源数,每个索引默认免费提供2个4核8G的更新资源,超出免费额度的资源将产生费用,详情可参考向量检索版国际站计费文档

  • 场景模板:向量检索版内置了3种模板可供用户选择:通用、向量-图片搜索、向量-文本语义模板

  1. 数据同步,配置数据源,校验通过后,点击下一步

image.png

  • 数据源类型:选择对象存储OSS

  • OSS路径:访问OSS文件的路径,需以/开头,路径中不允许包含?、=、&符号

  • 存储空间(Bucket):OSS的Bucket名称

  • 时间戳:如果有API的增量数据,该配置表示回追多久的增量数据,系统默认最大能回追3天的API增量数据

说明
  • OSS路径在创建好的Bucket名称点击进入后-新建目录-选择创建号的目录路径,此处示例路径为/opensearch_index_data/:

image.png

  • 存储空间(Bucket) :OSS的Bucket名称(来源:在开通的OSS服务Bucket里使用创建好的Bucket名称-如下图所示)

image.png

  1. 字段配置,配置完成后,点击下一步:

image

案例中配置了2个字段pk、embeddings,样例数据可参考(样本数据:oss_test.txt):

CMD=add
pk=999000
embeddings=0.00.0039257140.0098142860.0039257140.00
pk=999000
embeddings=0.00.0039257140

oss中的文件内容可参考下文中的文件格式

说明
  • 必选字段有:主键字段和向量字段,主键字段为int或string类型并且需要勾选主键按钮,向量字段为float类型并且需要勾选向量字段按钮;

  • 向量字段默认为多值的float类型,多值分隔符默认使用ha3分割符^] 进行切分(其对应utf编码为\x1D),也可以输入自定义多值分隔符

  • 当数据中缺少字段或字段为空时,系统将自动补充默认值,数字类型默认补0,STRING类型默认补空字符串,支持自定义默认值

  1. 索引结构配置,配置完成后,点击下一步:

image.png

此处主要针对向量索引进行配置:

  • 主键字段、向量字段必须填写,命名空间字段非必填,可以为空。

  • 仅支持选择固定的三个字段,不支持新增。

  • 向量维度:根据模型生成的向量按需选择

  • 向量距离:根据模型生成的向量按需选择,系统支持的距离类型有两种:SquareEuclidean和InnerProduct

  • 向量索引算法:根据模型生成的向量按需选择,系统支持的向量索引算法有量化聚类(Quantized Clustering)linearHNSW(Hierarchical Navigable Small World)

  • 实时索引:表示API的增量数据是否需要实时构建向量索引,默认为true

其他高级配置,可点击展开进行配置,参数说明可参考向量索引通用配置

image.png

  1. 确认创建,点击确认创建后,系统将自动创建配置好的表:

image.png

可在变更历史中查看创建表进度:

image.png

  1. 当表状态在使用中时,即可在查询测试页面进行查询测试:

image.png

文件格式

文件是建立索引的数据源(注意:需要是utf-8的编码),有着固定的格式,下面介绍标准的输入格式。

  • 首先看一个完整的数据文件standard_sample.data的内容

CMD=add^_
PK=12345321^_
url=http://www.aliyun.com/index.html^_
title=阿里云计算有限公司^_
body=xxxxxx xxx^_
time=3123423421^_
multi_value_field=1234^]324^]342^_
bidwords=mp3^\price=35.8^Ptime=13867236221^]mp4^\price=32.8^Ptime=13867236221^_
^^
CMD=delete^_
PK=12345321^_CMD=add^_
PK=12345321^_
url=http://www.aliyun.com/index.html^_
title=阿里云计算有限公司^_
body=xxxxxx xxx^_
time=3123423421^_
multi_value_field=1234^]324^]342^_
bidwords=mp3^\price=35.8^Ptime=13867236221^]mp4^\price=32.8^Ptime=13867236221^_
^^
CMD=delete^_
PK=12345321^_

可以看到上面的数据文件中总共有两个命令,分别是add、delete每个命令由多行组成,每行都是一个key-value对。 命令与命令之间用'^^\n'分隔,每一对key-value之间以'^_\n'分隔,多值之间以'^]'分隔。下面详细介绍。

  • 文件分隔符定义

C++编码

ASCII

16进制

描述

(emacs/vi)中的显示形态

emacs中输入方法

vi中输入方法

"\x1F\n"

1F0A

key value分隔符

^_(接换行)

C-q C-7

C-v C-7

"\x1E\n"

1E0A

命令分隔符

^^(接换行)

C-q C-6

C-v C-6

"\x1D"

1D

multi value 分隔符

^]

C-q C-5

C-v C-5

"\x1C"

1C

section weight标志符

^\

C-q C-4

C-v C-4

"\x1D"

1D

section 分隔符

^]

C-q C-5

C-v C-5

"\x03"

03

sub doc 字段分隔符

^C

C-q C-c

C-v C-c

  • 命令格式定义

    • Add command formatadd命令表示往索引中增加新的内容。add命令第一行必须为CMD=add,后面是该文档的field,field顺序可以与schema中fields顺序一致,所有出现的field必须是fields中指定的。

CMD=add^_
PK=12345321^_
url=http://www.aliyun.com/index.html^_
title=阿里云计算有限公司^_
body=xxxxxx xxx^_
time=3123423421^_
multi_value_field=1234^]324^]342^_
bidwords=mp3^\price=35.8^Ptime=13867236221^]mp4^\price=32.8^Ptime=13867236221^_
^^CMD=add^_
PK=12345321^_
url=http://www.aliyun.com/index.html^_
title=阿里云计算有限公司^_
body=xxxxxx xxx^_
time=3123423421^_
multi_value_field=1234^]324^]342^_
bidwords=mp3^\price=35.8^Ptime=13867236221^]mp4^\price=32.8^Ptime=13867236221^_
^^
    • Delete command formatdelete命令表示从索引中删除指定的内容。delete命令第一"行"必须为CMD=delete,接下来的"行"为index schema中定义属性为primary key 的field,以及用于partition hash的field,如果两个field相同,则只需要出现一个field。

CMD=delete^_
PK=12345321^_
^^CMD=delete^_
PK=12345321^_
^^

注意事项

  • 开通的OSS服务,需要和已购买的OpenSearch服务在同一个地域

  • 向量检索版不支持无地域属性的OSS的bucket

  • 执行新增OSS数据源操作时,将会自动创建一个服务关联角色(如已经创建,则不会重复创建)OpenSearch-向量检索版服务关联角色,开放搜索使用此角色来访问您在其他云产品中的资源已完成相应功能。