의미 체계 검색 이해
의미 체계 검색의 기본 사항을 살펴보겠습니다.
- 표준 어휘 검색과 어떻게 다른지.
- 벡터 포함이란?
- 벡터 데이터베이스는 무엇을 합니까?
의미 체계 검색이란?
표준 어휘 검색 또는 키워드 검색은 일치하는 문자로 문서를 쿼리합니다. 예를 들어 "light" 쿼리는 문서에 문자 light 가 표시되므로 "밝은 빛" 텍스트와 일치합니다.
유사 일치를 통해 어휘 검색을 강화할 수 있습니다. 예를 들어, 쿼리 "lights"는 "bright light" 텍스트 또는 철자가 틀린 lihgts와 한 문자 차이(s, 누락 또는 g 및 h 교환)가 있더라도 여전히 일치할 수 있습니다. 유사 항목 일치 및 형태소 분석 과 같은 다른 기술은 유용하지만 이 기술은 동의어 또는 의미상 유사한 언어(다른 관용구, 속어, 기술 어휘 등)와 일치해야 합니다. 가장 관련성이 큰 검색 결과를 어휘 검색과 함께 제공하려면 작성자는 메타데이터 또는 텍스트 자체에 키워드를 포함해야 합니다(어색한 사용자 환경일 수 있습니다).
의미 체계 검색을 입력합니다. 의미 체계 검색은 문자 유사성을 사용하지 않습니다. 대신 단어와 구에 개념의 숫자 표현을 사용합니다. 이러한 숫자 표현은 임베딩 벡터 또는 단순히 임베딩이라고 합니다.
두 포함 항목이 숫자적으로 유사한 경우 의미상 유사합니다. 이 유사성은 정확한 키워드 선택 또는 구문에 덜 민감하기 때문에 키워드 겹침을 테스트하는 것보다 더 일반적입니다.
의미 체계 검색을 수행하려면 먼저 쿼리의 포함 벡터를 생성합니다. 그런 다음, 해당 벡터를 벡터 데이터베이스와 비교합니다. 쿼리 임베딩에 가장 가까운 임베딩은 쿼리와 가장 의미상 유사한 문서입니다.
대부분의 관계형 데이터베이스 사용 사례에는 n차원 벡터를 저장하고 그 사이의 숫자 거리를 계산하는 작업이 포함되지 않습니다. 효율적인 의미 체계 검색에는 벡터 데이터베이스 기능이 필요합니다.

포함(Embeddings)
포함은 의미 체계의 숫자 표현입니다. 임베딩은 n차원 벡터, 즉 n개의 숫자로 구성된 배열로 표현됩니다. 각 차원은 포함 모델에 의해 결정되는 의미 체계 품질을 나타냅니다.

두 임베딩 벡터가 비슷한 방향을 가리키는 경우 "밝음"과 "화창함" 같은 유사한 개념을 나타냅니다. 서로 멀리 가리키는 경우 "슬픔"과 "행복" 같은 반대 개념을 나타냅니다. 임베딩 모델 구조와 학습 데이터가 유사하고 다른 것으로 간주되는 것을 결정합니다.
포함은 텍스트 및 이미지 또는 오디오와 같은 모든 종류의 데이터에 적용할 수 있습니다. 중요한 부분은 일부 모델 또는 함수에 따라 데이터를 n차원 포함 벡터로 변환하는 것입니다. 임베딩의 수치적 유사성은 해당 데이터의 의미적 유사성을 나타냅니다.
두 개의 n차원 벡터 v1 및 v2의 수치 유사성은 내적(v1·v2로 작성)으로 제공됩니다. 점 제품을 계산하려면 각 차원의 값을 쌍 단위로 곱한 다음 결과를 합산합니다.
dot_product(v1, v2) = SUM(
v1[0] * v2[0],
v1[1] * v2[1],
...,
v1[n-1] * v2[n-1],
v1[n] * v2[n]
)
포함은 단위 벡터(길이가 1인 벡터)이므로 내적은 벡터의 코사인 유사성, 즉 -1(정확히 반대 방향)과 1(정확히 같은 방향) 사이의 값과 같습니다. 코사인 유사성이 0인 벡터는 의미상 관련이 없는 직교입니다.
PCA(주 구성 요소 분석)를 사용하여 3차원 공간에 프로젝팅하여 n차원 공간을 시각화할 수 있습니다. PCA는 벡터 차원을 줄이는 표준 기술입니다. 그 결과 n차원 공간의 간단하지만 시각화 가능한 프로젝션이 생성됩니다. 이러한 방식으로 문서 포함을 렌더링하면 더 많은 유사한 문서가 클러스터에서 그룹화되고 다른 문서가 더 멀리 떨어져 있음을 확인할 수 있습니다.
이러한 정의를 고려할 때 문서 포함 컬렉션에 대해 쿼리의 의미 체계 검색을 수행하는 것은 수학적으로 간단합니다.
- 언어 모델을 사용하여 쿼리 포함을 생성합니다.
- 각 문서의 미리 계산된 포함에 대해 쿼리 포함의 내적을 가져옵니다.
- 내적을 -1부터 1까지 정렬합니다.
- 가장 관련성이 높은(의미상 유사한) 문서는 점수가 가장 높고 관련성이 가장 낮은(의미상 다른) 문서는 가장 낮은 점수를 가집니다.
수학적으로는 간단하지만 관계형 데이터베이스에서 단순하거나 성능이 좋은 쿼리는 아닙니다. 이러한 종류의 벡터 유사성 쿼리를 저장하고 처리하려면 벡터 데이터베이스를 사용합니다.
벡터 데이터베이스
벡터 데이터베이스는 포함과 같은 다차원 벡터의 스토리지 및 계산을 최적화합니다. 특히 벡터 데이터베이스는 빠르고 정확한 점 제품 계산을 제공하여 벡터 유사성 쿼리를 실행합니다.
벡터 유사성 검색에는 다음과 같은 몇 가지 사용 사례가 있습니다.
- 쿼리 이미지 포함과 유사한 이미지 찾기
- 쿼리 텍스트와 의미상 유사한 문서 찾기
- 추천 시스템에 대해 유사한 기능 및 등급이 있는 제품 찾기
시맨틱 검색은 쿼리 임베딩과 저장된 각 임베딩의 유사성을 위해 벡터 데이터베이스를 쿼리합니다. 그런 다음 애플리케이션은 임베딩에 해당하는 데이터를 가져올 수 있습니다.
선택할 수 있는 네이티브 벡터 데이터베이스 및 데이터베이스 확장이 많이 있습니다. 다음 Azure 서비스는 벡터 데이터베이스 요구 사항을 충족하는 데 도움이 될 수 있습니다.