정의
vectorSearch 연산자는 지정된 필드 의 벡터 임베딩에 대해 근사 최근접 이웃 또는 등가 최근접 이웃 검색을 수행합니다. 이 연산자 사용하여 퍼지 검색, 구문 일치, 위치 필터링, 와일드카드 패턴 일치 등과 같은 분석된 텍스트 기능을 시맨틱 검색 과 함께 추가할 수 있습니다.
구문
vectorSearch 의 구문은 다음과 같습니다:
{ "$search": { "index": "<index name>", // optional, defaults to "default" "vectorSearch": { "exact": true | false, "filter": {<operator-specification>}, "limit": <number-of-results>, "numCandidates": <number-of-candidates>, "path": "<field-to-search>", "queryVector": [<array-of-numbers>], "score": {<options>} } } }
옵션
vectorSearch 다음 필드를 사용하여 쿼리를 구성합니다.
필드 | 유형 | 필요성 | 설명 |
|---|---|---|---|
| 부울 | 옵션 |
ENN 또는 ANN 검색을 실행할지 여부를 지정하는 플래그입니다. 값은 다음 중 하나일 수 있습니다.
생략하는 경우 기본값은 MongoDB Vector Search는 MongoDB v6.0.11 실행 Atlas 클러스터에서 근사 최근접 이웃 검색 지원하며, v7.0.2 이상 및 등가 최근접 이웃 MongoDB v6.0.16를 실행하는 클러스터에서 검색, v7.0.10, v7.3.2, 또는 그 이후 버전. Atlas CLI 사용하여 생성하는자체 관리 또는 로컬 Atlas 배포 와 함께 MongoDB Vector Search를 사용할 수도 있습니다. |
| 객체 | 옵션 | |
| Int | 필수 사항 | |
| Int | 옵션 |
검색 중에 사용할 가장 가까운 이웃의 수입니다. 값은 ( 정확도를 높이기 위해 반환할 문서 수( 이러한 과다 요청 패턴은 근사 최근접 이웃 검색에서 지연 시간과 재현율을 균형 있게 조절하는 데 권장되는 방법이며, 특정 데이터 세트 크기와 쿼리 요구 사항에 따라 이 매개변수를 조정하는 것이 좋습니다. |
| 문자열 | 필수 사항 | 검색할 인덱싱된 벡터 유형 필드입니다. |
| 정수 또는 실수 배열 | 필수 사항 |
하위 배열 크기는 필드에 대한 인덱스 정의에서 지정된 벡터 차원 수( 데이터를 임베드할 때 사용한 것과 동일한 모델을 사용하여 쿼리를 임베드해야 합니다. 벡터 하위 유형이 동일한 경우, full-fidelity 벡터를 사용하여 임베딩을 쿼리할 수 있습니다. |
| 객체 | 옵션 | 일치하는 검색 텀 결과에 할당된 점수입니다. 다음 옵션 중 하나를 사용하여 기본 점수를 수정합니다.
쿼리에서 |
행동
MongoDB 검색 인덱스
vectorSearch 연산자를 사용하여 검색할 필드를 인덱싱해야 합니다. MongoDB Search 인덱스 정의에서 다음 유형의 필드를 인덱싱할 수 있습니다.
벡터 임베딩을 포함하는 필드. 이 필드는 쿼리
path옵션에서 지정한 필드입니다.문서를 사전 필터링하는 필드. 이 필드는 쿼리
filter옵션에서 지정한 필드입니다.
사전 필터
문서를 사전 필터링하여 시맨틱 검색 범위를 좁힐 수 있습니다. filter 필드 에서 지원되는 MongoDB Search 연산자 사용하여 문서를 쿼리 하고 필터하다 .
중요
필터링된 쿼리는 일반적으로 이에 상응하는 필터링되지 않은 쿼리 보다 느립니다.
vector 유형의 인덱스 정의에서 데이터를 필터링할 필드를 반드시 인덱싱해야 합니다.
점수
검색 결과에 각 문서의 점수를 포함할 수 있습니다. $meta 표현식을 $project 단계에서 searchScore 값으로 지정합니다. 또한 scoreDetails 필드의 $meta 표현식에 searchScoreDetails 값을 지정하여 점수에 대한 자세한 분석을 수행할 수 있습니다.
자세한 내용은 결과에서 문서의 점수를 매기기 및 점수 세부 정보 반환을 참조하세요.
vectorSearch 연산자 제한 사항
vectorSearch 연산자는 쿼리에서 최상위 연산자여야 합니다. 따라서 다음 MongoDB Search 연산자에서는 vectorSearch 연산자를 사용할 수 없습니다.
vectorSearch 유형 인덱스 사용하여 인덱싱된 vectorSearch 필드를 쿼리 데 연산자 사용할 수 없습니다.
다음 $search 옵션은 vectorSearch 연산자와 함께 사용할 수 없습니다:
MongoDB Search Playground에서는 $search 쿼리를 vectorSearch 연산자와 함께 실행할 수 없습니다.
예시
다음 예시에서는 샘플 데이터에서 sample_mflix.embedded_movies 컬렉션을 사용합니다. 컬렉션에 샘플 데이터를 로드하고 샘플 인덱스를 생성하면 쿼리 내의 <connection-string> 및 <index-name> 자리 표시자를 바꾼 후, 컬렉션에 대해 다음 근사 최근접 이웃 및 등가 최근접 이웃 쿼리를 실행할 수 있습니다.