vector 필드 유형과 vectorSearch 연산자는 미리 보기 기능으로 제공됩니다. 해당 기능과 관련 문서는 미리보기 기간 동안 언제든지 변경될 수 있습니다. 자세한 내용은 미리 보기 기능을 참조하세요.정의
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 v,6.0.11 v 이상을 실행 Atlas 클러스터에서 ANN 검색7.0.2 60167010지원하고, MongoDB v.., v 를 실행 클러스터에서 ENN 검색 지원합니다..,7 3v..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 로 쿼리를 실행 수 없습니다.vectorSearch
예시
다음 예시에서는 샘플 데이터에서 sample_mflix.embedded_movies 컬렉션을 사용합니다. 컬렉션에 샘플 데이터를 로드하고 샘플 인덱스를 생성하면 쿼리 내의 <connection-string> 및 <index-name> 자리 표시자를 바꾼 후, 컬렉션에 대해 다음 근사 최근접 이웃 및 등가 최근접 이웃 쿼리를 실행할 수 있습니다.