在Elasticsearch 7.0中,ES引入了高维向量的字段类型:
dense_vector存储稠密向量,value是单一的float数值,可以是0、负数或正数,dense_vector数组的最大长度不能超过1024,每个文档的数组长度可以不同。
sparse_vector存储稀疏向量,value是单一的float数值,可以是0、负数或正数,sparse_vector存储的是个非嵌套类型的json对象,key是向量的位置,即integer类型的字符串,范围[0,65535]。
ElasticSearch版本:elasticsearch-7.3.0
环境准备:
curl -H "Content-Type: application/json" -XPUT 'http://192.168.0.1:9200/article_v1/' -d '
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0
},
"mappings": {
"dynamic": "strict",
"properties": {
"id": {
"type": "keyword"
},
"title": {
"analyzer": "ik_smart",
"type": "text"
},
"title_dv": {
"type": "dense_vector",
"dims": 200
},
"title_sv": {
"type": "sparse_vector"
}
}
}
}
'
测试验证代码:
# -*- coding:utf-8 -*-
import os
import sys
impo