接口用于对指定索引的创建
地域 | Diskann功能 |
|---|---|
华北 | 支持 |
华东 | 支持 |
华南 | 暂不支持,正在开发中 |
柔佛 | 暂不支持,正在开发中 |
V2接口 | V1接口 | |
|---|---|---|
参数命名风格 | 驼峰( | 下划线( |
说明
请求向量数据库 VikingDB 的 OpenAPI 接口时,可以使用 ak、sk 构造签名进行鉴权。请参见控制面API调用流程,复制调用示例并填入必要信息
请求参数Action取值:CreateVikingdbIndex。
下表仅列出该接口特有的请求参数和部分公共参数。更多信息请见公共参数。
参数 | 一级子参数 | 类型 | 是否必填 | 描述 |
|---|---|---|---|---|
ProjectName | String | 否 | 项目名称 | |
CollectionName | String | 2选1 | 数据集名称 | |
ResourceId | String | 数据集资源ID。请求必须指定ResourceId和CollectionName其中之一。 | ||
Description | String | 否 | 索引的自定义描述。 | |
VectorIndex | Map | 是 | 向量索引配置 | |
IndexType | String | 是 | 向量索引类型。取值如下:
| |
Distance | String | 否 | 距离类型,衡量向量之间距离的算法。取值如下: | |
Quant | String | 否 | 量化方式。量化方式是索引中对向量的压缩方式,可以降低向量间相似性计算的复杂度。基于向量的高维度和大规模特点,采用向量量化可以有效减少向量的存储和计算成本。取值如下:
int8适用于hnsw、hnsw_hybrid、flat索引算法,距离方式为ip、consine。 float适用于hnsw、hnsw_hybrid、flat、diskann索引算法,距离方式为ip、l2、consine。 fix16适用于hnsw、hnsw_hybrid、flat索引算法,距离方式为ip、l2、consine。 pq适用于diskann索引算法,距离方式为ip、l2、consine。 | |
HnswM | Integer | 否 | hnsw 索引参数,表示邻居节点个数。
| |
HnswCef | Integer | 否 | hnsw 索引参数,表示构建图时搜索邻居节点的广度。
| |
HnswSef | Integer | 否 | hnsw 索引参数,表示线上检索的搜索广度。
| |
DiskannM | Integer | 否 | diskann参数,标识邻居节点个数。
| |
DiskannCef | Integer | 否 | diskann参数,表示构建图时搜索邻居节点的广度。
| |
PqCodeRatio | Float | 否 | diskann参数,向量维度编码的大小限制。值越大,召回率越高,但会增加内存使用量,范围 (0.0, 0.25]。
| |
CacheRatio | Float | 否 | diskann参数,缓存节点数与原始数据的比率,较大的值会提高索引性能并增加内存使用量。范围 [0.0,0.3)。
| |
ScalarIndex | Array of String | 否 | 标量字段列表,用于设置需要构建到标量索引的字段。
如果标量字段进入标量索引,主要用于范围过滤和枚举过滤,会占用额外资源:
如果标量字段不进入标量索引,仍支持作为正排字段选取使用和部分正排计算。 | |
CpuQuota | Integer | 否 | 索引检索消耗的 CPU 配额,格式为正整数。 | |
ShardPolicy | String | 否 | 索引分片类型 | |
ShardCount | Integer | 否 | 自定义分片数。
| |
IndexName | String | 是 | 索引名称 |
下表仅列出本接口特有的返回参数。更多信息请参见返回结构。
参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
Message | String | success | 操作结果信息 |
例如:图片检索、视频检索等纯向量检索场景。
hnsw 索引适用于快速、高吞吐量向量搜索场景。一般推荐 Distance 设为 “ip”,Quant 量化方式设为 “int8” 以提升内存效率,ShardPolicy 用默认 “auto”,此时后台自动开启分片策略可避免容量瓶颈、提高检索效率,且不影响总体内存占用。
action = "CreateVikingdbIndex", body = { "CollectionName": "your_collection", "IndexName": "idx_1", "VectorIndex": { "IndexType": "hnsw", "Distance": "ip", "Quant": "int8" } }
当数据规模超大,且对成本敏感,而检索QPS不高的情况下,可以考虑使用内存占用更低的diskann索引来替代hnsw索引。
action = "CreateVikingdbIndex", body = { "CollectionName": "your_collection", "IndexName": "idx_1", "VectorIndex": { "IndexType": "diskann", "Distance": "ip", "Quant": "pq" } }
若向量检索含文本信息,如新闻、论文文章检索场景,可创建带稀疏向量字段的数据集,创建索引时选带稀疏向量能力的索引。检索时采用稠密 + 稀疏向量混合检索,有助于提升捕获关键词信息的能力。
低延时、高吞吐场景对应上述1.1,将hnsw索引替换为hnsw_hybrid索引。
action = "CreateVikingdbIndex", body = { "CollectionName": "your_collection", "IndexName": "idx_1", "VectorIndex": { "IndexType": "hnsw_hybrid", "Distance": "ip", "Quant": "int8" } }
若在向量检索时带有某些标量字段过滤条件,可在向量索引基础上设置标量索引字段(ScalarIndex)。默认开启所有标量字段索引,用于范围和枚举过滤;若仅部分标量字段需开启索引,可在ScalarIndex中配置字段列表。
例如,您有一个商品数据集,包括的字段有:
字段名 | 类型 | 含义 | 用途 |
|---|---|---|---|
product_info | text | 商品名和描述 | 用于向量化、语义向量检索 |
product_type | string | 商品类别 | 可标量枚举过滤 |
manufacturer_name | string | 制造商名 | 可标量枚举过滤 |
price | float | 价格 | 可标量范围过滤 |
sales | int64 | 销量 | 可标量范围、枚举过滤 |
shipping_info | string | 发货地点和方式说明 | 不进索引、仅作为属性列 |
comment | string | 备注信息 | 不进索引、仅作为属性列 |
可按如下方式创建索引:
action = "CreateVikingdbIndex", body = { "CollectionName": "your_collection", "IndexName": "idx_1", "VectorIndex": { "IndexType": "hnsw_hybrid", "Distance": "ip", "Quant": "int8" }, "ScalarIndex": [ "product_type", "brand_name", "price", "sales" ] }
{ "ResponseMetadata": { "RequestId": "202505271754501200391670290C48BB", "Action": "CreateVikingdbIndex", "Version": "2025-06-09", "Service": "vikingdb", "Region": "cn-beijing" }, "Result": { "Message": "success" } }
错误码请参见公共错误码文档。