Elasticsearch

Elasticsearch - 검색(Search) #2

Namiz_IT 2024. 9. 4. 16:01
반응형

KNN 검색

1. k-NN 검색 소개

  • k-NN 검색은 주어진 벡터와 가장 유사한 k개의 항목을 찾는 기능이다. 이는 이미지 검색, 추천 시스템, 자연어 처리 등 다양한 분야에 사용된다.
  • Elasticsearch는 이 기능을 통해 벡터 유사도 기반의 고성능 검색을 수행할 수 있다.

2. k-NN 검색의 인덱스 설정

  • k-NN 검색을 사용하려면 인덱스를 설정할 때 벡터 필드를 정의해야 한다. 이 필드는 고차원 벡터를 저장하며, dense_vector 타입을 사용한다.
    PUT /my_index
    {
      "mappings": {
        "properties": {
          "my_vector": {
            "type": "dense_vector",
            "dims": 128
          }
        }
      }
    }

3. 벡터 검색 쿼리

  • knn 쿼리를 사용하여 벡터 검색을 수행할 수 있다. 이 쿼리는 주어진 쿼리 벡터와 가장 유사한 k개의 벡터를 반환한다.
    GET /my_index/_search
    {
      "knn": {
        "field": "my_vector",
        "query_vector": [0.1, 0.2, ..., 0.5],
        "k": 10,
        "num_candidates": 100
      }
    }

4. 검색 매개변수

  • 설명: k는 반환할 유사 항목의 수를 의미하고, num_candidates는 검색 과정에서 고려할 후보 항목의 수를 지정한다. num_candidates 값이 클수록 정확도는 높아지지만, 성능은 저하될 수 있다.

5. 성능 고려 사항

  • k-NN 검색은 고차원 벡터에서 유사성을 계산하기 때문에, 인덱스 설정 및 검색 파라미터 조정이 중요하다. 성능을 최적화하려면 인덱스의 크기와 num_candidates와 같은 파라미터를 적절히 조절해야 한다.

6. 사용 사례

  • 설명: k-NN 검색은 이미지 검색, 음악 추천, 문서 유사도 계산 등에서 유용하다. 특히, 자연어 처리(NLP)에서 문서 임베딩을 사용해 유사한 문서를 찾는 데 자주 사용된다.

참조

https://www.elastic.co/guide/en/elasticsearch/reference/current/knn-search.html

 

k-nearest neighbor (kNN) search | Elasticsearch Guide [8.15] | Elastic

The filter is applied during the approximate kNN search to ensure that k matching documents are returned. This contrasts with a post-filtering approach, where the filter is applied after the approximate kNN search completes. Post-filtering has the downside

www.elastic.co

반응형

'Elasticsearch' 카테고리의 다른 글

Elasticsearch - 검색(Search) #1  (0) 2024.09.03
Elasticsearch - 매핑(Mapping)  (0) 2024.09.03
Kibana란 무엇인가?  (0) 2024.08.27
Elasticsearch 주요 개념 요약  (0) 2024.08.27
Elasticsearch란 무엇인가?  (0) 2024.08.27