本页面用于为指定的数据集创建索引,创建索引可以加速向量的相似度搜索,它根据指定的索引算法和数据结构将向量库中的原始数据进行分组排序,提高相似度搜索的效率和准确性,是驱动向量数据库在短时间内筛选出候选的核心所在。
说明
- 同一账户下索引的数量上限是 200 个,且同一数据集下的索引数量上限为 100 个。
操作步骤
- 创建索引页面有两种进入方式:
- 方式一:在左侧导航栏单击索引,进入索引页面。单击索引列表页面左上角的创建索引,进入创建索引页面。
- 方式二:在左侧导航栏单击数据集,进入数据集页面。单击数据集列表已有数据集操作列的创建索引,进入创建索引页面。该方式表示为指定数据集创建索引,数据集不可修改。
- 在创建索引页面填写相关参数,具体参数如下。
分类 | 参数名称 | 参数说明 |
---|
基础信息 | 名称 | 指定创建的索引名称。必填。 - 只能使用英文字母、数字、下划线_,并以英文字母开头,不能为空。
- 长度要求:[1, 128]。
- 索引名称不能重复。
|
描述 | 填写对索引的描述,长度要求为 [0, 500]。选填。 |
索引配置 | 数据集 | - 如果采用方式一从索引进入,支持从数据集名称下拉列表选择具体数据集。必填。
- 如果采用方式二从数据集进入,默认展示数据集名称,不可选择。
|
CPU配额 | 索引检索消耗的CPU配额,1CPU核约为 100QPS;如果检索消耗的CPU超过配额,该索引会被限流,格式为正整数。必填。 |
索引分片 | 索引分片,可自定义索引分片数,也可自动化分片。
自定义分片数:分片数最大不超过256,默认为1,分片数预估参考:数据预估量/3000万。
自动化分片:实时获取数据量条数,单分片数据量条数超过阈值3000万后触发自动化分片,或单分片内存超过50GB后触发自动化分片。 |
索引算法 | 索引算法,默认HNSW,枚举值:HNSW、HNSW-Hybrid、FLAT、IVF、DiskANN。必选。 - HNSW:全称是 Hierarchical Navigable Small World,一种用于在高维空间中采用 ANN 搜索的数据结构和算法,是基于图的索引。HNSW通过构建多层网络减少搜索过程中需要访问的节点数量,实现快速高效地搜索最近邻,适用于大规模数据集,对检索性能要求高的场景
- HNSW-Hybrid:HNSW的混合检索版本,可以同时索引稠密向量和稀疏向量,并自动根据权重融合两种向量的相似性分数。适用于大规模数据集,对检索性能要求高的混合检索场景
HNSW-Hybrid索引的数据集必须包含 sparse_vector类型数据,即定义了 sparse_vector类型字段,或绑定了能产生sparse_vector 类型向量的 pipeline。 - FLAT:暴力索引,搜索时遍历整个向量数据库的所有向量与目标向量进行距离计算和比较,查询速度较慢,但是 FLAT 能提供100%的检索召回率,适用于小规模数据集,对检索精度要求高的场景。
- IVF:倒排索引,利用倒排的思想保存每个聚类中心下的向量,每次查询向量的时候找到最近的几个中心,分别搜索这几个中心下的向量,速度较快,但是精度略低,适合中等规模数据量,对搜索效率要求高,精度次之的场景。
- DiskANN:基于 Vamana 图的磁盘索引算法,将 Vamana 图与 PQ 量化压缩方案结合,构建DiskANN索引。图索引和原始数据存在SSD中,压缩索引放在内存中。检索请求时会将query向量与聚簇中心比较,然后从磁盘读取对应的原始数据进行算分。适用于大规模数据量,性能不是特别敏感,内存成本更低,且召回率较高的场景。
|
距离类型 | 距离类型,衡量向量之间距离的算法,默认IP,枚举值:IP、L2、COSINE。必选。 - IP:全称是 Inner Product,内积,该算法基于向量的内积,即两个元素的对应元素相乘并求和的结果计算相似度,内积值越大相似度越高。
- L2:欧几里得距离,它计算两个向量的欧几里得空间距离,欧式距离越小相似度越高。
- COSINE:余弦相似度(Cosine Similarity),也称为余弦距离(Cosine Distance),用于计算两个高维向量的夹角余弦值从而衡量向量相似度,夹角余弦值越小表示两向量的夹角越大,则两个向量差异越大。
当距离类型选择 COSINE 时,默认对向量做归一化处理。
当索引算法选择IVF时,距离类型可选择IP、COSINE。
距离类型的选择与embedding模型训练使用的指标保持一致。 |
量化方式 | 量化方式。量化方式是索引中对向量的压缩方式,可以降低向量间相似性计算的复杂度。基于向量的高维度和大规模特点,采用向量量化可以有效减少向量的存储和计算成本。默认Int8,枚举值:Int8、Float、Fix16、PQ。必选。 - Int8:将4字节的 float 压缩为单个字节,以获取内存和计算延迟的收益,会造成微小的损失精度,比如 cosine 距离会出现大于1的分值。通过损失一定的检索精度,提升检索性能,节约资源成本。
- Float:全精度,未做压缩量化。
- Fix16:将4字节的 float 压缩为两个字节,以获取内存和计算延迟的收益,会造成微小的损失精度。通过损失一定的检索精度,提升检索性能,节约资源成本。
- PQ:将高维向量转换为低维码本向量,以减少内存占用并提高搜索效率。
Int8适用于HNSW、FLAT索引算法,距离方式为IP、COSINE。
Float适用于HNSW、FLAT、DiskANN索引算法,距离方式为IP、L2、COSINE。
Fix16适用于HNSW、FLAT索引算法,距离方式为IP、L2、COSINE。
PQ适用于DiskANN、IVF索引算法,距离方式为IP、L2、COSINE。 |
子索引划分字段 | 用于划分子索引,根据某个标量字段可以将数据集划分成不同的子数据集,不同的子数据集构建为不同的子索引,实现混合检索时在子索引内检索并减少过滤,从而提升检索性能。选填。 - 子索引划分字段对应字段名称,《检索测试》页面的子索引对应字段的值。
- 从下拉列表选择某个字段名称,支持字段类型为 int64、list、string、list。
- 划分的子索引数量建议不超过1000个。
- 子索引数量过多会导致索引无法ready或更新。
- 每个子索引无论数据量多少,都会至少占用 10万维度系数 字节的内存,子索引数量过多的话,会导致内存占用过大,计费增加。
- 子索引划分字段未设置时,则子索引默认为 “default”。
- 适用场景:适用于将数据集划分为多个子数据集,在某个子数据集/子索引内部检索等检索模式固定的场景。比如,根据国家ID将数据集拆分,针对某个国家ID的子索引检索场景,无需对国家ID进行过滤,提升检索性能。
|
标量过滤字段 | 从下拉框勾选过滤标量字段,指定要返回的标量字段列表,将构建索引并占用一定内存。选填。 - 主键 ID 和向量类型字段不可作为过滤字段。
- 当字段被选择作为子索引划分字段时,则不可选择作为过滤字段。
- 过滤字段不勾选时,表示返回所有的标量字段。
|
- 填写完成后单击右下角提交,索引创建成功并返回索引列表页面。
- 在索引列表中可查看刚创建的索引,执行状态显示初始化中,此时不可操作检索测试;待执行状态显示已就绪时,可以执行操作检索测试。