Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home

$rerank

Importante

La etapa de agregación $rerank se encuentra en Vista previa privada. La función y la documentación correspondiente pueden cambiar en cualquier momento durante el período de vista previa. Por lo tanto, no recomendamos usar esta función en entornos de producción. Para obtener más información, consulte Funcionalidades de vista previa.

$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 parte de una canalización de agregación. Recomendamos que utilice $rerank después de una $vectorSearchEtapa,, $search $rankFusion $scoreFusion o.

Una etapa de canalización $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 que se utilizará para reordenar.

query.
text

String

Requerido

Texto de consulta que se utilizará para la reclasificación. Por ejemplo, puede especificar:

  • Lo que estás buscando

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

  • Información complementaria para aclarar dudas ambiguas.

path

Cadena o matriz de cadenas

Requerido

Ruta a los campos que se utilizarán para la reclasificación. Si $rerank es una etapa intermedia, especifique un campo de los resultados de la etapa anterior.

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

numDocsToRerank

Int

Requerido

Número máximo de documentos que se enviarán a Voyage AI para su reclasificación y devolución en los resultados. Los documentos se seleccionan según el orden definido en el proceso.

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

model

Objeto

Requerido

Modelo de IA de Voyage que se utilizará para reordenar los documentos. El valor puede ser uno de los siguientes:

  • rerank-2.5 - Reclasificador generalista optimizado para la 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 seguimiento de instrucciones y soporte multilingüe.

  • rerank-2 - Modelo heredado.

  • rerank-2-lite - Modelo heredado.

El siguiente ejemplo demuestra cómo usar la $rerank etapa para reordenar documentos en la sample_mflix.embedded_movies colección basándose en un modelo de reordenamiento de Voyage AI. La consulta usa $rerank después de la etapa para reordenar documentos usando $match el rerank-2.5 modelo de reordenamiento. En la siguiente canalización de agregación, el:

  • $match La etapa filtra los documentos para incluir solo aquellos que tengan un campo plot de tipo cadena.

  • $sort La etapa ordena los documentos en orden descendente según el campo released para garantizar un orden determinista.

  • $rerank La etapa reordena los documentos para que coincidan con la consulta utilizando el modelo de reordenamiento rerank-2.5.

  • $addFields La etapa agrega 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
}
]

Antes de usar $rerank, considere la compatibilidad, las limitaciones, el comportamiento y los permisos para usar $rerank.

La $rerank etapa solo está disponible en MongoDB Atlas que ejecuta MongoDB 8.3 o posterior.

Antes de usar $rerank, debe habilitar la reclasificación nativa a través de Project SettingsPara obtener más información, consulte Habilitar o deshabilitar la reclasificación nativa para un proyecto.

No puedes usar la etapa $rerank:

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

$rerank Reordena 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 forma 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 la etapa para establecer $set los campos faltantes como una cadena vacía.

El campo query.text determina cómo el modelo de reclasificación puntúa cada documento. El reclasificador calcula una puntuación de relevancia entre el texto de la consulta y el contenido de cada documento en el campo path especificado. En la mayoría de los casos, el campo $rerank.query.text debería ser igual o similar a la consulta de la etapa $search o $vectorSearch anterior.

Las siguientes métricas están disponibles para monitorear el uso de $rerank:

La métrica de tasa de éxito de consultas $rerank registra el porcentaje de consultas $rerank que se completan correctamente. Puede ver esta métrica en la pestaña Metrics de su clúster en la interfaz de usuario de Atlas. Utilice esta métrica para identificar fallos en las consultas $rerank, como errores de límite de velocidad o problemas de conectividad con Voyage AI.

La métrica de uso de tokens $rerank registra el número total de tokens que consumen las consultas $rerank. Puede consultar esta métrica en la pestaña Metrics de su clúster en la interfaz de usuario de Atlas. Utilice esta métrica para supervisar el consumo de tokens y correlacionar el uso con la facturación.

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

Ejemplo: Agregar puntuación de reclasificación al flujo de trabajo
{
"$addFields": {
"rerankScore": { "$meta": "score" }
}
}

La etapa $rerank reemplaza el valor de $meta: "score" con una nueva puntuación. Para conservar el valor de una etapa anterior, como $$rankFusion, puede proyectar las puntuaciones 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" }
}
}

MongoDB utiliza un modelo de precios de pago por uso y cobra por el uso en función del número total de tokens procesados. La siguiente fórmula calcula el total:

total number of processed tokens = (# of query tokens * numDocsToRerank) + sum(# of tokens across all documents )
Modelo
Price per 1K tokens
Price per 1M tokens
Fichas gratis

rerank-2.5

$0.00005

$0.05

200,000,000

rerank-2.5-lite

$0.00002

$0.02

200,000,000

rerank-2

$0.00005

$0.05

rerank-2-lite

$0.00002

$0.02

La etapa $rerank se cobra por separado de otras operaciones de Voyage AI en tu proyecto Atlas. Puedes gestionar los pagos y la facturación a través de la interfaz de facturación y pagos en la interfaz de usuario de Atlas. En la interfaz de usuario de Atlas, puedes:

Atlas impone límites de velocidad a la cantidad de solicitudes que puedes realizar dentro de un período de tiempo específico, medidos en tokens por minuto (TPM) o solicitudes por minuto (RPM). Los límites de velocidad siguen un sistema escalonado, donde los niveles superiores ofrecen límites mayores.

Nivel
Descripción

nivel gratuito

No se requiere información de pago.

Nivel 1

Se requiere información de pago. Los límites de uso son el doble que los del Nivel Gratuito.

Modelo
Solicitudes por minuto (RPM)
Tokens por minuto (TPM)

rerank-2.5

2,000

2,000,000

rerank-2.5-lite

2,000

4,000,000

rerank-2

2,000

2,000,000

rerank-2-lite

2,000

4,000,000

Modelo
Solicitudes por minuto (RPM)
Tokens por minuto (TPM)

rerank-2.5

4,000

4,000,000

rerank-2.5-lite

4,000

8,000,000

rerank-2

4,000

4,000,000

rerank-2-lite

4,000

8,000,000

Supervise el uso de sus tokens en la Usage página de la interfaz de usuario de Atlas. El uso está limitado por las solicitudes por minuto (RPM) y los tokens por minuto (TPM) por clúster. Para obtener más información, consulte Niveles de uso y límites de velocidad.

La página Usage ofrece varias vistas para supervisar y analizar el uso de sus tokens. Haga clic en la pestaña Free Usage para ver los tokens gratuitos restantes por modelo, para su organización.

En la pestaña Usage Activity, el gráfico Total Usage muestra el total de tokens utilizados en tu proyecto a lo largo del tiempo. Puedes filtrar los datos de uso mediante las siguientes opciones:

Opción
Descripción

Usage Period

Consulta los datos de uso para un intervalo de tiempo específico.

Models

Filtra por modelos específicos de Voyage IA.

Para obtener información sobre cómo supervisar el uso de tokens con mayor detalle, consulte la sección "Supervisar el uso de tokens".

Puedes configurar una política de recursos a nivel de organización para bloquear $rerank por completo o con excepciones. Para ello, agrega una forbid regla, escrita en Cedar, que se dirija a la $rerank acción. Si configuras esta política, los nuevos proyectos no podrán $rerank habilitar. Sin embargo, no deshabilitará los proyectos $rerank que ya estén habilitados. Debes deshabilitar individualmente para los proyectos en los que ya esté habilitado. Para deshabilitar $rerank para un proyecto, consulta Habilitar o deshabilitar la reclasificación nativa para un proyecto.

Puedes deshabilitar $rerank con excepciones usando la cláusula unless en la regla forbid.

Ejemplo: Deshabilitar $rerank con excepciones
forbid (principal, action == ResourcePolicy::Action::"$rerank", resource)
unless { <exception> };

Para obtener más información sobre cómo configurar la política de recursos, consulte Políticas de recursos de Atlas.

Puedes realizar las siguientes tareas en la interfaz de usuario de Atlas:

En esta página