轻松体验Elasticsearch8中的Densevector向量字段类型

云的事情不好说 2024-01-31 22:21:30

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]之间的余弦相似度。



0 阅读:6

云的事情不好说

简介:感谢大家的关注