vector 필드 유형 및 vectorSearch 연산자 미리보기 기능으로 사용할 수 있습니다. 기능 및 해당 설명서는 미리 보기 기간에 언제든지 변경될 수 있습니다. 자세한 학습 은 미리보기 기능을 참조하세요.정의
vectorSearch 연산자 지정된 필드 의 벡터 임베딩에 대해ANN 또는 ENN 검색 수행합니다. 이 연산자 사용하여 퍼지 검색, 구문 일치, 위치 필터링, 와일드카드 패턴 일치 등과 같은 분석된 텍스트 기능을 시맨틱 검색 과 함께 추가할 수 있습니다.
구문
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를 실행 클러스터에서 ANN 검색 지원하며, v7.0.2 이상 및 MongoDB v 를 실행 클러스터에서 ENN 검색 6 016.., v7.0.10, v7.3.2, 또는 그 이후 버전. |
| 객체 | 옵션 | |
| Int | 필수 사항 | |
| Int | 옵션 |
검색 중에 사용할 가장 가까운 이웃의 수입니다. 값은 ( 정확도를 높이기 위해 반환할 문서 수( 이러한 과다 요청 패턴은 근사 최근접 이웃 검색에서 지연 시간과 재현율을 균형 있게 조절하는 데 권장되는 방법이며, 특정 데이터 세트 크기와 쿼리 요구 사항에 따라 이 매개변수를 조정하는 것이 좋습니다. |
| 문자열 | 필수 사항 | 검색할 인덱싱된 벡터 유형 필드입니다. |
| 정수 또는 부동 소수점 배열 | 필수 사항 |
하위 배열 크기는 필드 에 데이터를 임베드할 때 사용한 것과 동일한 모델을 사용하여 쿼리를 임베드해야 합니다. 벡터 하위 유형이 동일한 한 완전 충실도 벡터를 사용하여 임베딩을 쿼리 할 수 있습니다. 이는 하위 유형이 |
| 객체 | 옵션 | 일치하는 검색 텀 결과에 할당된 점수입니다. 다음 옵션 중 하나를 사용하여 기본 점수를 수정합니다.
쿼리에서 |
행동
MongoDB 검색 인덱스
검색 하려면 vectorSearch 연산자 사용하여 필드를 인덱스 해야 합니다. MongoDB Search 인덱스 정의에서 다음 유형의 필드를 인덱스 할 수 있습니다.
벡터 임베딩을 포함하는 필드입니다. 이는 쿼리
path옵션에서 지정하는 필드 입니다.문서를 사전 필터링할 필드입니다. 다음은 쿼리
filter옵션에서 지정하는 필드입니다.
사전 필터
문서를 사전 필터링하여 시맨틱 검색 범위를 좁히고 모든 벡터가 비교 대상으로 고려되지 않도록 할 수 있습니다. filter 필드 에서 지원되는 MongoDB Search 연산자 사용하여 문서를 쿼리 하고 필터하다 수 있습니다.
유형에 대한 인덱스 정의에서 데이터를 필터하다 하려는 필드를 인덱스 해야 합니다.vector
점수
검색 결과에 각 문서 의 점수를 포함할 수 searchScore 있습니다.$project 단계에서 값을 사용하여 $meta 표현식 지정합니다.searchScoreDetails 점수에 scoreDetails 대한 자세한 분석을 위해 필드 $meta 표현식 에 값을 지정할 수도 있습니다.
vectorSearch 연산자 제한 사항
vectorSearch 연산자 쿼리에서 최상위 연산자 여야 합니다. 따라서 vectorSearch 다음 MongoDB Search 연산자 내에서 연산자 사용할 수 없습니다.
vectorSearch 유형 인덱스 사용하여 인덱싱된 vectorSearch 필드를 쿼리 데 연산자 사용할 수 없습니다.
$search 다음 옵션은 vectorSearch 연산자 와 함께 사용할 수 없습니다.
Search Tester를 사용하여 연산자 $search로 쿼리를 실행 수 없습니다.vectorSearch
예시
다음 예제에서는 sample_mflix.embedded_movies 샘플 데이터의 컬렉션 사용합니다. 샘플 데이터를 로드하고 컬렉션 에 샘플 인덱스 생성하면 쿼리에서 및 자리 표시자를 바꾼 후 <connection-string> <index-name> 컬렉션 에 대해 다음 ANN 및 ENN 쿼리를 실행 수 있습니다.