문서 메뉴
문서 홈
/
MongoDB Atlas
/ /

벡터 검색을 위해 필드를 인덱싱하는 방법

이 페이지의 내용

  • 고려 사항
  • 구문
  • vector 유형 정보
  • filter 유형 정보
  • Atlas Vector Search 인덱스 필드
  • Atlas Vector Search 인덱스 생성 및 관리
  • 노드 상태

vectorSearch 유형을 사용하여 $vectorSearch 쿼리를 실행하기 위한 필드를 인덱싱할 수 있습니다. 쿼리하려는 벡터 임베딩의 인덱스와 데이터를 사전 필터링하는 데 사용할 부울, 숫자 또는 문자열 값을 정의할 수 있습니다. 데이터 필터링은 시맨틱 검색의 범위를 좁히고 멀티 테넌트 환경과 같이 특정 벡터 임베딩이 비교 대상으로 고려되지 않도록 하는 데 유용합니다.

Atlas UI 및 Atlas 관리 API를 사용하여 Atlas Vector Search 인덱스를 만들 수 있습니다.

참고

더 이상 사용되지 않는 knnBeta 연산자를 사용하여 vectorSearch 유형 인덱스 정의를 사용하여 인덱싱된 필드를 쿼리할 수 없습니다.

vectorSearch 유형 인덱스 정의에서 문서 배열 내의 필드 또는 객체 배열 내의 필드를 인덱싱할 수 없습니다. 점 표기법을 사용하여 문서 내부의 필드를 인덱싱할 수 있습니다.

다음 구문은 vectorSearch 인덱스 유형을 정의합니다.

1{
2 "fields":[
3 {
4 "type": "vector",
5 "path": "<field-to-index>",
6 "numDimensions": <number-of-dimensions>,
7 "similarity": "euclidean | cosine | dotProduct"
8 },
9 {
10 "type": "filter",
11 "path": "<field-to-index>"
12 },
13 ...
14 ]
15}

벡터 필드에는 파이프라인 $vectorSearch 단계를 사용하여 쿼리하기 위한 BSON 데이터 유형의숫자 배열이 포함되어야 합니다.double 벡터 필드를 fields 배열 내에서 vector 유형으로 인덱스화해야 합니다.

다음 구문은 vector 필드 유형을 정의합니다.

1{
2 "fields":[
3 {
4 "type": "vector",
5 "path": <field-to-index>,
6 "numDimensions": <number-of-dimensions>,
7 "similarity": "euclidean | cosine | dotProduct"
8 },
9 ...
10 ]
11}

선택적으로 부울, 숫자, 날짜 및 문자열 값을 인덱싱하여 데이터를 사전 필터링할 수 있습니다. 데이터 필터링은 시맨틱 검색의 범위를 좁히고 모든 벡터가 비교 대상으로 고려되지 않도록 하는 데 유용합니다. fields 배열 내의 filter 유형을 사용하여 부울, 숫자, 날짜 및 문자열 필드를 인덱싱해야 합니다.

다음 구문은 filter 필드 유형을 정의합니다.

1{
2 "fields":[
3 {
4 "type": "vector",
5 ...
6 },
7 {
8 "type": "filter",
9 "path": "<field-to-index>"
10 },
11 ...
12 ]
13}

참고

데이터를 사전 필터링해도 Atlas Vector Search가 $vectorSearch 쿼리에 대해 $vectorSearchScore 를 사용하여 반환하는 점수에는 영향을 주지 않습니다.

Atlas Vector Search 인덱스 정의에는 다음 필드가 사용됩니다.

옵션
유형
필요성
목적
fields
문서 배열
필수 사항
인덱싱할 벡터 및 필터 필드(문서당 하나씩). 하나 이상의 문서에 벡터 필드에 대한 필드 정의가 포함되어 있어야 합니다. 선택적으로 데이터 사전 필터링을 위해 문서당 하나씩 숫자, 부울 및 문자열 필드를 인덱싱할 수도 있습니다.
fields.type
문자열
필수 사항

$vectorSearch 에 대한 필드를 인덱싱하는 데 사용할 필드 유형입니다. 다음 값 중 하나를 지정할 수 있습니다.

  • vector - 벡터 임베딩이 포함된 필드의 경우.

  • filter - 부울, 숫자 또는 문자열 값이 포함된 필드의 경우.

fields.path
문자열
필수 사항

인덱싱할 필드의 이름입니다. 중첩된 필드의 경우 점 표기법을 사용하여 포함된 필드의 경로를 지정합니다. 두 개의 연속된 점(.)과 점으로 끝나는 필드 이름(.)으로 필드 이름을 인덱싱할 수 없습니다. 예를 들어 Atlas Vector Search는 다음 필드 이름에 대한 인덱싱을 지원 하지 않습니다 .

foo..bar
필드 이름에 연속된 두 개의 점이 있습니다.
foo_bar.
필드 이름은 점으로 끝납니다.
fields.numDimensions
int
필수 사항
Atlas Vector Search가 인덱스 타임 및 쿼리 타임에 시행하는 벡터 차원의 수입니다. 4096 보다 작거나 같은 값을 지정해야 합니다. 이 필드는 vector 유형 필드에 대해서만 설정할 수 있습니다.
fields.similarity
문자열
필수 사항

상위 K-최근접 이웃을 검색하는 데 사용하는 벡터 유사성 함수입니다. 이 필드는 vector 유형 필드에 대해서만 설정할 수 있습니다. 값에는 다음이 포함됩니다.

  • euclidean - 벡터의 끝과 끝 사이의 거리를 측정합니다. 이 값을 사용하면 다양한 차원을 기반으로 유사성을 측정할 수 있습니다. 자세히 알아보려면 유클리드를 참조하세요.

  • cosine - 벡터 사이의 각도를 기준으로 유사성을 측정합니다. 이 값을 사용하면 크기에 따라 배율이 조정되지 않는 유사성을 측정할 수 있습니다. 에는 크기가 0인 벡터를 사용할 cosine 수 없습니다. 코사인 유사성을 측정하려면 벡터를 정규화하고 대신 를 사용하는 것이 dotProduct 좋습니다. 자세한 내용은 코사인을 참조하세요.

  • dotProduct - 과 유사하게 cosine 측정하지만 벡터의 크기를 고려합니다. 이 값을 사용하면 각도와 크기를 기준으로 유사성을 효율적으로 측정할 수 있습니다. 을(를) 사용하려면 dotProduct 인덱스 타임 및 쿼리 타임에 벡터를 단위 길이로 정규화해야 합니다. 자세한 내용은 도트 제품을 참조하세요.

참고

크기를 정규화하면 유사성 측정에서 cosinedotProduct 은 거의 동일합니다.

Atlas UI 및 Atlas 관리 API에서 Atlas Vector Search 인덱스를 생성하고 관리할 수 있습니다. 자세한 내용은 다음을 참조하세요.

Atlas Vector Search 검색 인덱스를 만들면 Status 열에 cluster의 프라이머리 노드에 있는 검색 인덱스의 현재 상태가 표시됩니다. 상태 아래에 있는 View status details 링크를 클릭하면 클러스터의 모든 노드에 있는 인덱스 상태를 볼 수 있습니다.

Status 열이 Active로 표시되면 인덱스가 사용할 준비가 된 것입니다. 다른 상태에서는 인덱스에 대한 쿼리가 불완전한 결과를 반환할 수 있습니다.

상태
설명
시작되지 않음
Atlas가 아직 인덱스 빌드를 시작하지 않았습니다.
초기 동기화

Atlas가 인덱스를 작성하거나 편집 후 인덱스를 다시 작성하고 있습니다. 인덱스가 이 상태인 경우 다음과 같습니다:

  • 새 인덱스의 경우 Atlas Vector Search는 인덱스 빌드가 완료될 때까지 쿼리를 제공하지 않습니다.

  • 기존 인덱스의 경우 인덱스가 다시 빌드될 때까지 기존 쿼리와 새 쿼리에 대해 이전 인덱스를 계속 사용할 수 있습니다.

활성
인덱스를 사용할 준비가 되었습니다.
복구 중
복제에 오류가 발생했습니다. 이 상태는 일반적으로 mongod oplog에서 현재 복제 지점을 더 이상 사용할 수 없을 때 발생합니다. 기존 인덱스가 업데이트되고 상태가 Active 로 변경될 때까지 기존 인덱스를 계속 쿼리할 수 있습니다. View status details 모달 창의 오류를 사용하여 문제를 해결하세요. 자세히 알아보려면 Atlas Search 문제 해결을 참조하세요.
실패하였습니다.
Atlas에서 인덱스를 작성할 수 없습니다. View status details 모달 창의 오류를 사용하여 문제를 해결하세요. 자세한 내용은 Atlas Search 문제 해결을 참조하세요.
삭제 진행 중
Atlas가 클러스터 노드에서 인덱스를 삭제하는 중입니다.

Atlas가 인덱스를 빌드하는 동안 그리고 빌드가 완료된 후 Documents 열에 인덱싱된 문서의 백분율과 개수가 표시됩니다. 이 열에는 컬렉션의 총 문서 수도 표시됩니다.

← Atlas Vector Search 인덱스 생성 및 관리