Python 弹性搜索:如何在查询运行时初始化特征向量以计算余弦相似度?
我需要为弹性搜索中的脚本查询更改余弦相似性的输入向量。 数据库的文档包含以下字段:Python 弹性搜索:如何在查询运行时初始化特征向量以计算余弦相似度?,python,elasticsearch,Python,elasticsearch,我需要为弹性搜索中的脚本查询更改余弦相似性的输入向量。 数据库的文档包含以下字段: densevec,它是稠密_向量类型的特征向量 掩码,这是一个关键字变量,用于指定哪些要素条目有效/无效(例如“110011101”) 然后我想计算一个查询向量的cos sim w.r.,并且只应使用有效字段,因为某些特征条目无效。 到目前为止,我得到了: "query": { "script_score": {
- densevec,它是稠密_向量类型的特征向量
- 掩码,这是一个关键字变量,用于指定哪些要素条目有效/无效(例如“110011101”)
"query": {
"script_score": {
"query": {
"match_all": {}
},
"script": {
"lang":"painless",
"source": """
def m1 = doc['mask'].value;
def m2 = params.queryMask;
ArrayList x = new ArrayList();
ArrayList y = new ArrayList();
for(int i; i < m1.length(); i++) {
Debug.explain(m1.charAt(i));
if (m1.charAt(i) == '1' && m2.charAt(i) == '1') {
x.add(doc['densevec'][i]);
y.add(params.queryVector[i]);
}
else{
x.add(0);
y.add(0);
}
}
def d = cosineSimilarity(x, y) + 1.0;
return d;
""",
"params": {
"queryVector": list(featurevector),
"queryMask": maskstr
}
}
}
}
您好,
基督教徒
script_stack
org.elasticsearch.xpack.vectors.query.ScoreScriptUtils$DenseVectorFunction.<init>(ScoreScriptUtils.java:85)
org.elasticsearch.xpack.vectors.query.ScoreScriptUtils$CosineSimilarity.<init>(ScoreScriptUtils.java:175)
d = cosineSimilarity(x, y) + 1.0;
...
caused_by:
type:illegal_argument_exception
reason:For vector functions, the 'field' argument must be of type String or VectorScriptDocValues
doc['densevec'][i]