요구사항: 지난번에 임베딩 모델을 선택하고 벡터를 얻는 방법에 관한 글을 썼는데, 임베딩 모델을 호출해 벡터 값을 얻고 벡터 데이터베이스에 저장한 후 벡터 유사도를 계산할 때 어떤 알고리즘을 사용해야 할까요?
벡터
선형대수학에서 벡터는 종종 더 추상적인 벡터 공간(선형 공간이라고도 함)에서 정의됩니다. 벡터는 벡터 공간에서 기본적인 구성 요소입니다.
(많은 화살표가 여러 벡터를 나타냅니다)
벡터 유사성
벡터 유사도 계산을 위한 몇 가지 방법:
- 유클리드 거리
- 코사인 유사성
- 피어슨 상관계수 (피어슨)
- 조정 코사인
- 해밍 거리
- 맨해튼 거리
- 체비셰프 거리
- 유클리드 거리
코사인 유사성
코사인 유사성은 두 벡터 사이의 각도의 코사인 값을 측정하여 두 벡터 간의 유사성을 측정합니다. 0도 각도의 코사인 값은 1이며, 다른 각도의 코사인 값은 1을 넘지 않습니다; 그리고 그 최소 값은 -1입니다. 따라서 두 벡터 사이의 각도의 코사인 값이 두 벡터가 대략 같은 방향을 가리키는지 여부를 결정합니다. 두 벡터가 같은 점이 있을 때, 코사인 유사도 값은 1이다; 두 벡터 사이의 각도가 90°일 때, 코사인 유사도 값은 0이 됩니다. 두 벡터가 반대 방향을 가리키면 코사인 유사도의 값은 -1이 됩니다. 이 결과는 벡터의 길이와는 무관하며, 벡터의 방향에만 영향을 미친다. 코사인 유사성은 보통 양의 공간에서 사용되므로, 주어진 값은 -1에서 1 사이입니다.
코사인 유사성은 벡터 공간에서 두 벡터 간 각도의 코사인 값을 두 개인 간 차이의 크기로 사용합니다. 코사인 값이 1에 가까울수록 각도는 0도에 가까워지며, 즉 두 벡터가 더 비슷해져서 이를 '코사인 유사성'이라고 합니다.
피어슨 상관계수
두 확률 변수 X와 Y가 주어졌을 때, 피어슨 상관계수를 사용하여 두 변수의 상관관계를 측정할 수 있으며, 다음 공식을 사용할 수 있습니다:
자카드 계수
두 집합 X와 Y가 있다고 가정하자(여기서 두 집합은 벡터가 아님을 유의), 계산 공식은 다음과 같다:
도트 곱
정량적 곱은 스칼라 곱 또는 점곱이라고도 하며, 유클리드 공간에서는 내적이라고 불리며, 해당 원소들을 곱하고 더하면 스칼라 양(즉, 숫자)이 됩니다. 이는 실수 R 위의 두 벡터를 받아들이고 실수 스칼라를 반환하는 이진 연산을 의미합니다. 이는 유클리드 공간의 표준 내적이다.
공통 거리
민코프스키 거리
민코프스키 거리는 여러 거리 측정 공식의 일반화된 표현식으로, p=1일 때 민코프스키 거리는 맨해튼 거리이다; p=2일 때, 민코프스키 거리는 유클리드 거리이다; 민코프스키 거리는 체비셰프 거리의 한계 형태를 취한다.
맨해튼 거리
유클리드 거리
체비셰프 거리
해밍 거리
정보 이론에서 두 개의 동일한 문자열 사이의 헤밍 거리는 두 문자열에 대응하는 서로 다른 위치에 있는 문자의 수이다. 두 개의 문자열이 있다고 가정하자: x=[x1,x2,...,xn]과 y=[y1,y2,...,yn], 두 문자열 사이의 거리는 다음과 같다:
여기서 II는 직설 함수를 나타내며, 두 함수 모두 같은 함수에 대해 1이고, 그렇지 않으면 0이다.
KL 분기
확률 변수 X와 두 확률 분포 P, Q가 주어졌을 때, KL 발산을 사용하여 두 분포 간 차이를 다음 공식으로 측정할 수 있습니다:
요약
Pip 곱 거리와 코사인 유사도는 벡터 또는 텍스트 데이터의 유사성을 측정하는 데 자주 사용됩니다。 주로 텍스트 마이닝, 자연어 처리, 정보 검색, 추천 시스템 등 벡터 유사성을 측정하는 데 사용됩니다. Sentence-BERT나 다른 사전 학습 모델 같은 현대 임베딩 모델을 사용할 경우, 기본 출력은 보통 정규화되어 있습니다. 예를 들어 "점 누적이것이 선호되는 선택입니다.
참조:
하이퍼링크 로그인이 보입니다.
하이퍼링크 로그인이 보입니다.
하이퍼링크 로그인이 보입니다.
하이퍼링크 로그인이 보입니다. |