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.
$rerankLa etapa
$rerankreordena 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$rerankpuede aparecer en cualquier lugar de un pipeline de agregación. MongoDB recomienda utilizar$rerankdespués de una etapa$vectorSearch,$search,$rankFusiono$scoreFusion.
Sintaxis
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>" } }
Campos
La etapa $rerank procesa un documento con los siguientes campos:
Campo | Tipo | Necesidad | Descripción |
|---|---|---|---|
| Objeto | Requerido | Consulta para usar en la reordenación. |
| String | Requerido | Texto de consulta a utilizar para la reordenación. Por ejemplo, puede especificar:
|
| string o arreglo de strings | Requerido | Ruta a los campos a usar para el rearme. Si NOTA: La |
| 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 |
| Objeto | Requerido | Voyage AI modelo para usar para reordenar los documentos. El valor puede ser uno de los siguientes modelos:
|
Considerations
Revise los requisitos, las limitaciones y el comportamiento de $rerank antes de utilizar $rerank.
Requisitos
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.
Limitaciones
No puedes usar la etapa $rerank:
Para implementaciones autogestionadas o Atlas Local.
Para pipeline de entrada
$rankFusiono$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.
Comportamiento
$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:
Query
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.
Puntuación
Utilice la variable score con la expresión $meta para recuperar la puntuación de cada documento en los resultados de la etapa $rerank.
{ "$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.
{ "$addFields": { "originalRankFusionScore": { "$meta": "score" } } }, { "$rerank": { ... } }, { "$addFields": { "rerankScore": { "$meta": "score" } } }
Rendimiento y precisión
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.
Ejemplo
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:
$matchstage filtra los documentos para incluir solo aquellos que tienen un campoplotde tipo string.$sortla etapa ordena los documentos en orden descendente del camporeleasedpara garantizar un orden determinista.$rerankstage reorganiza los documentos para que coincidan con la query utilizando el modelo de reordenamientorerank-2.5.$addFieldsstage añade un campo llamadorerankScorea los 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 } ]