You need to enable JavaScript to run this app.
导航
CreateIndex
最近更新时间:2024.06.14 11:34:51首次发布时间:2024.06.14 11:34:51

概述

CreateIndex 用于为指定的数据集 Collection 创建索引 Index。
创建索引可以加速向量的相似度搜索,它根据指定的索引算法和数据结构将向量库中的原始数据进行分组排序,提高相似度搜索的效率和准确性,是驱动向量数据库在短时间内筛选出候选的核心所在。
对于索引的数据集只存在稠密向量(即 Vector 类型字段)的情况,我们称这种索引为纯稠密索引;对于索引的数据集中存在稠密向量和稀疏向量(Vector 和 Sparse_Vector 类型字段)的情况,我们称这种索引为混合索引。

请求参数

字段名

类型

是否必传

说明

CollectionName

string

数据集名称

IndexName

string

索引名称

Description

string

索引描述

CpuQuota

number

索引 CPU 用量

ShardConfig

ShardConfig

索引分片配置

VectorIndex

VectorIndex

向量索引配置

PartitionBy

string

子索引划分字段

ScalarIndexes

string[]

标量过滤字段

ShardConfig

type ShardConfig =
  | {
      ShardPolicy: ShardPolicy.Custom;
      ShardCount: number;
    }
  | {
      ShardPolicy: ShardPolicy.Auto;
    };

IndexType

enum IndexType {
  Hnsw = "hnsw",
  HnswHybrid = "hnsw_hybrid",
  Flat = "flat",
  Ivf = "ivf",
  Diskann = "diskann",
}

Distance

enum Distance {
  Ip = "ip",
  l2 = "l2",
  Cosine = "cosine",
}

Quant

enum Quant {
  Int8 = "int8",
  Float = "float",
  Fix16 = "fix16",
  PQ = "pq",
}

VectorIndex

type VectorIndex = 
    | HnswVector
    | HnswHybridVector 
    | FlatVector 
    | DiskannVector 
    | IvfVector
    
type HnswVector = HnswVector1 | HnswVector2
type HnswHybridVector = HnswHybridVector1 | HnswHybridVector2
type FlatVector = FlatVector1 | FlatVector2

HnswVector1

字段名

类型

是否必传

说明

IndexType

IndexType.Hnsw

索引类型

Distance

Distance.Ip
Distance.Cosine

距离类型

Quant

Quant.Int8
Quant.Float
Quant.Fix16

量化方式

HnswM

number

Hnsw 索引参数,表示邻居节点个数

HnswCef

number

Hnsw 索引参数,表示构建图时搜索邻居节点的广度

HnswSef

number

Hnsw 索引参数,表示线上检索的搜索广度

HnswVector2

字段名

类型

是否必传

说明

IndexType

IndexType.Hnsw

索引类型

Distance

Distance.l2

距离类型

Quant

Quant.Float
Quant.Fix16

量化方式

HnswM

number

Hnsw 索引参数,表示邻居节点个数

HnswCef

number

Hnsw 索引参数,表示构建图时搜索邻居节点的广度

HnswSef

number

Hnsw 索引参数,表示线上检索的搜索广度

HnswHybridVector1

字段名

类型

是否必传

说明

IndexType

IndexType.HnswHybrid

索引类型

Distance

Distance.Ip
Distance.Cosine

距离类型

Quant

Quant.Int8
Quant.Float
Quant.Fix16

量化方式

HnswHybridVector2

字段名

类型

是否必传

说明

IndexType

IndexType.HnswHybrid

索引类型

Distance

Distance.l2

距离类型

Quant

Quant.Float
Quant.Fix16

量化方式

FlatVector1

字段名

类型

是否必传

说明

IndexType

IndexType.Flat

索引类型

Distance

Distance.Ip
Distance.Cosine

距离类型

Quant

Quant.Int8
Quant.Float
Quant.Fix16

量化方式

FlatVector2

字段名

类型

是否必传

说明

IndexType

IndexType.Flat

索引类型

Distance

Distance.l2

距离类型

Quant

Quant.Float
Quant.Fix16

量化方式

DiskannVector

字段名

类型

是否必传

说明

IndexType

IndexType.Diskann

索引类型

Distance

Distance

距离类型

Quant

Quant.Float
Quant.Pq

量化方式

DiskannM

number

Diskann 参数,表示邻居节点个数

DiskannCef

number

Diskann 参数,表示构建图时搜索邻居节点的广度

CacheRatio

number

Diskann 参数,缓存节点数与原始数据的比率

PqCodeRatio

number

Diskann 参数,向量维度编码的大小限制

IvfVector

字段名

类型

是否必传

说明

IndexType

IndexType.Ivf

索引类型

Distance

Distance.Ip
Distance.Cosine

距离类型

Quant

Quant.Pq

量化方式

响应参数
declare class VikingdbResponse {
  readonly OriginalRequest: string;
  readonly LogId: string;
  constructor(
    OriginalRequest: string,
    LogId: string
  );
}

参考示例
import { vikingdb } from '@volcengine/openapi'

declare const service: vikingdb.VikingdbService // 替换为你初始化好的实例

await service.index.CreateIndex({
  CollectionName: 'test_collection_1',
  IndexName: 'test_index_1',
  Description: 'Index Description', // optional
  CpuQuota: 2, // optional
  ShardConfig: {
    ShardPolicy: vikingdb.index.ShardPolicy.Custom,
    ShardCount: 10
  }, // 自定义分片
  ShardConfig: {
    ShardPolicy: vikingdb.index.ShardPolicy.Auto,
  }, // 自动分片
  VectorIndex: {
    IndexType: vikingdb.index.IndexType.Hnsw,
    Distance: vikingdb.index.Distance.Ip,
    Quant: vikingdb.index.Quant.Int8,
    HnswM: 10, // optional
    HnswCef: 10, // optional
    HnswSef: 10, // optional
  }, // optional,HnswVector1
  VectorIndex: {
    IndexType: vikingdb.index.IndexType.Hnsw,
    Distance: vikingdb.index.Distance.l2,
    Quant: vikingdb.index.Quant.Float,
    HnswM: 10, // optional
    HnswCef: 10, // optional
    HnswSef: 10, // optional
  }, // optional,HnswVector2
  VectorIndex: {
    IndexType: vikingdb.index.IndexType.HnswHybrid,
    Distance: vikingdb.index.Distance.Cosine,
    Quant: vikingdb.index.Quant.Int8,
  }, // optional,HnswHybridVector1
  VectorIndex: {
    IndexType: vikingdb.index.IndexType.HnswHybrid,
    Distance: vikingdb.index.Distance.L2,
    Quant: vikingdb.index.Quant.Float,
  }, // optional,HnswHybridVector2  
  VectorIndex: {
    IndexType: vikingdb.index.IndexType.Flat,
    Distance: vikingdb.index.Distance.Ip,
    Quant: vikingdb.index.Quant.Int8,
  }, // optional,FlatVector1    
  VectorIndex: {
    IndexType: vikingdb.index.IndexType.Flat,
    Distance: vikingdb.index.Distance.l2,
    Quant: vikingdb.index.Quant.Float,
  }, // optional,FlatVector2
  VectorIndex: {
    IndexType: vikingdb.index.IndexType.Diskann,
    Distance: vikingdb.index.Distance.Ip,
    Quant: vikingdb.index.Quant.Pq,
    DiskannM: 10, // optional
    DiskannCef: 10, // optional
    CacheRatio: 10, //optional
    PqCodeRatio: 10, //optional
  }, // optional,DiskannVector  
  VectorIndex: {
    IndexType: vikingdb.index.IndexType.Ivf,
    Distance: vikingdb.index.Distance.Ip,
    Quant: vikingdb.index.Quant.Pq,
  }, // optional,IvfVector  
  PartitionBy: 'Id', // optional
  Scalarindexes: ['Name'], // optinal
})