我尝试在bool
查询下的搜索API中使用knn
。但获取和错误。我使用的是ElasticSearch8.6.2
以下是我的查询
GET document-with-embeddings/_search
{
"query":
{
"bool": {
"must": [
{
"knn": {
"text_embedding.predicted_value": {
"vector": [
-0.06544870883226395,
-0.21647875010967255,
...................
],
"k": 20
}
}
}
],
"filter": [],
"should": [],
"must_not": []
}
},
"_source": [
"name", "description"
]
}
我的嵌入索引是
properties": {
"text_embedding.predicted_value": {
"type": "dense_vector",
"dims": 384,
"index": true,
"similarity": "cosine"
},
我得到了这个错误。
{
"error": {
"root_cause": [
{
"type": "x_content_parse_exception",
"reason": "[7:28] [bool] failed to parse field [must]"
}
],
"type": "x_content_parse_exception",
"reason": "[7:28] [bool] failed to parse field [must]",
"caused_by": {
"type": "illegal_argument_exception",
"reason": "[knn] queries cannot be provided directly, use the [knn] body parameter instead"
}
},
"status": 400
}
这里要补充的一点是,我将使用一个复杂的查询。这就是为什么我使用bool。但是下面的简单查询对我来说是有效的,这不是我的目标。
GET document-with-embeddings/_search
{
"knn": {
"field": "text_embedding.predicted_value",
"query_vector": [...],
"k": 20,
"num_candidates": 1000
},
"_source": [
"custom"
]
}
任何帮助都很感激。
1条答案
按热度按时间ojsjcaue1#
文档显示了这种模式。Knn必须在“查询”之外使用。