四时宝库

程序员的知识宝库

轻松体验Elasticsearch 8中的Dense vector向量字段类型

Elasticsearch的Dense vector字段类型用于存储密集的向量(例如,浮点数数组),通常用于机器学习模型的特征向量。这些向量可以用来计算文档之间的相似度。


本文将介绍Dense vector字段类型在Elasticsearch中的使用。


一、创建映射(Mapping)

在Elasticsearch中创建一个索引,并为该索引定义一个映射(Mapping)。在这个映射中,我们可以指定一个字段为Dense vector类型,并指定向量的维度。

PUT /my_index
{
 "mappings": {
 "properties": {
 "my_vector": {
 "type": "dense_vector",
 "dims": 3 // 指定向量的维度为3
 },
 "my_text": {
 "type": "text"
 }
 }
 }
}


在这个例子中,我们创建了一个名为my_index的索引,其中包含一个名为my_vector的Dense vector字段和一个名为my_text的文本字段。


GET my_index/_mapping



二、索引文档 (Indexing Documents)

接下来,我们可以开始索引包含Dense vector的文档。

PUT /my_index/_doc/1
{
 "my_text": "文本内容",
 "my_vector": [1.5, 2.5, 3.5]
}



我们向my_index索引中添加了一个文档,其中my_vector字段是一个三维向量。


三、使用向量进行搜索 (Searching with Vectors)

我们可以使用向量字段进行相似度搜索。例如,可以使用余弦相似度函数找到与给定向量最相似的文档。

POST /my_index/_search
{
 "query": {
 "script_score": {
 "query" : {
 "match_all": {}
 },
 "script": {
 "source": "cosineSimilarity(params.query_vector, 'my_vector') + 1.0",
 "params": {
 "query_vector": [4, 3.5, 4]
 }
 }
 }
 }
}


在示例中,我们使用了script_score查询来计算每个文档的得分,这个得分基于my_vector字段和提供的查询向量[4, 3.5, 4]之间的余弦相似度。

#冬日生活打卡季##记录我的2024#

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接