Post-filtering vector search results
출처: 문서
본문
벡터 검색 결과 사후 필터링
불리언 필터를 사용하거나 post_filter 파라미터를 제공해서 사후 필터링을 수행할 수 있어요.
ANN 검색에서 불리언 필터 사용
불리언 필터는 k-NN 쿼리와 필터를 포함하는 불리언 쿼리로 구성돼요. 예를 들어 다음 쿼리는 지정된 location에서 가장 가까운 호텔을 검색한 다음, 결과를 필터링해서 평점이 8 이상 10 이하이고 주차 서비스를 제공하는 호텔을 반환해요:
POST /hotels-index/_search
{
"size": 3,
"query": {
"bool": {
"filter": {
"bool": {
"must": [
{
"range": {
"rating": {
"gte": 8,
"lte": 10
}
}
},
{
"term": {
"parking": "true"
}
}
]
}
},
"must": [
{
"knn": {
"location": {
"vector": [
5,
4
],
"k": 20
}
}
}
]
}
}
}
{% include copy-curl.html %}
응답에는 일치하는 호텔이 담긴 문서가 포함돼요:
post_filter 파라미터
knn 쿼리를 필터나 다른 절(예: bool, must, match)과 함께 사용하면 k개보다 적은 결과를 받을 수도 있어요. 이 예제에서 post_filter는 결과 개수를 2개에서 1개로 줄여요:
GET my-knn-index-1/_search
{
"size": 2,
"query": {
"knn": {
"my_vector2": {
"vector": [2, 3, 5, 6],
"k": 2
}
}
},
"post_filter": {
"range": {
"price": {
"gte": 5,
"lte": 10
}
}
}
}
{% include copy-curl.html %}