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

$rerank 집계 파이프라인 단계

$rerank

$rerank 단계는 Voyage AI의 리랑킹 모델 을 사용하여 입력 문서의 순서를 다시 정렬하고 쿼리와 관련성이 높은 순서로 정렬된 동일한 문서를 반환합니다. $rerank 단계는 집계 파이프라인의 어디에든 나타날 수 있습니다. MongoDB는 $vectorSearch, $search, $rankFusion 또는 $scoreFusion 단계 뒤에 $rerank 을 사용할 것을 권장합니다.

$rerank 파이프라인 단계의 구문은 다음과 같습니다.

{ "$rerank": { "query": { "text": "<query-text>" }, "path": "<text-field-name>", "numDocsToRerank": <number-of-documents-to-rerank>, "model": "<reranker-model>" }}

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

필드
유형
필요성
설명

query

객체

필수 사항

순위 재지정에 사용할 쿼리입니다.

query.
text

문자열

필수 사항

순위 재지정에 사용할 쿼리 텍스트입니다. 예시 를 들어 다음을 지정할 수 있습니다.

  • 검색 대상

  • 문서 에서 가장 관련성이 높은 필드

  • 모호한 쿼리를 명확히 하기 위한 보완 정보

path

문자열 또는 문자열 배열

필수 사항

순위 재지정에 사용할 필드의 경로입니다. $rerank 이 중간 단계인 경우 이전 단계의 결과에서 필드 지정합니다.

참고: path 에 지정된 필드가 존재하지 않으면 $rerank 쿼리 실패합니다. 이전 $match 단계를 사용하여 누락된 필드가 있는 문서를 필터하다 하거나 $set 을 사용하여 누락된 필드를 ""(으)로 설정하다 .

numDocsToRerank

Int

필수 사항

순위를 재지정하고 결과에 반환하기 위해 Voyage AI 로 보낼 최대 문서 수입니다. 문서는 파이프라인에 정의된 문서 순서에 따라 선택됩니다.

최대값은 1000 이하여야 합니다.

model

객체

필수 사항

문서의 순위를 다시 매기는 데 사용할 Voyage AI 모델 입니다. 값은 다음 모델 중 하나일 수 있습니다.

  • rerank-3 - 가장 높은 정확도를 자랑하는 범용 리랭커(reranker)입니다. 대부분의 애플리케이션에 권장됩니다.

  • rerank-3-lite - 지연 시간에 민감한 애플리케이션에 최적화된 빠르고 비용 효율적인 리랭커입니다.

  • rerank-2.5 - 안내에 따른 지침 및 다국어 지원 통해 품질에 최적화된 Generalist reranker입니다.

  • rerank-2.5-lite - 지침 준수 및 다국어 지원 통해 지연 시간 과 품질 모두에 최적화된 Generalist reranker입니다.

  • rerank-2 - 레거시 모델.

  • rerank-2-lite - 레거시 모델.

rerank-3 및 rerank-3-lite 모델은 미리 보기 기능으로 제공됩니다. 이를 사용하려면 MongoDB 9.0 이상이 실행되는 전용 클러스터가 필요합니다. 자세한 내용은 요구 사항을 참조하세요.

$rerank을 사용하기 전에 요구 사항, 제한 사항 및 $rerank 동작을 검토하세요.

$rerank 사용 방법:

rerank-3 및 rerank-3-lite 모델에는 다음과 같은 추가 요구 사항이 있습니다.

  • 클러스터는 MongoDB 9.0 이상을 실행하는 전용 클러스터(M10 이상)여야 합니다.

이러한 모델의 지원 상태에 대해 알아보려면 현재 모델 상태를 참조하세요.

$rerank 단계를 사용할 수 없습니다.

  • 자체 관리형 또는 Atlas Local 배포서버에 적용됩니다.

  • $rankFusion 또는 $scoreFusion 입력 파이프라인을 위해서.

  • 보기에 대한 쿼리의 경우.

    View에 MongoDB Search 또는 MongoDB 벡터 검색 인덱스가 있는 경우 View 대신 소스 컬렉션에서 .aggregate() 을 실행하여 인덱스를 쿼리합니다.

  • 클라이언트 사이드 필드 레벨 암호화 또는 Queryable Encryption을 사용하는 경우 $rerank을(를) 포함하는 파이프라인은 Unrecognized pipeline stage name: '$rerank'와(과) 같은 오류와 함께 실패합니다.

    이 제한은 암호화된 필드가 없는 컬렉션을 포함한 모든 컬렉션과 $unionWith.와 같은 하위 파이프라인 내에서 $rerank을(를) 사용하는 경우에 적용됩니다.

rerank-3 및 rerank-3-lite 모델에는 다음과 같은 추가 제한 사항이 있습니다.

  • MongoDB 9.0 이상을 실행하는 전용 클러스터(M10 이상)에서만 사용할 수 있습니다.

  • 무료 클러스터(M0) 또는 Flex 클러스터에서는 아직 사용할 수 없습니다.

$rerank 는 파이프라인의 어디에든 나타날 수 있습니다. 하지만 MongoDB는 $search 또는 $vectorSearch 와 같이 이미 정렬된 순서로 관련 문서를 반환하는 단계 뒤에 $rerank 를 사용할 것을 권장합니다.

$rerank 단계로 전달된 첫 numDocsToRerank 개 문서의 순위를 재지정하고 반환합니다. $rerank 이 첫 번째 단계이거나 이전 단계가 결정론적으로 정렬된 결과를 반환하지 않는 경우 $rerank 에 사용된 문서가 쿼리 간에 변경될 수 있습니다.

$rerank path 에 지정된 필드 중 하나 이상의 입력 문서에 없는 경우 오류를 반환합니다. 이를 완화하려면 다음을 사용합니다.

  • $set 단계를 사용하여 누락된 필드를 빈 string으로 설정합니다.

  • $match 필드가 없는 문서를 필터링하는 단계입니다.

$rerank이(가) 시행하는 메모리 제한과 요청이 제한을 초과할 때 반환되는 오류에 대해 자세히 알아보려면 $rerank 요청이 메모리 제한 오류로 실패함을 참조하세요.

query.text 필드는 리러잉커 모델이 각 문서의 점수를 매기는 방식을 결정합니다. 지정된 Voyage 리러잉커 모델 은 지정된 path에서 쿼리 텍스트와 각 문서 내용 간의 유용성 점수를 계산합니다. 대부분의 사용 사례에서는 $rerank.query.text 를 이전 $search 또는 $vectorSearch 단계의 쿼리와 동일하거나 유사한 텍스트로 설정합니다.

score 변수를 $meta 표현식과 함께 사용하여 $rerank 단계의 결과에서 각 문서의 점수를 조회.

예시: 파이프라인에 재순위 점수 추가

{ "$addFields": { "rerankScore": { "$meta": "score" } }}

$rerank 단계에서는 $meta: "score" 값을 새 점수로 대체합니다. $rankFusion와 같은 이전 단계의 값을 보존하려면 점수를 $rerank 단계 이전의 명명된 필드에 프로젝트 할 수 있습니다.

예시: 이전 단계의 점수 보존

{ "$addFields": { "originalRankFusionScore": { "$meta": "score" } }},{ "$rerank": { ... }},{ "$addFields": { "rerankScore": { "$meta": "score" } }}

$rerank 단계는 리랑크할 필드, 리랑크할 문서 수 및 쿼리 텍스트 등 입력 크기에 따라 계산 방식이 많을 수 있습니다. $rerank 은 쿼리 시간에 쿼리와 문서를 함께 처리합니다. 따라서 $rerank 는 $search 또는 $vectorSearch의 인덱스와 같이 인덱스에 의해 제공되는 유의성 검색보다 느릴 수 있습니다. 정확도와 성능 간의 균형을 맞추려면 numDocsToRerank 과 path 을 구성하여 입력 크기를 제한합니다. $rerank 는 Atlas 클러스터 리소스에서 Voyage AI 리랑크 모델을 실행하지 않습니다.

$rerank RAG 및 에이전틱 AI 애플리케이션과 같이 최소한 지연 시간보다 검색 품질이 우선시되는 워크로드에 가장 적합합니다. 최소한 지연 시간이 필요한 워크로드의 경우 MongoDB는 $search 또는 $vectorSearch과 같이 인덱스 기반 검색 단계를 사용할 것을 권장합니다.

다음 예시 $rerank 단계를 사용하여 Voyage AI reranker 모델을 기반으로 sample_mflix.embedded_movies 컬렉션 의 문서 순서를 변경하는 방법을 보여 줍니다. 이 쿼리 $match 단계 이후에 $rerank 를 사용하여 rerank-2.5 reranker 모델을 사용하여 문서를 재정렬합니다. 다음 집계 파이프라인 에서:

  • $match 단계는 string 유형의 plot 필드 있는 문서만 포함하도록 문서를 필터링합니다.

  • $sort 단계는 결정론적 순서를 보장하기 위해 released 필드 의 내림차순으로 문서를 정렬합니다.

  • $rerank 이 단계에서는 rerank-2.5 reranker 모델을 사용하여 쿼리 와 일치하도록 문서를 재정렬합니다.

  • $addFields 단계는 문서에 rerankScore 이라는 필드 추가합니다.

db.embedded_movies.aggregate([ { "$match": { "plot": { "$exists": true, "$type": "string" } } }, { "$sort": { "released": -1 } }, { "$rerank": { "model": "rerank-2.5", "query": { "text": "a group of heroes band together to stop a powerful enemy and save the world" }, "numDocsToRerank": 100, "path": ["title", "plot"] } }, { "$addFields": { "rerankScore": { "$meta": "score" } } }, { "$limit": 10 }, { "$project": { "_id": 0, "title": 1, "plot": 1, "rerankScore": 1 } }])