$rerank단계는 Voyage AI의
$rerank순위 재지정 모델을 사용하여 입력 문서를 다시 정렬하고 쿼리 와의 관련성에 따라 정렬된 동일한 문서를 반환합니다. 단계는$rerank집계 파이프라인 의 어느 곳에나 나타날 수 있습니다. MongoDB,,$rerank또는$vectorSearch$search$rankFusion$scoreFusion단계 이후에 를 사용할 것을 권장합니다.
구문
$rerank 파이프라인 단계의 구문은 다음과 같습니다.
{ "$rerank": { "query": { "text": "<query-text>" }, "path": "<text-field-name>", "numDocsToRerank": <number-of-documents-to-rerank>, "model": "<reranker-model>" } }
필드
$rerank 단계에서는 다음 필드가 있는 문서를 사용합니다.
필드 | 유형 | 필요성 | 설명 |
|---|---|---|---|
| 객체 | 필수 사항 | 순위 재지정에 사용할 쿼리입니다. |
| 문자열 | 필수 사항 | 순위 재지정에 사용할 쿼리 텍스트입니다. 예시 를 들어 다음을 지정할 수 있습니다.
|
| 문자열 또는 문자열 배열 | 필수 사항 | |
| Int | 필수 사항 | 순위를 재지정하고 결과에 반환하기 위해 Voyage AI 로 보낼 최대 문서 수입니다. 문서는 파이프라인에 정의된 문서 순서에 따라 선택됩니다. 최대값은 |
| 객체 | 필수 사항 | 문서의 순위를 다시 매기는 데 사용할 Voyage AI 모델 입니다. 값은 다음 중 하나일 수 있습니다.
|
고려 사항
$rerank를 사용하기 전에 요구 사항, 제한 사항 및 $rerank 동작을 검토하세요.
요구 사항:
$rerank를 사용하려면 다음을 수행합니다.
Atlas UI Cluster Builder 페이지에서 Latest version with auto-upgrades 를 선택하여 클러스터 에서 MongoDB 8.3 이상을 실행 중인지 확인합니다.
을(를) 통해 네이티브 재순위 지정을 Project Settings 활성화합니다. 자세한 학습 은 네이티브 재지정 활성화 또는 비활성화를 참조하세요.
제한 사항
$rerank 단계는 사용할 수 없습니다.
자체 관리형 또는 Atlas Local 배포의 경우.
$rankFusion$scoreFusion또는 입력 파이프라인의 경우.뷰에대한 쿼리의 경우.
View에 MongoDB Search 또는 MongoDB Vector Search 인덱스 있는 경우 View 대신 소스 컬렉션 에서
.aggregate()를 실행 인덱스 를 쿼리 .
행동
$rerank 은 파이프라인 의 어느 곳에나 나타날 수 있습니다. 그러나 MongoDB 또는 $rerank 와 $search 같이 $vectorSearch 이미 관련 문서를 정렬된 순서로 반환하는 단계 이후에 를 사용할 것을 권장합니다.
$rerank 단계로 전달된 첫 numDocsToRerank 개 문서의 순위를 재지정하고 반환합니다. $rerank 이 첫 번째 단계이거나 이전 단계가 결정론적으로 정렬된 결과를 반환하지 않는 경우 $rerank 에 사용된 문서가 쿼리 간에 변경될 수 있습니다.
$rerank path 에 지정된 필드 중 하나라도 하나 이상의 입력 문서에 없는 경우 오류를 반환합니다. 이를 완화하려면 다음을 사용하세요.
쿼리
query.text 필드 reranker 모델이 각 문서 점수를 매기는 방법을 결정합니다.지정된 Voyage reranker 모델은 쿼리 텍스트와 지정된 에 있는 각 문서 의 콘텐츠 간의 관련성 점수를 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 cluster 리소스에서Voyage AI reranking 모델을 실행 하지 않습니다.
$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.5reranker 모델을 사용하여 쿼리 와 일치하도록 문서를 재정렬합니다.$addFields단계는 문서에rerankScore이라는 필드 추가합니다.
1 db.embedded_movies.aggregate([ 2 { 3 "$match": { 4 "plot": { "$exists": true, "$type": "string" } 5 } 6 }, 7 { 8 "$sort": { "released": -1 } 9 }, 10 { 11 "$rerank": { 12 "model": "rerank-2.5", 13 "query": { 14 "text": "a group of heroes band together to stop a powerful enemy and save the world" 15 }, 16 "numDocsToRerank": 100, 17 "path": ["title", "plot"] 18 } 19 }, 20 { 21 "$addFields": { 22 "rerankScore": { "$meta": "score" } 23 } 24 }, 25 { "$limit": 10 }, 26 { 27 "$project": { 28 "_id": 0, 29 "title": 1, 30 "plot": 1, 31 "rerankScore": 1 32 } 33 } 34 ])
[ { plot: 'No treason, no surrender.', title: 'Ti mene nosis', rerankScore: 0.5986876487731934 }, { plot: 'The life of the greatest karate master of a generation.', title: 'The Real Miyagi', rerankScore: 0.5986876487731934 }, { plot: 'A shy genius is employed by his former university to design robot software.', title: 'Eva', rerankScore: 0.5986876487731934 }, { plot: 'The owners of a failing security company start robbing houses to boost business.', title: 'Armed Response', rerankScore: 0.5986876487731934 }, { plot: 'A live telecast of the beloved J. M. Barrie story.', title: 'Peter Pan Live!', rerankScore: 0.5986876487731934 }, { plot: "A French police magistrate spends years trying to take down one of the country's most powerful drug rings.", title: 'The Connection', rerankScore: 0.5986876487731934 }, { plot: 'A documentary that follows undercover activists trying to stave off a man-made mass extinction.', title: 'Racing Extinction', rerankScore: 0.5986876487731934 }, { plot: 'An ex-hitman comes out of retirement to track down the gangsters that took everything from him.', title: 'John Wick', rerankScore: 0.5986876487731934 }, { plot: 'A former hit-man for a drug cartel becomes a vigilante to pay for his sins and find redemption.', title: 'Redeemer', rerankScore: 0.5986876487731934 }, { plot: 'Charles Ingvar Jènsson gathers three criminals to take vengeance upon the people who killed his uncle.', title: 'The Master Plan', rerankScore: 0.5986876487731934 } ]