반응형
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
반응형
'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 |