Elasticsearch8.x KNN search 使用方式和参数
一 KNN Search介绍
Elasticsearch 使用HNSW 算法来支持高效的 kNN 搜索。与大多数 kNN算法一样,HNSW是一种近似方法,它牺牲了结果准确性以提高搜索速度。
ES8.x 升级的KNN(相似度算法)功能需要 dense_vector 字段类型支持,而不是传统的 text 和 keyword 类型。
使用场景有如下两点:
- 在script_score查询中,对匹配过滤器的文档进行评分
- 在KNN 搜索API中,查找与查询向量最相似 的k个向量
注意:
1、dense_vector
类型不支持聚合或排序。
2、dense_vector
字段类型的值必须为浮点型的数组。例如 [0.5, 10, 6]
二 使用方式及参数介绍
创建dense_vector
字段的索引,需要用如下方式
-
#创建索引
-
PUT my-index
-
{
-
"mappings": {
-
"properties": {
-
"my_vector": {
-
"type": "dense_vector",
-
"dims": 3,
-
"index": true,
-
"similarity": "dot_product"
-
},
-
"my_text" : {
-
"type" : "keyword"
-
}
-
}
-
}
-
}
-
-
# 添加数据
-
PUT my-index/_doc/1
-
{
-
"my_text" : "text1",
-
"my_vector" : [0.5, 10, 6]
-
}
-
-
PUT my-index/_doc/2
-
{
-
"my_text" : "text2",
-
"my_vector" : [-0.5, 10, 10]
-
}
type:
dense_vector 表示此字段为向量字段
dims:
(必需,整数)向量维数。
当index参数为 true的时候,此值必须小于等于1024;
当index参数为 false的时候,此值必须小于等于2048;
index:
(可选,布尔值)默认false,当配置为true的时候,启用KNN 搜索
similarity:
(必需,字符串)在 KNN 搜索中使用的向量相似度度量。文档根据其向量字段与查询向量的相似性进行排名。每个文档的得分都将从相似性中得出,分数值都是正数,并且分数越大对应的排名越高。此外,如果index参数是true,则此参数是必需的。如果index为false,此参数不生效。
可选的值包含以下三种:
l2_norm
根据向量之间的 L 2距离(也称为欧几里得距离)计算相似度。文档得分计算公式为:
dot_product
计算两个向量的点积。此选项提供了一种执行余弦相似度的优化方法。为了使用它,所有向量必须是单位长度的,包括文档向量和查询向量。文档得分计算公式为:
cosine
计算余弦相似度。请注意,执行余弦相似度的最有效方法是将所有向量归一化为单位长度,而不是使用 dot_product. 只有cosine在需要保留原始向量且无法提前对其进行归一化时才应使用。文档得分计算公式为:
cosine相似性不允许具有零幅度的向量,因为在这种情况下没有定义余弦 。
index_options
(可选,对象)配置 kNN 索引算法的可选部分。HNSW 算法有两个影响数据结构构建方式的内部参数。可以调整这些以提高结果的准确性,但会降低索引速度。使用index_options时,必须定义其所有属性。属性包含以下三种:
type
(必需,字符串)要使用的 kNN 算法的类型。目前仅支持 hnsw 。
m
(必需,整数)每个节点将在 HNSW 图中连接到的邻居数。默认为16。
ef_construction
(必需,整数)在为每个新节点组装最近邻居列表时要跟踪的候选者数量。默认为100。
三 KNN使用限制
1、KNN 搜索不支持使用 filtered alias 。
2、dense_vector类型的字段不允许使用在定义了nested的mapping上
3、Elasticsearch 使用HNSW 算法来支持高效的 kNN 搜索。与大多数 kNN 算法一样,HNSW 是一种近似方法,它牺牲了结果准确性以提高搜索速度。这意味着返回的结果并不总是真正的k最近邻。说白了就是不仅慢,还不准确。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfhikbf
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
photoshop蒙版画笔没反应怎么办
PHP中文网 06-24