$rerankO estágio reordena os
$rerankdocumentos de entrada usando os modelos de reclassificação da Voyage AI e retorna os mesmos documentos classificados por relevância para a query. O$rerankestágio pode aparecer em qualquer lugar em um pipeline de agregação . O MongoDB recomenda que você utilize$rerankapós um$vectorSearch$searchestágio,,$rankFusion$scoreFusionou.
Sintaxe
Um estágio de pipeline do $rerank tem a seguinte sintaxe:
{ "$rerank": { "query": { "text": "<query-text>" }, "path": "<text-field-name>", "numDocsToRerank": <number-of-documents-to-rerank>, "model": "<reranker-model>" } }
Campos
O estágio $rerank recebe um documento com os seguintes campos:
Campo | Tipo | necessidade | Descrição |
|---|---|---|---|
| Objeto | Obrigatório | Query a ser usada para reclassificação. |
| String | Obrigatório | Texto da query a ser usado para reclassificação. Por exemplo, você pode especificar:
|
| string ou matriz de strings | Obrigatório | Caminho para os campos a serem usados na reclassificação. Se NOTA: a query |
| Int | Obrigatório | Número máximo de documentos a serem enviados à IA do Voyage para reclassificação e retorno nos resultados. Os documentos são selecionados com base na ordem dos documento definida para o pipeline. O valor máximo deve ser menor ou igual a |
| Objeto | Obrigatório | Modelo de IA Voyage a ser usado para reclassificar os documentos. O valor pode ser um dos seguintes:
|
Considerações
Revise os requisitos, limitações e comportamento do $rerank antes de utilizar o $rerank.
Requisitos
Para usar $rerank:
Certifique-se de que seu cluster esteja executando o MongoDB 8.3 ou posterior selecionando Latest version with auto-upgrades na página Cluster Builder da UI do Atlas .
Ative a reclassificação nativa por meio Project Settings de. Para saber mais, consulte Habilitar ou desabilitar a reclassificação nativa.
Limitações
Você não pode usar o estágio $rerank:
Para sistemas autogerenciados ou Atlas Local.
Para
$rankFusionou pipelines de$scoreFusionentrada.Para fazer query sobre uma Visualização.
Se você tiver um índice do MongoDB Search ou do MongoDB Vector Search em uma visualização, consulte o índice executando
.aggregate()na collection de origem em vez da visualização.
Comportamento
$rerank pode aparecer em qualquer lugar no pipeline. No entanto, o MongoDB recomenda o uso de $rerank após um estágio como $search ou,$vectorSearch que já retorna documentos relevantes em uma ordem de classificação.
$rerank reclassifica e retorna os primeiros numDocsToRerank documentos que são passados para o estágio. Se $rerank for o primeiro estágio, ou se os estágios anteriores não retornarem resultados classificados deterministicamente, os documentos usados para $rerank poderão mudar entre as queries.
$rerank retorna um erro se qualquer um dos campos especificados em path não estiver presente em um ou mais documentos de entrada. Para mitigar isso, use o:
Query
O query.text campo determina como o modelo de reclassificação pontua cada documento. O modelo de reclassificação Voyage especificado calcula uma pontuação de relevância entre o texto da query e o conteúdo de cada documento no especificado.path Para a maioria dos casos de uso, defina $rerank.query.text para o mesmo texto ou texto semelhante ao da query do $search $vectorSearch estágio ou anterior.
Pontuação
Use a variável score com a expressão $meta para recuperar a pontuação de cada documento nos resultados do estágio $rerank.
{ "$addFields": { "rerankScore": { "$meta": "score" } } }
O estágio $rerank substitui o valor de $meta: "score" por uma nova pontuação. Para preservar o valor de um estágio anterior como $rankFusion, você pode projeto as pontuações em campos nomeados antes do estágio $rerank.
{ "$addFields": { "originalRankFusionScore": { "$meta": "score" } } }, { "$rerank": { ... } }, { "$addFields": { "rerankScore": { "$meta": "score" } } }
Desempenho e Precisão
O $rerank estágio pode ser computacionalmente caro, dependendo do tamanho da entrada, como os campos a serem reclassificados, o número de documentos a serem reclassificados e o texto da query. O$rerank processa queries e documentos em conjunto no momento da query. Portanto, $rerank pode ser mais lento do que a pesquisa de relevância alimentada por um índice, como os índices para $search ou. Para equilibrar precisão e desempenho,$vectorSearch configure numDocsToRerank e path para limitar o tamanho da entrada. não executa modelos de reclassificação do Voyage AI em seus recursos do Atlas$rerank cluster.
$rerank é mais adequado para volumes de trabalho em que a qualidade da recuperação é priorizada em relação à latência ultrabaixa, como aplicativos RAG e IA de agentes. Para volumes de trabalho que exigem latência ultrabaixa, o MongoDB recomenda o uso de um estágio de pesquisa alimentada por índice como $search ou $vectorSearch.
Exemplo
O exemplo a seguir demonstra como usar o estágio $rerank para reordenar documentos na coleção sample_mflix.embedded_movies com base em um modelo de reclassificação do Voyage AI. A query usa $rerank após o estágio $match para reordenar documentos usando o modelo de reclassificação rerank-2.5. No seguinte pipeline de agregação ,:
$matchO estágio filtra os documentos para incluir somente documentos que tenham um campoplotdo tipo string.$sortO estágio classifica os documentos em ordem decrescente do camporeleasedpara garantir a ordem determinística.$reranko estágio reordena os documentos para corresponder à query usando o modelo de reclassificaçãorerank-2.5.$addFieldsestágio adiciona um campo chamadorerankScoreaos documentos.
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 } ]