Como parte de tu experiencia de generación aumentada por recuperación (RAG) en aplicaciones de IA, puedes clasificar un conjunto de documentos en función de una consulta.
La API Ranking toma una lista de documentos y los vuelve a clasificar en función de su relevancia para una consulta. En comparación con las incrustaciones, que solo tienen en cuenta la similitud semántica de un documento y una consulta, la API de ranking puede proporcionarte puntuaciones precisas sobre la calidad con la que un documento responde a una consulta determinada. La API Ranking se puede usar para mejorar la calidad de los resultados de búsqueda después de recuperar un conjunto inicial de documentos candidatos.
La API de clasificación no tiene estado, por lo que no es necesario indexar documentos antes de llamar a la API. Solo tienes que enviar la consulta y los documentos. Por eso, la API es ideal para volver a clasificar documentos de la búsqueda vectorial y otras soluciones de búsqueda.
En esta página se describe cómo usar la API Ranking para clasificar un conjunto de documentos en función de una consulta.
Casos prácticos
El caso de uso principal de la API Ranking es mejorar la calidad de los resultados de búsqueda.
Sin embargo, la API Ranking puede ser útil en cualquier situación en la que necesites saber qué contenido es el más relevante para la consulta de un usuario. Por ejemplo, la API Ranking puede ayudarte en lo siguiente:
Encontrar el contenido adecuado para fundamentar un LLM
Mejorar la relevancia de una experiencia de búsqueda
Identificar las secciones relevantes de un documento
El siguiente flujo describe cómo puedes usar la API de ranking para mejorar la calidad de los resultados de los documentos divididos en fragmentos:
Usa la API Layout Parser de Document AI para dividir un conjunto de documentos en fragmentos.
Usa una API de inserciones para crear inserciones de cada uno de los fragmentos.
Carga las inserciones en Vector Search u otra solución de búsqueda.
Consulta tu índice de búsqueda y recupera los fragmentos más relevantes.
Vuelve a clasificar los fragmentos relevantes mediante la API Ranking.
Datos de entrada
La API Ranking requiere las siguientes entradas:
La consulta para la que estás clasificando los registros.
Por ejemplo:
"query": "Why is the sky blue?"
Conjunto de registros relevantes para la consulta. Los registros se proporcionan como una matriz de objetos. Cada registro puede incluir un ID único, un título y el contenido del documento. En cada registro, incluye un título, contenido o ambos. El número máximo de tokens admitidos por registro depende de la versión del modelo que se esté usando. Por ejemplo, los modelos hasta la versión
003
admiten 512 tokens, mientras que la versión004
admite 1024 tokens. Si la longitud combinada del título y el contenido supera el límite de tokens del modelo, el contenido adicional se trunca. Puede incluir hasta 200 registros por solicitud.Por ejemplo, un array de registros tiene un aspecto similar al siguiente. En realidad, se incluirían muchos más registros en la matriz y el contenido sería mucho más largo:
"records": [ { "id": "1", "title": "The Color of the Sky: A Poem", "content": "A canvas stretched across the day,\nWhere sunlight learns to dance and play.\nBlue, a hue of scattered light,\nA gentle whisper, soft and bright." }, { "id": "2", "title": "The Science of a Blue Sky", "content": "The sky appears blue due to a phenomenon called Rayleigh scattering. Sunlight is comprised of all the colors of the rainbow. Blue light has shorter wavelengths than other colors, and is thus scattered more easily." } ]
Opcional: número máximo de registros que quieres que devuelva la API Ranking. De forma predeterminada, se devuelven todos los registros. Sin embargo, puedes usar el campo
topN
para devolver menos registros. Todos los registros se clasifican independientemente del valor que se haya definido.Por ejemplo, esta consulta devuelve los 10 registros mejor clasificados:
"topN": 10,
Opcional: un ajuste que especifica si quieres que la API devuelva solo el ID del registro o si también quieres que devuelva el título y el contenido del registro. De forma predeterminada, se devuelve el registro completo. El motivo principal para definir este valor es si quieres reducir el tamaño de la carga útil de la respuesta.
Por ejemplo, si se define como
true
, solo se devuelve el ID del registro, no el título ni el contenido:"ignoreRecordDetailsInResponse": true,
Opcional: el nombre del modelo. Especifica el modelo que se usará para clasificar los documentos. Si no se especifica ningún modelo, se usa
semantic-ranker-default@latest
, que apunta automáticamente al modelo disponible más reciente. Para hacer referencia a un modelo específico, indica uno de los nombres de modelo que aparecen en Modelos admitidos, comosemantic-ranker-512-003
.En el siguiente ejemplo,
model
se ha definido comosemantic-ranker-default@latest
. Esto significa que la API Ranking siempre usará el modelo más reciente disponible."model": "semantic-ranker-default@latest"
Datos de salida
La API Ranking devuelve una lista ordenada de registros con los siguientes resultados:
Puntuación: valor flotante entre 0 y 1 que indica la relevancia del registro.
ID: el ID único del registro.
Si se solicita, el objeto completo: el ID, el título y el contenido.
Por ejemplo:
{
"records": [
{
"id": "2",
"score": 0.98,
"title": "The Science of a Blue Sky",
"content": "The sky appears blue due to a phenomenon called Rayleigh scattering. Sunlight is comprised of all the colors of the rainbow. Blue light has shorter wavelengths than other colors, and is thus scattered more easily."
},
{
"id": "1",
"score": 0.64,
"title": "The Color of the Sky: A Poem",
"content": "A canvas stretched across the day,\nWhere sunlight learns to dance and play.\nBlue, a hue of scattered light,\nA gentle whisper, soft and bright."
}
]
}
Clasifica (o reclasifica) un conjunto de registros según una consulta.
Normalmente, proporcionará a la API de ranking una consulta y un conjunto de registros que sean relevantes para esa consulta y que ya se hayan clasificado por algún otro método, como una búsqueda por palabras clave o una búsqueda vectorial. Después, usa la API Ranking para mejorar la calidad de la clasificación y determinar una puntuación que indique la relevancia de cada registro en relación con la consulta.
Obtiene la consulta y los registros resultantes. Asegúrate de que cada registro tenga un ID y un título, contenido o ambos.
El número máximo de tokens admitidos por registro depende de la versión del modelo. Los modelos hasta la versión
003
, comosemantic-ranker-512-003
, admiten 512 tokens por registro. A partir de la versión004
, este límite se amplía a 1024 tokens. Si la longitud combinada del título y el contenido supera el límite de tokens del modelo, el contenido adicional se trunca.Llama al método
rankingConfigs.rank
con el siguiente código:
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
"https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/rankingConfigs/default_ranking_config:rank" \
-d '{
"model": "semantic-ranker-default@latest",
"query": "QUERY",
"records": [
{
"id": "RECORD_ID_1",
"title": "TITLE_1",
"content": "CONTENT_1"
},
{
"id": "RECORD_ID_2",
"title": "TITLE_2",
"content": "CONTENT_2"
},
{
"id": "RECORD_ID_3",
"title": "TITLE_3",
"content": "CONTENT_3"
}
]
}'
Haz los cambios siguientes:
PROJECT_ID
: el ID de tu Google Cloud proyecto.QUERY
: la consulta con la que se clasifican y puntúan los registros.RECORD_ID_n
: cadena única que identifica el registro.TITLE_n
: el título del registro.CONTENT_n
: el contenido del registro.
Para obtener información general sobre este método, consulta rankingConfigs.rank
.
Haz clic para ver un ejemplo de comando curl y de respuesta.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: my-project-123" \ "https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/rankingConfigs/default_ranking_config:rank" \ -d '{ "model": "semantic-ranker-default@latest", "query": "what is Google gemini?", "records": [ { "id": "1", "title": "Gemini", "content": "The Gemini zodiac symbol often depicts two figures standing side-by-side." }, { "id": "2", "title": "Gemini", "content": "Gemini is a cutting edge large language model created by Google." }, { "id": "3", "title": "Gemini Constellation", "content": "Gemini is a constellation that can be seen in the night sky." } ] }'
{ "records": [ { "id": "2", "title": "Gemini", "content": "Gemini is a cutting edge large language model created by Google.", "score": 0.97 }, { "id": "3", "title": "Gemini Constellation", "content": "Gemini is a constellation that can be seen in the night sky.", "score": 0.18 }, { "id": "1", "title": "Gemini", "content": "The Gemini zodiac symbol often depicts two figures standing side-by-side.", "score": 0.05 } ] }
Python
Para obtener más información, consulta la documentación de referencia de la API AI Applications Python.
Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Modelos admitidos
Están disponibles los siguientes modelos.
Nombre del modelo | Modelo más reciente (semantic-ranker-default@latest ) |
Entrada | Ventana de contexto | Fecha de lanzamiento | Fecha de retirada |
---|---|---|---|---|---|
semantic-ranker-default-004 |
Sí | Texto (25 idiomas) | 1024 | 9 de abril del 2025 | Por determinar |
semantic-ranker-fast-004 |
No | Texto (25 idiomas) | 1024 | 9 de abril del 2025 | Por determinar |
semantic-ranker-default-003 |
No | Texto (25 idiomas) | 512 | 10 de septiembre del 2024 | Por determinar |
semantic-ranker-default-002 |
No | Texto (solo en inglés) | 512 | 3 de junio del 2024 | Por determinar |
Siguientes pasos
Descubre cómo usar el método de clasificación con otras APIs de RAG para generar respuestas fundamentadas a partir de datos no estructurados.