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 función de reclasificación nativa está disponible en versión preliminar. Esta función y su documentación pueden sufrir modificaciones durante el periodo de prueba. Por lo tanto, no recomendamos su uso en entornos de producción. Actualmente, no utilizamos datos de clientes de esta función para entrenar nuestros modelos. Para obtener más información, consulte la sección de funciones en versión preliminar.

$rerank

La etapa reordena los $rerank documentos de entrada utilizando los modelos de reclasificación de Voyage AI y devuelve los mismos documentos ordenados por relevancia para la consulta. La $rerank etapa puede aparecer en cualquier punto de una canalización de agregación. MongoDB recomienda usar $rerank después de una etapa,,$vectorSearch $search$rankFusion $scoreFusion o.

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

Modelo de Voyage IA modelo para usar para volver a clasificar los documentos. El valor puede ser uno de los siguientes:

  • 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 usar $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 Project Settings mediante. Para obtener más información, consulte Habilitar o deshabilitar la reclasificación nativa.

No puedes usar la etapa $rerank:

  • Para implementaciones autogestionadas o de Atlas Local.

  • Para $rankFusion o tuberías de $scoreFusion entrada.

  • Para consultas sobre una vista.

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

$rerank puede aparecer en cualquier parte del flujo de procesamiento. Sin embargo, MongoDB recomienda usar $rerank después de una etapa como $search o $vectorSearch que ya devuelva documentos relevantes ordenados.

$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 lo siguiente:

  • $set etapa para establecer los campos faltantes como una cadena vacía.

  • $match etapa para filtrar los documentos a los que les faltan campos.

El query.text campo 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 consulta y el contenido de cada documento en la posición especificada.path Para la mayoría de los casos de uso, establezca $rerank.query.text con el mismo texto $search o uno similar al de la consulta de la $vectorSearch posición o 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 $rerank etapa puede ser computacionalmente costosa, dependiendo del tamaño de la entrada, como los campos a reordenar, la cantidad de documentos a reordenar y el texto de la consulta. $rerank procesa consultas y documentos conjuntamente en el momento de la consulta. Por lo tanto, $rerank podría ser más lento que la búsqueda de relevancia impulsada por un índice, como los índices para o. Para equilibrar $search $vectorSearchla precisión y el rendimiento, configure numDocsToRerank y path para limitar el tamaño de la entrada. no ejecuta modelos de reordenamiento de Voyage AI en los recursos de su clúster$rerank Atlas.

$rerank Es más adecuado para cargas de trabajo donde la calidad de recuperación tiene prioridad sobre la latencia ultrabaja, como RAG y las aplicaciones de IA agente. Para cargas de trabajo que requieren una latencia ultrabaja, MongoDB recomienda usar 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
}
]