Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

$rerank Etapa de la canalización de agregación

Importante

La reclasificación nativa está disponible como funcionalidad preliminar. La funcionalidad y la documentación correspondiente pueden cambiar en cualquier momento durante el período de vista previa. Por lo tanto, no recomendamos usar esta funcionalidad en entornos de producción. Actualmente, no utilizamos ningún dato de cliente de esta funcionalidad para entrenar nuestros modelos. Para aprender más, consulte Funcionalidades de vista previa.

$rerank

La etapa $rerank reordena los documentos de entrada mediante los modelos de reclasificación de Voyage AI y devuelve los mismos documentos ordenados por relevancia para la query. La etapa $rerank puede aparecer en cualquier lugar de un pipeline de agregación. MongoDB recomienda utilizar $rerank después de una etapa $vectorSearch, $search, $rankFusion o $scoreFusion.

Una etapa de la pipeline $rerank tiene la siguiente sintaxis:

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

La etapa $rerank procesa un documento con los siguientes campos:

Campo
Tipo
Necesidad
Descripción

query

Objeto

Requerido

Consulta para usar en la reordenación.

query.
text

String

Requerido

Texto de consulta a utilizar para la reordenación. Por ejemplo, puede especificar:

  • Lo que buscas

  • Qué campos de un documento son más relevantes

  • Información complementaria para aclarar consultas ambiguas

path

string o arreglo de strings

Requerido

Ruta a los campos a usar para el rearme. Si $rerank es una etapa intermedia, especifica un campo de los resultados de la etapa anterior.

NOTA: La $rerank query falla si los campo especificados en path no existen. Utiliza una etapa previa $match para filtrar documentos con campos faltantes, o usa $set para establecer los campos faltantes en "".

numDocsToRerank

Int

Requerido

Número máximo de documentos para enviar a Voyage IA para reordenación y retorno en los resultados. Los documentos se seleccionan en función del orden de documentos definido por el pipeline.

El valor máximo debe ser menor o igual a 1000.

model

Objeto

Requerido

Voyage AI modelo para usar para reordenar los documentos. El valor puede ser uno de los siguientes modelos:

  • rerank-2.5 - Reranker generalista optimizado para calidad con seguimiento de instrucciones y soporte multilingüe.

  • rerank-2.5-lite - Reordenador generalista optimizado tanto para la latencia como para la calidad, con soporte para seguir instrucciones y multilingüe.

  • rerank-2 - Modelo heredado.

  • rerank-2-lite - Modelo heredado.

Revise los requisitos, las limitaciones y el comportamiento de $rerank antes de utilizar $rerank.

Para usar $rerank:

  • Asegúrese de que su clúster esté ejecutando MongoDB 8.3 o posterior seleccionando Latest version with auto-upgrades en la página Cluster Builder de la interfaz de usuario de Atlas.

  • Habilite la reclasificación nativa a través de Project Settings. Para obtener más información, consulte Habilitar o deshabilitar la reclasificación nativa.

No puedes usar la etapa $rerank:

  • Para implementaciones autogestionadas o Atlas Local.

  • Para pipeline de entrada $rankFusion o $scoreFusion.

  • Para query en una vista.

    Si tiene un índice de MongoDB Search o MongoDB Vector Search en una vista, consulte el índice ejecutando .aggregate() en la colección de origen en lugar de la vista.

$rerank puede aparecer en cualquier lugar del pipeline. Sin embargo, MongoDB recomienda usar $rerank después de una etapa como $search o $vectorSearch que ya devuelve documentos relevantes en orden clasificado.

$rerank vuelve a clasificar y devuelve los primeros numDocsToRerank documentos que se pasan a la etapa. Si $rerank es la primera etapa, o las etapas anteriores no devuelven resultados ordenados de manera determinista, entonces los documentos utilizados para $rerank podrían cambiar entre consultas.

$rerank devuelve un error si alguno de los campos especificados en path no está presente en uno o más documentos de entrada. Para mitigar esto, utilice el:

  • $set etapa para establecer los campos que faltan en una string vacía.

  • $match etapa para filtrar documentos donde faltan campos.

El campo query.text determina cómo el modelo de reclasificación puntúa cada documento. El modelo de reclasificación de Voyage especificado calcula una puntuación de relevancia entre el texto de la query y el contenido de cada documento en el path especificado. Para la mayoría de los casos de uso, establezca $rerank.query.text en el mismo texto o en un texto similar al de la query de la etapa $search o $vectorSearch anterior.

Utilice la variable score con la expresión $meta para recuperar la puntuación de cada documento en los resultados de la etapa $rerank.

Ejemplo: añadir la puntuación de reordenación a la pipeline
{
"$addFields": {
"rerankScore": { "$meta": "score" }
}
}

La etapa $rerank reemplaza el valor de $meta: "score" con un nuevo puntaje. Para conservar el valor de una etapa anterior como $rankFusion, puedes proyectar los puntajes en campos con nombre antes de la etapa $rerank.

Ejemplo: conservar la puntuación de la etapa anterior
{
"$addFields": {
"originalRankFusionScore": { "$meta": "score" }
}
},
{
"$rerank": {
...
}
},
{
"$addFields": {
"rerankScore": { "$meta": "score" }
}
}

La etapa $rerank puede ser computacionalmente costosa, dependiendo del tamaño de la entrada, como los campos sobre los que se debe volver a clasificar, la cantidad de documentos que se deben volver a clasificar y el texto de la query. $rerank procesa queries y documentos conjuntamente en el momento de la query. Por lo tanto, $rerank podría ser más lento que la búsqueda de relevancia impulsada por un índice, como los índices para $search o $vectorSearch. Para equilibrar la precisión y el rendimiento, configure numDocsToRerank y path para limitar el tamaño de la entrada. $rerank no ejecuta modelos de reclasificación de Voyage AI en los recursos de su clúster de Atlas.

$rerank es más adecuado para cargas de trabajo en las que se prioriza la calidad de la recuperación sobre la latencia ultrabaja, como las aplicaciones de IA RAG y agentic. Para cargas de trabajo que requieren una latencia ultrabaja, MongoDB recomienda utilizar una etapa de búsqueda basada en índices como $search o $vectorSearch.

El siguiente ejemplo muestra cómo usar la etapa $rerank para reordenar documentos en la colección sample_mflix.embedded_movies basada en un modelo de reranker de Voyage AI. La query utiliza $rerank después de la etapa $match para reordenar documentos utilizando el modelo de reranqueador rerank-2.5. En la siguiente pipeline de agregación, el:

  • $match stage filtra los documentos para incluir solo aquellos que tienen un campo plot de tipo string.

  • $sort la etapa ordena los documentos en orden descendente del campo released para garantizar un orden determinista.

  • $rerank stage reorganiza los documentos para que coincidan con la query utilizando el modelo de reordenamiento rerank-2.5.

  • $addFields stage añade un campo llamado rerankScore a los documentos.

1db.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
}
]