Docs Menu
Docs Home
/ /

vectorSearch (MongoDB Search 연산자)

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 다음 필드를 사용하여 쿼리를 구성합니다.

필드
유형
필요성
설명

exact

부울

옵션

numCandidates를 생략한 경우 필수 항목입니다.

ENN 또는 ANN 검색을 실행할지 여부를 지정하는 플래그입니다. 값은 다음 중 하나일 수 있습니다.

  • false - ANN 검색 실행 시

  • true - ENN 검색 실행 시

생략하는 경우 기본값은 false입니다.

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를 사용할 수도 있습니다.

filter

객체

옵션

MongoDB Search하다 연산자를 사용하여 메타데이터 또는 특정 검색 기준에 따라 문서를 미리 필터링할 수 있습니다.

자세히 알아보려면 사전 필터를 참조하세요.

limit

Int

필수 사항

결과에 반환할 문서 수(int 유형만 해당)입니다. numCandidates를 지정하는 경우 이 값은 numCandidates 값을 초과할 수 없습니다.

샤딩된 클러스터에서는 $limit$search 단계 이후에 사용하여 결과 문서 수를 제한해야 합니다.

numCandidates

Int

옵션

exactfalse이거나 생략된 경우 이 필드는 필수입니다.

검색 중에 사용할 가장 가까운 이웃의 수입니다. 값은 (<=)10000보다 작거나 같아야 합니다. 반환할 문서 수보다 작은 숫자는 지정할 수 없습니다(limit).

정확도를 높이기 위해 반환할 문서 수(limit)보다 최소 20배 더 높은 숫자를 지정하는 것이 좋습니다.

이러한 과다 요청 패턴은 근사 최근접 이웃 검색에서 지연 시간과 재현율을 균형 있게 조절하는 데 권장되는 방법이며, 특정 데이터 세트 크기와 쿼리 요구 사항에 따라 이 매개변수를 조정하는 것이 좋습니다.

path

문자열

필수 사항

검색할 인덱싱된 벡터 유형 필드입니다.

queryVector

정수 또는 실수 배열

필수 사항

float32 숫자 배열, 하위 유형 float32를 사용하는 BSON BinData 벡터, 또는 하위 유형 int1 또는 int8 유형을 사용하는 BSON BinData 벡터로 쿼리 벡터를 나타냅니다.

하위 유형 float32, int8, int1을 사용하는 BSON binData 벡터를 생성하는 방법에 대해 자세히 알아보려면 사전 양자화된 벡터를 수집하는 방법을 참조하세요.

배열 크기는 필드에 대한 인덱스 정의에서 지정된 벡터 차원 수(numDimensions)와 일치해야 합니다.

데이터를 임베드할 때 사용한 것과 동일한 모델을 사용하여 쿼리를 임베드해야 합니다.

벡터 하위 유형이 동일한 경우, full-fidelity 벡터를 사용하여 임베딩을 쿼리할 수 있습니다. binData 벡터는 하위 유형 float32에서만 가능합니다. 다른 하위 유형 (int8 또는 int1)을 사용하는 경우 MongoDB Search는 결과나 오류를 반환하지 않습니다.

score

객체

옵션

일치하는 검색 텀 결과에 할당된 점수입니다. 다음 옵션 중 하나를 사용하여 기본 점수를 수정합니다.

  • boost결과 점수에 주어진 숫자를 곱합니다.

  • constant결과 점수를 주어진 숫자로 바꿉니다.

  • function: 주어진 표현식을 사용하여 결과 점수를 대체합니다.

쿼리에서 score 사용에 대한 자세한 내용은 결과에서 문서 채점하기를 참조하십시오.

vectorSearch 연산자를 사용하여 검색할 필드를 인덱싱해야 합니다. MongoDB Search 인덱스 정의에서 다음 유형의 필드를 인덱싱할 수 있습니다.

  • 벡터 임베딩을 포함하는 필드. 이 필드는 쿼리 path 옵션에서 지정한 필드입니다.

  • 문서를 사전 필터링하는 필드. 이 필드는 쿼리 filter 옵션에서 지정한 필드입니다.

문서를 사전 필터링하여 시맨틱 검색의 범위를 좁히고 모든 벡터가 비교 대상에 포함되지 않도록 할 수 있습니다. filter 필드에서 지원되는 MongoDB Search 연산자를 사용하여 문서를 쿼리하고 필터링할 수 있습니다.

vector 유형의 인덱스 정의에서 데이터를 필터링할 필드를 반드시 인덱싱해야 합니다.

검색 결과에 각 문서의 점수를 포함할 수 있습니다. $meta 표현식을 $project 단계에서 searchScore 값으로 지정합니다. 또한 scoreDetails 필드의 $meta 표현식에 searchScoreDetails 값을 지정하여 점수에 대한 자세한 분석을 수행할 수 있습니다.

자세한 내용은 결과에서 문서의 점수를 매기기점수 세부 정보 반환을 참조하세요.

vectorSearch 연산자는 쿼리에서 최상위 연산자여야 합니다. 따라서 다음 MongoDB Search 연산자에서는 vectorSearch 연산자를 사용할 수 없습니다.

vectorSearch 유형 인덱스를 사용하여 인덱싱된 필드에는 vectorSearch 연산자를 사용하여 쿼리할 수 없습니다.

다음 $search 옵션은 vectorSearch 연산자와 함께 사용할 수 없습니다:

MongoDB 검색 플레이그라운드에서는 연산자 $search 로 쿼리를 실행 수 없습니다.vectorSearch

다음 예시에서는 샘플 데이터에서 sample_mflix.embedded_movies 컬렉션을 사용합니다. 컬렉션에 샘플 데이터를 로드하고 샘플 인덱스를 생성하면 쿼리 내의 <connection-string><index-name> 자리 표시자를 바꾼 후, 컬렉션에 대해 다음 근사 최근접 이웃등가 최근접 이웃 쿼리를 실행할 수 있습니다.

돌아가기

text

이 페이지의 내용