Dense Vector Field 에서 지정할 수 있는 유사도 검색 파라미터에 대해 알아보자.
similarity 파라미터:
- kNN 검색에서 사용할 벡터 유사도 메트릭을 지정할 수 있는 파라미터임..
- 옵션이지만, index가 true일 때만 지정할 수 있다.
- 기본값은 cosine 이다.
l2_norm (L2 거리, 유클리드 거리):
- 벡터 간의 절대적인 거리가 중요할 때
- 데이터 포인트의 실제 위치나 크기가 의미가 있을 때
- 고차원 데이터에는 유용하지 않음.
- 이상치 탐지나 클러스터링 작업에서 유용 (데이터 포인트간의 거리 차이로 이상치를 탐색함.)
dot_product:
- 모든 벡터가 이미 정규화되어 있을 때 (cosine 유사도의 최적화 버전)
- 대규모 데이터셋에서는 계산 효율성이 중요할 수 있으며, 이 경우 cosine 보다는 dot_product가 유리할 수 있다.
cosine (코사인 유사도):
- 벡터의 방향이 중요하고 크기는 덜 중요할 때
- 텍스트 문서의 유사성을 비교할 때
- 고차원 데이터에서 작동이 잘 될 때
- 예시: 문서 유사도 검색, 추천 시스템 자연어 처리 작업
max_inner_product:
- 벡터의 방향과 크기가 중요한 의미를 가질 때
- 정규화되지 않은 벡터를 다룰 때
- 양수와 음수 값을 모두 고려해야 할 때
- 예: 추천 시스템에서 사용자-아이템 상호작용 강도를 고려할 때, 특성의 중요도가 서로 다른 기계학습 모델의 결과를 비교할 때
각 similarity metric 을 선택해야하는 기준:
- 데이터가 방향만 중요한지, 절대적 크기도 중요한지 생각. 크기가 중요하지 않고 방향만 중요하다면 cosine, dot_product 만을 고려. 둘 다 중요하면 max_inner_product, 크기만 중요하다면 l2_norm
- 데이터가 이미 정규화되어 있는지. 정규화 되어 있다면 dot_product 나 cosine 이 효율적일 수 있음.
- 대규모 데이터셋에서는 계산 효율성이 중요할 수 있으며, 이 경우 dot_product 가 cosine 보다 유리할 수 있음.
- 음수를 지원하는지. cosine 은 [-1, 1] 까지 지원하지만 dot_product 는 양수만 지원. 그래서 cosine 이 더 넓은 유사도 범위를 탐지할 수 있음.
- dot_product 는 정규화 벡터에서만 동작. cosine 은 알아서 정규화 해준다.
dot_product vs cosine:
- 둘 다 벡터의 방향이 더 중요
- cosine 은 -1 ~ 1 까지 지원, dot_product 는 양수만 지원. 그래서 cosine 이 더 넓은 유사도 범위를 할 수 있음.
- dot_product 는 cosine 보다 계산이 간단해서 대규모 데이터에서 더 빠름.
- dot_product 는 정규화 벡터에서만 동작. cosine 은 알아서 정규화해줌.
max_inner_product vs l2_norm
- max_inner_product 는 벡터의 방향과 크기도 고려하는 반면에, l2_norm 은 순수 거리만을 측정한다.
'Elasticsearch' 카테고리의 다른 글
Elasticsearch: Dense vector field type (0) | 2024.08.05 |
---|---|
Elasticsearch: kNN Methods (0) | 2024.08.02 |
Elasticsearch: Semantic Search with ELSER (0) | 2024.07.15 |
Elasticsearch: Reciprocal rank fusion (0) | 2024.07.12 |
Elasticsearch: Tune approximate kNN search (0) | 2024.07.12 |