LTR 검색

원본 보기

LTR 검색

참고

이 기능은 8.12.0 버전에서 도입되었으며 특정 구독 등급에서만 사용할 수 있습니다. 자세한 내용은 Elastic 자체 관리형 구독을 참조하세요.

LTR 모델을 학습시켜 Elasticsearch에 배포하고 나면, 검색 API와 함께 사용해 검색 결과를 개선하는 방법은 두 가지입니다:

  1. rescorer로 사용
  2. retriever로 사용

LTR 모델을 검색 API에서 rescorer로 사용하려면 다음 예제를 따르세요:

				GET my-index/_search
					{
  "query": {
    "multi_match": {
      "fields": ["title", "content"],
      "query": "the quick brown fox"
    }
  },
  "rescore": {
    "learning_to_rank": {
      "model_id": "ltr-model",
      "params": {
        "query_text": "the quick brown fox"
      }
    },
    "window_size": 100
  }
}
		
  1. 재점수화할 문서를 제공하는 1차 쿼리입니다.
  2. Elasticsearch에 업로드된 학습 모델의 고유 식별자입니다.
  3. 피처에 사용되는 쿼리 템플릿에 전달할 명명된 파라미터입니다.
  4. 각 샤드에서 rescorer가 검사해야 하는 문서 수입니다.

LTR 모델은 검색 파이프라인에서 retriever로도 사용할 수 있습니다. 다음 예제와 같이 rescorer retriever로 구현할 수 있습니다:

				GET my-index/_search
					{
  "retriever": {
    "rescorer": {
      "rescore": {
        "window_size": 100,
        "learning_to_rank": {
          "model_id": "ltr-model",
          "params": {
            "query_text": "the quick brown fox"
          }
        }
      },
      "retrievers": [
        {
          "standard": {
            "query": {
              "multi_match": {
                "fields": ["title", "content"],
                "query": "the quick brown fox"
              }
            }
          }
        }
      ]
    }
  }
}
		
  1. 재점수화할 문서를 가져오는 데 사용되는 1차 retriever입니다
  2. Elasticsearch에 업로드된 학습 모델의 고유 식별자입니다.
  3. 피처 추출에 사용되는 쿼리 템플릿에 전달할 명명된 파라미터입니다.
  4. rescorer가 검사해야 하는 문서 수입니다.

LTR 모델이 반환하는 점수는 일반적으로 1차 쿼리가 산출한 점수와 비교할 수 없으며, 재점수화하지 않은 점수보다 낮을 수 있습니다. 이로 인해 재점수화되지 않은 결과 문서가 재점수화된 문서보다 상위에 랭크될 수 있습니다. 이를 방지하기 위해 LTR rescorer에서는 window_size 파라미터가 필수이며, from + size 이상이어야 합니다.

사용자에게 페이지네이션을 노출할 때는 서로 다른 from 값을 전달하며 각 페이지를 이동하는 동안 window_size가 일정하게 유지되어야 합니다. window_size를 변경하면 상위 히트가 달라져 사용자가 페이지를 넘길 때 결과가 혼란스럽게 바뀔 수 있습니다.