我正在尝试根据密集的向量示例运行一个相对简单的查询:
{
"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=向量中的值数