/index/create 接口用于为指定的数据集 Collection 创建索引 Index。
创建索引可以加速向量的相似度搜索,它根据指定的索引算法和数据结构将向量库中的原始数据进行分组排序,提高相似度搜索的效率和准确性,是驱动向量数据库在短时间内筛选出候选的核心所在。
说明
请求向量数据库 VikingDB 的 OpenAPI 接口时,需要构造签名进行鉴权,详细的 OpenAPI 签名调用方法请参见 API签名调用指南。
URI | /api/index/create | 统一资源标识符 |
---|---|---|
请求方法 | POST | 客户端对向量数据库服务器请求的操作类型 |
请求头 | Content-Type: application/json | 请求消息类型 |
Authorization: HMAC-SHA256 *** | 鉴权 |
参数 | 子参数 | 类型 | 是否必选 | 默认值 | 参数说明 |
---|---|---|---|---|---|
collection_name | string | 是 | 指定创建索引所属的 Collection 名称。
| ||
index_name | string | 是 | 指定创建的索引 Index 名称。
| ||
cpu_quota | int | 否 | 1 | 索引检索消耗的 CPU 配额,格式为正整数。
| |
description | string | 否 | ”“ | 索引的自定义描述。 | |
shard_policy | string | 否 | “” | 索引分片类型
索引分片是指在大规模数据量场景下,将索引数据均分成多个小的索引数据块,并分发到同一个集群不同节点进行管理,每个节点负责存储和处理一部分数据,查询会同时请求不同节点上的索引数据块。由于单节点的容量有限,无法将索引全部数据存放到单节点中,因此需要设置合适的索引分片数,否则会影响索引到数据的时效性。另,分片数与成本相关, 分片数越多成本越高。 | |
shard_count | int | 否 | 1 | 自定义分片数。
| |
partition_by | string | 否 | “” | partition_by 用于划分子索引 partition 。根据某个标量字段可以将数据集划分成不同的子数据集,不同的子数据集构建为不同的子索引,实现混合检索时在子索引内检索并减少过滤,从而提升检索性能。
| |
vector_index | index_type | string | 是 | hnsw | 向量索引类型。取值如下:
|
distance | string | 否 | ip | 距离类型,衡量向量之间距离的算法。取值如下:
| |
quant | string | 否 | 详见参数说明 | 量化方式。量化方式是索引中对向量的压缩方式,可以降低向量间相似性计算的复杂度。基于向量的高维度和大规模特点,采用向量量化可以有效减少向量的存储和计算成本。取值如下:
int8适用于hnsw、hnsw_hybrid、flat索引算法,距离方式为ip、consine。 | |
hnsw_m | 数值 | 否 | 20 | hnsw 索引参数,表示邻居节点个数。
| |
hnsw_cef | 数值 | 否 | 400 | hnsw 索引参数,表示构建图时搜索邻居节点的广度。
| |
hnsw_sef | 数值 | 否 | 800 | hnsw 索引参数,表示线上检索的搜索广度。
| |
diskann_m | 数值 | 否 | 64 | diskann参数,标识邻居节点个数。
| |
diskann_cef | 数值 | 否 | 100 | diskann参数,表示构建图时搜索邻居节点的广度。
| |
cache_ratio | float | 否 | 0.1 | diskann参数,缓存节点数与原始数据的比率,较大的值会提高索引性能并增加内存使用量。范围 [0.0,0.3)。
| |
pq_code_ratio | float | 否 | 0.125 | diskann参数,向量维度编码的大小限制。值越大,召回率越高,但会增加内存使用量,范围 (0.0, 0.25]。
| |
scalar_index | array | 否 | None | 标量字段列表,用于设置需要构建到标量索引的字段。其中,float、int64 字段可用于范围检索,非 float 字段可用于枚举检索。
|
参数 | 参数说明 |
---|---|
code | 状态码 |
message | 返回信息 |
request_id | 标识每个请求的唯一标识符 |
状态码 | http状态码 | 返回信息 | 状态码说明 |
---|---|---|---|
0 | 200 | success | 索引 Index 创建成功。 |
1000005 | 400 | collection not exist | 索引相关的 Collection 不存在。 |
1000007 | 400 | Index already exist | 索引名称已存在。 |
1000003 | 400 | invalid request:%s | 非法参数:
|
1000001 | 401 | unauthorized | 请求头中缺乏鉴权信息。 |
1000002 | 403 | no permission | 权限不足。 |
curl -i -X POST \ -H 'Content-Type: application/json' \ -H 'Authorization: HMAC-SHA256 ***' \ https://api-vikingdb.volces.com/api/index/create \ -d '{ "collection_name": "test_name", "index_name": "index_test" "description": "test for index", "cpu_quota": 10, "partition_by": "country" //partition_by 对应字段名称 field_name "vector_index": { "index_type": "hnsw", "distance": l2, "quant": "float" }, "scalar_index": ["city", "date", "score"], }'
执行成功返回:
HTTP/1.1 200 OK Content-Length: 43 Content-Type: application/json {"code":0,"message":"success","request_id":"021695029736548fd001de66666000000000000000000029aa917"}
执行失败返回:
HTTP/1.1 400 OK Content-Length: 43 Content-Type: application/json {"code":1000005, "message":"collection not exist", "request_id":"021695029736548fd001de66666000000000000000000029aa917"}