의미 체계 검색 이해

완료됨

의미 체계 검색의 기본 사항을 살펴보겠습니다.

  • 표준 어휘 검색과의 차이점.
  • 벡터 포함이란?
  • 벡터 데이터베이스는 어떤 역할을 하나요?

표준 어휘 검색 또는 키워드 검색은 문자를 일치시켜 문서를 쿼리합니다. 예를 들어, 쿼리 "light"는 문서에 문자 light가 나타나므로 "bright light"라는 텍스트와 일치합니다.

유사 일치를 통해 어휘 검색을 강화할 수 있습니다. 예를 들어, 쿼리 "lights"는 "bright light" 텍스트 또는 철자가 틀린 lihgts와 한 문자 차이(s, 누락 또는 gh 교환)가 있더라도 여전히 일치할 수 있습니다. 유사 일치 및 형태소 분석과 같은 기타 기술이 도움이 되지만 이 기술은 동의어 또는 의미 체계상 유사한 언어(다른 구문, 속어, 기술 어휘 등)와 일치해야 합니다. 어휘 검색을 통해 가장 관련성이 높은 검색 결과를 제공하려면 작성자는 메타데이터나 텍스트 자체에 키워드를 포함해야 합니다(이는 사용자 환경이 불편할 수 있음).

의미 체계 검색을 입력합니다. 의미 체계 검색은 문자 유사성을 사용하지 않습니다. 대신 단어와 구의 개념을 숫자로 표현합니다. 이러한 숫자 표현을 포함 벡터 또는 간단히 포함이라고 합니다.

두 포함이 수치적으로 유사하면 의미 체계상으로도 유사합니다. 이러한 유사성은 정확한 키워드 선택이나 문구에 덜 중요하기 때문에 키워드 겹침을 테스트하는 것보다 더 일반적입니다.

의미 체계 검색을 수행하려면 먼저 쿼리의 포함 벡터를 생성합니다. 그런 다음 해당 벡터를 벡터 데이터베이스와 비교합니다. 쿼리 포함에 가장 가까운 포함은 의미 체계상 쿼리와 가장 유사한 문서입니다.

대부분의 관계형 데이터베이스 사용 사례에는 n차원 벡터를 저장하고 그 사이의 수치적 거리를 계산하는 작업이 포함되지 않습니다. 효율적인 의미 체계 검색에는 벡터 데이터베이스 기능이 필요합니다.

OpenAI 포함 API를 통해 포함 벡터가 되는 문서와 쿼리를 보여 주는 다이어그램. 그런 다음 이러한 벡터는 코사인 거리를 사용하여 비교됩니다.

포함

포함은 의미 체계를 숫자로 표현한 것입니다. 포함은 n차원 벡터, 즉 n 숫자 배열로 표현됩니다. 각 차원은 포함 모델에 의해 결정된 의미 체계 품질을 나타냅니다.

Azure OpenAI 포함 API로 전송되는

두 개의 포함 벡터가 유사한 방향을 가리키는 경우 "밝음" 및 "맑음"과 같은 유사한 개념을 나타냅니다. 서로 멀리 떨어져 있으면 "슬픔", "행복함" 등 반대되는 개념을 나타냅니다. 포함 모델 구조와 학습 데이터에 따라 무엇이 유사하고 다른지 결정됩니다.

포함은 텍스트와 이미지, 오디오 등 모든 종류의 데이터에 적용할 수 있습니다. 중요한 부분은 일부 모델이나 함수를 기반으로 데이터를 n차원 포함 벡터로 변환하는 것입니다. 포함의 수치적 유사성은 해당 데이터의 의미 체계 유사성을 프록시합니다.

두 개의 n차원 벡터 v1v2의 수치 유사성은 내적(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(주 구성 요소 분석)을 사용하여 n차원 공간을 3차원 공간에 프로젝션함으로써 시각화할 수 있습니다. PCA는 벡터 차원을 줄이는 표준 기술입니다. 결과는 간소화되었지만 시각화 가능한 n차원 공간의 프로젝션입니다. 이러한 방식으로 문서 포함을 렌더링하면 더 유사한 문서가 클러스터로 그룹화되고 더 많은 다른 문서가 더 멀리 떨어져 있음을 알 수 있습니다.

이러한 정의가 주어지면 문서 포함 컬렉션에 대해 쿼리의 의미 체계 검색을 수행하는 것은 수학적으로 간단합니다.

  1. 언어 모델을 사용하여 쿼리 포함을 생성합니다.
  2. 각 문서의 미리 계산된 포함에 대해 쿼리 포함의 내적을 가져옵니다.
  3. 내적을 -1부터 1까지 정렬합니다.
  4. 가장 관련성이 높은(의미 체계적으로 유사한) 문서는 가장 높은 점수를 가지며, 관련성이 가장 낮은(의미 체계적으로 다른) 문서는 가장 낮은 점수를 갖습니다.

수학적으로는 간단하지만 관계형 데이터베이스에서는 단순하거나 성능이 뛰어난 쿼리가 아닙니다. 이러한 종류의 벡터 유사성 쿼리를 저장하고 처리하려면 벡터 데이터베이스를 사용합니다.

벡터 데이터베이스

벡터 데이터베이스는 포함과 같은 다차원 벡터의 저장 및 계산을 최적화합니다. 특히, 벡터 데이터베이스는 벡터 유사성 쿼리를 실행하기 위해 빠르고 정확한 내적 계산을 제공합니다.

벡터 유사성 검색에는 여러 가지 사용 사례가 있습니다.

  • 쿼리 이미지 포함과 유사한 이미지 찾기
  • 쿼리 텍스트와 의미 체계상 유사한 문서 찾기
  • 권장 사항 시스템과 유사한 기능 및 등급을 가진 제품 찾기

의미 체계 검색은 저장된 각 포함에 대한 쿼리 포함의 유사성을 벡터 데이터베이스에 쿼리합니다. 그러면 애플리케이션은 포함에 해당하는 데이터를 가져올 수 있습니다.

선택할 수 있는 네이티브 벡터 데이터베이스와 데이터베이스 확장이 많이 있습니다. 다음 Azure 서비스는 벡터 데이터베이스 요구 사항을 충족하는 데 도움이 될 수 있습니다.