벡터 검색을 위해 필드를 인덱싱하는 방법
이 페이지의 내용
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 }
vector
유형 정보
벡터 필드에는 파이프라인 $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 }
filter
유형 정보
선택적으로 부울, 숫자, 날짜 및 문자열 값을 인덱싱하여 데이터를 사전 필터링할 수 있습니다. 데이터 필터링은 시맨틱 검색의 범위를 좁히고 모든 벡터가 비교 대상으로 고려되지 않도록 하는 데 유용합니다. 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 인덱스 필드
Atlas Vector Search 인덱스 정의에는 다음 필드가 사용됩니다.
옵션 | 유형 | 필요성 | 목적 | ||||||
---|---|---|---|---|---|---|---|---|---|
fields | 문서 배열 | 필수 사항 | 인덱싱할 벡터 및 필터 필드(문서당 하나씩). 하나 이상의 문서에 벡터 필드에 대한 필드 정의가 포함되어 있어야 합니다. 선택적으로 데이터 사전 필터링을 위해 문서당 하나씩 숫자, 부울 및 문자열 필드를 인덱싱할 수도 있습니다. | ||||||
fields.type | 문자열 | 필수 사항 |
| ||||||
fields.path | 문자열 | 필수 사항 | 인덱싱할 필드의 이름입니다. 중첩된 필드의 경우 점 표기법을 사용하여 포함된 필드의 경로를 지정합니다. 두 개의 연속된 점(
| ||||||
fields.numDimensions | int | 필수 사항 | Atlas Vector Search가 인덱스 타임 및 쿼리 타임에 시행하는 벡터 차원의 수입니다. 4096 보다 작거나 같은 값을 지정해야 합니다. 이 필드는 vector 유형 필드에 대해서만 설정할 수 있습니다. | ||||||
fields.similarity | 문자열 | 필수 사항 | 상위 K-최근접 이웃을 검색하는 데 사용하는 벡터 유사성 함수입니다. 이 필드는
참고크기를 정규화하면 유사성 측정에서 |
Atlas Vector Search 인덱스 생성 및 관리
Atlas UI 및 Atlas 관리 API에서 Atlas Vector Search 인덱스를 생성하고 관리할 수 있습니다. 자세한 내용은 다음을 참조하세요.
노드 상태
Atlas Vector Search 검색 인덱스를 만들면 Status 열에 cluster의 프라이머리 노드에 있는 검색 인덱스의 현재 상태가 표시됩니다. 상태 아래에 있는 View status details 링크를 클릭하면 클러스터의 모든 노드에 있는 인덱스 상태를 볼 수 있습니다.
Status 열이 Active로 표시되면 인덱스가 사용할 준비가 된 것입니다. 다른 상태에서는 인덱스에 대한 쿼리가 불완전한 결과를 반환할 수 있습니다.
상태 | 설명 |
---|---|
시작되지 않음 | Atlas가 아직 인덱스 빌드를 시작하지 않았습니다. |
초기 동기화 | Atlas가 인덱스를 작성하거나 편집 후 인덱스를 다시 작성하고 있습니다. 인덱스가 이 상태인 경우 다음과 같습니다:
|
활성 | 인덱스를 사용할 준비가 되었습니다. |
복구 중 | 복제에 오류가 발생했습니다. 이 상태는 일반적으로 mongod oplog에서 현재 복제 지점을 더 이상 사용할 수 없을 때 발생합니다. 기존 인덱스가 업데이트되고 상태가 Active 로 변경될 때까지 기존 인덱스를 계속 쿼리할 수 있습니다. View status details 모달 창의 오류를 사용하여 문제를 해결하세요. 자세히 알아보려면 Atlas Search 문제 해결을 참조하세요. |
실패하였습니다. | Atlas에서 인덱스를 작성할 수 없습니다. View status details 모달 창의 오류를 사용하여 문제를 해결하세요. 자세한 내용은 Atlas Search 문제 해결을 참조하세요. |
삭제 진행 중 | Atlas가 클러스터 노드에서 인덱스를 삭제하는 중입니다. |
Atlas가 인덱스를 빌드하는 동안 그리고 빌드가 완료된 후 Documents 열에 인덱싱된 문서의 백분율과 개수가 표시됩니다. 이 열에는 컬렉션의 총 문서 수도 표시됩니다.