更新时间:2024-11-29 GMT+08:00

创建索引

前提条件

  • 在Ranger鉴权下使用向量检索需要编辑all-index策略,添加“vector”权限。具体操作请参考基于Ranger的鉴权
  • 在ACL鉴权模式下elasticsearch用户默认有向量检索中除了unregister接口外所有接口的权限。

    unregister接口为删除词典操作,用户只对自己创建的词典有删除权限。

操作步骤

以下语句创建了一个名为my_index的索引,该索引包含一个名为my_vector的向量字段,该字段创建了GRAPH图索引,并使用欧式距离作为相似度度量。参数说明请参见表1

PUT my_index
{
 "settings": {
  "index": {
   "vector": true
  }
},
 "mappings": {
  "properties": {
   "my_vector": {
    "type": "vector",
    "dimension": 2,
    "indexing": true,
    "algorithm": "GRAPH",
    "metric": "euclidean"
   }
  }
 }
}
表1 创建索引参数说明

参数

子参数

说明

settings

vector

当需要使用向量索引加速时,需要设置该值为“true”

mappings

type

字段类型,“vector”表示该字段为向量字段。

dimension

向量数据维度。

取值范围:0~4096。

indexing

是否开启索引加速,默认关闭。

  • true:开启。
  • false:关闭。

algorithm

索引算法,当indexing为“true”时生效,默认值:GRAPH。可选值为:

  • FLAT:暴力计算,目标向量依次与所有向量进行距离计算,此方法计算量大,召回率100%。适用于对召回准确率要求极高的场景。
  • GRAPH:图索引,内嵌自研深度优化的HNSW算法,主要应用在对性能和精度均具有较高要求且数据量级在千万以内的场景。
  • GRAPH_PQ:将HNSW算法与PQ索引进行了结合,通过PQ降低原始向量的存储开销,能够使HNSW轻松支撑上亿规模的检索场景。

metric

计算向量之间距离的度量方式,默认值:euclidean。可选值为:

  • euclidean:欧几里得距离
  • inner_product:内积
  • cosine:余弦距离
  • hamming:汉明距离