AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.

$vectorSearch 애그리게이션 단계

$vectorSearch 단계는 MongoDB 벡터 검색 쿼리의 결과로 각 스트리밍 문서를 강화합니다. 각 입력 문서에 대해 단계는 컬렉션에 대해 $vectorSearch 쿼리를 실행하고 결과를 지정한 필드에 첨부합니다.

$vectorSearch 파이프라인의 중간 단계여야 합니다. 파이프라인의 $source 또는 싱크로 사용하지 마십시오.

$vectorSearch 파이프라인 단계의 프로토타입 형식은 다음과 같습니다.

{ "$vectorSearch": { "from": { "connectionName": "<registered-atlas-connection>", "db": "<database>", "coll": "<collection>" }, "as": "<output-field>", "queryVector": [<number>, ...] | <expression>, "query": { "text": "<string>" | <expression> }, "model": "<embedding-model>", "index": "<vector-index-name>", "path": "<field-containing-vectors>", "numCandidates": <int>, "limit": <int>, "filter": { ... }, "exact": <bool>, "searchNodePreference": { "key": "<preference>" }, "pipeline": [ { $<aggregation-stage>: { ... } }, ... ], "let": { "<variable>": <expression>, . . . } }}

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

필드
유형
필요성
설명

from

문서

필수 사항

각 입력 문서에 대해 $vectorSearch이(가) 쿼리하는 대상 Atlas 컬렉션을 지정하는 문서입니다.

from.connectionName

문자열

필수 사항

연결 레지스트리에 있는 Atlas 연결 이름입니다. Atlas Stream Processing은 파스 시간에 다른 연결 유형을 거부합니다.

from.db

리터럴 string

필수 사항

대상 데이터베이스의 이름입니다.

from.coll

리터럴 string

필수 사항

MongoDB 벡터 검색 인덱스가 포함된 대상 컬렉션의 이름입니다.

as

문자열

필수 사항

검색 결과 배열을 위한 스트리밍 문서의 출력 필드입니다. MongoDB 벡터 검색이 일치하는 문서를 반환하지 않으면 Atlas Stream Processing은 이 필드를 빈 배열로 설정합니다.

경고: 이 필드가 비어 있거나 스트림 메타데이터 필드 이름과 충돌되면 Atlas Stream Processing은 시작 시간에 StreamProcessorInvalidOptions 오류를 보고합니다.

queryVector

배열 | 필드 경로 표현식

조건부

일치하는 문서를 검색하기 위한 명시적 벡터 임베딩 입니다.

query

문서

조건부

자동 임베딩에 대한 텍스트 쿼리를 지정하는 문서입니다.

query.text

string | 필드 경로 표현식

조건부

자동 임베딩에 사용할 쿼리 텍스트.

model

문자열

옵션

query.text을 벡터로 변환하기 위해 MongoDB 벡터 검색이 사용하는 임베딩 모델. query와 함께 사용할 경우에만 유효합니다.

model를 생략하면 MongoDB Vector Search는 대상 MongoDB Vector Search 인덱스의 정의에 구성된 모델을 사용합니다.

index

문자열

필수 사항

쿼리할 MongoDB Vector Search 인덱스의 이름입니다.

path

문자열

필수 사항

검색할 벡터 임베딩이 포함된 대상 컬렉션의 필드입니다.

numCandidates

int

조건부

검색 시 MongoDB Vector Search가 고려하는 후보 수. exact이 true인 경우에는 필수가 아닙니다. 값을 선택하는 방법을 학습하려면 numCandidates Selection을 참조하십시오.

limit

int

필수 사항

반환할 최대 결과 수입니다. numCandidates을 초과할 수 없습니다.

경고: limit이 numCandidates를 초과하면 모든 문서가 PlanExecutor 오류로 실행 시간에 실패합니다.

filter

문서

옵션

벡터 검색 전에 적용할 사전 필터 표현식입니다. 지원되는 연산자에 대한 자세한 내용은 필터를 참조하십시오.

경고: filter 에서 지원되지 않는 연산자 사용하는 경우 모든 문서 런타임에 PlanExecutor 오류와 함께 실패합니다.

exact

부울

옵션

근사 최근접 이웃 또는 등가 최근접 이웃 검색을 실행할지 여부를 지정하는 플래그입니다. numCandidates를 생략하는 경우 이 필드를 제공하세요.

값은 다음 중 하나일 수 있습니다.

기본값은 false입니다.

searchNodePreference

문서

옵션

Atlas Stream Processing이 특정 검색 노드로 쿼리를 라우팅하는 데 사용하는 key 필드가 있는 문서입니다. key 값은 비어 있는 string이어야 합니다.

pipeline

배열

옵션

Atlas Stream Processing이 검색 결과를 입력 문서에 첨부하기 전에 실행하는 추가 집계 단계입니다.

let

문서

옵션

Variables that Atlas Stream Processing evaluates against each input 문서. 각 값은 리터럴이거나 필드 경로 또는 표현식일 수 있습니다. pipeline 단계는 해결된 값을 $$<variable>(으)로 참조할 수 있습니다.

$vectorSearch 벡터 임베딩을 위한 queryVector과 자동 임베딩을 위한 query.text의 두 개의 상호 배타적인 쿼리 모드를 지원합니다. 두 모드 모두에서 리터럴 값 또는 필드 경로 표현식을 지정할 수 있으므로 단일 스트림 프로세서는 각 입력 문서에 대해 다른 쿼리를 발행할 수 있습니다.

대상 MongoDB 벡터 검색 인덱스가 존재하지 않으면 $vectorSearch이 처음 실행될 때 스트림 프로세서가 오류 상태에 진입합니다. Atlas Stream Processing은 MongoServerError 오류를 보고하고 문서 처리를 중지합니다.

` queryVector ` 또는 ` query.text `이(가) 실행 시간에 잘못된 유형으로 평가되면, Atlas Stream Processing은 구성되어 있는 경우 문제가 있는 문서만 데드 레터 큐로 보냅니다. 그렇지 않은 경우 제거하다. 스트림 프로세서는 나중 문서를 계속 처리합니다. DLQ 문서 스키마의 경우, 데드 레터 큐를 참조하세요.

Atlas Stream Processing이 검색 결과를 입력 문서에 첨부하기 전에 pipeline을 사용하여 검색 결과를 추가 처리합니다. Atlas Stream Processing은 pipeline을 MongoDB Vector Search로 그대로 전송합니다. pipeline 내의 입력 문서에서 값을 참조하려면 let을 통해 전달하고 $$<variable>로 참조합니다.

다음 예시는 영화 및 영화관에 대한 데이터가 포함된 sample_mflix 데이터 세트를 쿼리합니다. 이를 실행하려면 샘플 데이터를 Atlas 클러스터에 로드하고 embedded_movies 컬렉션에 MongoDB 벡터 검색 인덱스를 만들어야 합니다.