在 ElasticSearch 中将双精度数组转换为密集向量



我正在尝试根据密集的向量示例运行一个相对简单的查询:

{
"query": {
"script_score": {
"query": {"match_all": {}},
"script": {
"source": "cosineSimilarity(params.query_vector, doc['vector']) + 1.0",
"params": {"query_vector": vector}
}
}
}
}

我传递给查询的vector值是一个简单的双精度数组,其大小与数据库中存储的向量的大小匹配。但是,当我尝试运行查询时,出现此错误:

'script_stack': ["cosineSimilarity(params.query_vector, doc['vector']) + 1.0",
'                                         ^---- HERE'],

有没有办法强制查询参数类型?

class org.elasticsearch.index.fielddata.ScriptDocValues$Doubles 不能强制转换为类 org.elasticsearch.xpack.vectors.query.VectorScriptDocValues$DenseVectorScriptDocValues

(org.elasticsearch.index.fielddata.ScriptDocValues$Doubles 位于加载器'app'的未命名模块中;org.elasticsearch.xpack.vectors.query.VectorScriptDocValues$DenseVectorScriptDocValuesis in unnamed module of loader java.net.FactoryURLClassLoader@72ee5d84(

我遇到了同样的问题,我没有在索引映射中正确定义向量字段。您是否在映射中显式定义了字段,类型是否正确?应该是这样的

{
"properties": {
"vector": {
"type": "dense_vector",
"dims": 32
}
}

其中 dims=向量中的值数

最新更新