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.
$rerankLa etapa reordena los
$rerankdocumentos de entrada utilizando los modelos de reclasificación de Voyage AI y devuelve los mismos documentos ordenados por relevancia para la consulta. La$reranketapa puede aparecer en cualquier punto de una canalización de agregación. MongoDB recomienda usar$rerankdespués de una etapa,,$vectorSearch$search$rankFusion$scoreFusiono.
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 | Modelo de Voyage IA modelo para usar para volver a clasificar los documentos. El valor puede ser uno de los siguientes:
|
Considerations
Revise los requisitos, las limitaciones y el comportamiento de $rerank antes de usar $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 Project Settings mediante. 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 de Atlas Local.
Para
$rankFusiono tuberías de$scoreFusionentrada.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.
Comportamiento
$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:
Query
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.
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 $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.
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 } ]