Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Vector Search 쿼리 실행

MongoDB Vector Search 쿼리는 $vectorSearch 첫 번째 단계로 사용하는 집계 파이프라인의 형태를 취합니다. 이 페이지에서는 $vectorSearch 단계의 구문, 옵션 및 동작에 대해 설명합니다.

$vectorSearch

$vectorSearch 단계에서는 다음 필드가 있는 문서를 사용합니다.

$vectorSearch 단계를 정의할 때 exact 필드 사용하여 ANN 또는 ENN 검색 실행 할지 여부를 지정할 수 있습니다.

$vectorSearch 표시되는 파이프라인의 첫 번째 단계에 있어야 합니다.

$vectorSearch보기 정의 및 다음 파이프라인 단계에서 사용할 수 없습니다.

  • $lookup 하위 파이프라인 [1]

  • $facet 파이프라인 단계

[1] $vectorSearch 의 결과를 이 단계로 전달할 수 있습니다.

이러한 MongoDB 벡터 검색 필드 유형에 대해 자세히 학습하려면 벡터 검색을 위해 필드를 인덱싱하는 방법을 참조하세요.

MongoDB Vector Search는 반환하는 모든 문서 에 0 ~ 1 (여기서 0 는 낮은 유사성을 나타내고 1 은 높은 유사성을 나타냅니다)까지 고정된 범위 의 점수를 할당합니다.

반환된 각 문서 점수가 메타데이터 로 포함됩니다. 각 문서의 점수를 결과 세트와 함께 반환하려면 집계 파이프라인에서 $project 단계를 사용하고 score 를 프로젝트할 필드로 구성합니다. score 필드에 vectorSearchScore 값을 사용하여 $meta 표현식을 지정합니다. 구문은 다음과 같습니다.

1db.<collection>.aggregate([
2 {
3 "$vectorSearch": {
4 <query-syntax>
5 }
6 },
7 {
8 "$project": {
9 "<field-to-include>": 1,
10 "<field-to-exclude>": 0,
11 "score": { "$meta": "vectorSearchScore" }
12 }
13 }
14])

참고

파이프라인 단계 이후에만 $vectorSearch $meta 표현식 으로 사용할 수 vectorSearchScore 있습니다.score 다른 쿼리 뒤에 vectorSearchScore 를 사용하면 MongoDB MongoDB v8.2부터 경고를 기록합니다.

참고

데이터를 사전 필터링해도 MongoDB Vector Search가 $vectorSearch 쿼리에 대해 vectorSearchScore 를 사용하여 반환하는 점수에는 영향을 주지 않습니다.

$vectorSearch filter 옵션은 BSON 불리언, 날짜, objectId, 숫자, string 및 UUID 값과 일치하며, 이러한 유형의 배열도 포함됩니다.

데이터를 필터 하려는 필드를 vectorSearch 유형 인덱스 정의의 필터 유형으로 인덱스 해야 합니다. 데이터 필터링은 시맨틱 검색 의 범위를 좁히는 데 유용합니다.

중요

필터링된 쿼리는 일반적으로 이에 상응하는 필터링되지 않은 쿼리 보다 느립니다.

MongoDB Vector Search는 $vectorSearch filter 다음 MQL 연산자에 대해 옵션을 지원합니다.

유형
MQL 연산자

동등성

범위

집합 내

존재

논리

  • MongoDB Vector Search는 $eq의 짧은 형식을 지원합니다. 짧은 형식에서는 쿼리 에 $eq 을(를) 지정할 필요가 없습니다.

    예를 들어, $eq가 포함된 다음 필터를 가정하겠습니다.

    "filter": { "_id": { "$eq": ObjectId("5a9427648b0beebeb69537a5") }

    이는 $eq의 짧은 형식을 사용하는 다음 필터와 동일합니다.

    "filter": { "_id": ObjectId("5a9427648b0beebeb69537a5") }
  • $and MQL 연산자 사용하여 단일 쿼리 에서 필터 배열 을 지정할 수 있습니다.

    예를 들어 genres 필드가 Action이고 year 필드가 1999, 2000 또는 2001인 문서에 대해 다음과 같은 사전 필터를 사용한다고 가정해 보겠습니다.

    "filter": {
    "$and": [
    { "genres": "Action" },
    { "year": { "$in": [ 1999, 2000, 2001 ] } }
    ]
    }
  • 퍼지 검색, 구문 일치, 위치 필터링 및 기타 분석된 텍스트와 같은 고급 필터링 기능의 경우 단계에서 $search vectorSearch 연산자 사용합니다.

이 예시를 실행하기 전에 다음 작업을 수행하세요.

참고

mongosh를 사용하는 경우 샘플 코드의 queryVector를 터미널에 붙여넣는 것은 컴퓨터에 따라 시간이 걸릴 수 있습니다.

돌아가기

인덱스 참조

스킬 배지 획득

무료로 '벡터 검색 기초'를 마스터하세요!

자세한 내용을 알아보세요.

이 페이지의 내용