我已经建立了一个数据库ElasticSearch后端,其中包含的文件有密集的向量作为特征。我想在运行时使用脚本查询到带有特征向量的数据库。为此,我使用余弦相似性,但到目前为止,只在整个特征向量之间。但是在查询的时候,我想用一个掩码向量过滤特征,只得到一个子集的条目。然后我要计算余弦相似性。
我的数据库Map如下所示:
mapping = {
"mappings": {
"properties": {
"imageid": {
"type": "text"
},
"score": {
"type": "float"
},
'feature': {
"type": "dense_vector",
"dims": dim
}
'maskvec': {
"type": "dense_vector", #is there an boolean/bit vector type?
"dims": dim
}
}
}
}
到目前为止,脚本分数查询如下所示:
"script_score": {
"query": {
"match_all": {}
},
"script": {
"lang":"painless",
"source": """
return cosineSimilarity(params.queryVector, feature) + 1.0
""",
"params": {
"queryVector": list(featurevector)
}
}
}
我想这样做:
# Pseudocode
mask = params.querymask and maskvec
queryvec = params.queryVector[mask]
featurevec = feature[mask]
return cosineSimilarity(queryvec, featurevec) + 1.0
有没有可能通过ElasticSearch实现这样的功能?这将是伟大的,因为否则将很难实现这种搜索的特征向量与掩模组合。
干杯,克里斯蒂安
暂无答案!
目前还没有任何答案,快来回答吧!