Agent Retrieval (antes Vector Search 2.0) proporciona VertexRanker para la clasificación semántica, que funciona con la API de Ranking.
Después de que Agent Retrieval recupera y fusiona los resultados candidatos (con la fusión de clasificación recíproca [RRF]), VertexRanker vuelve a calificar a los candidatos fusionados en función de tu consulta en lenguaje natural con un modelo semántico dedicado.
Esto mejora la relevancia de los resultados principales, en especial para las consultas en las que la búsqueda por sí sola no detecta los matices. La clasificación se realiza del lado del servidor con llamadas a BatchSearchDataObjects. No se necesitan conexiones adicionales del lado del cliente ni viajes de ida y vuelta adicionales.
VertexRanker
VertexRanker se configura como el clasificador para el campo combine.ranker del objeto BatchSearchDataObjectsRequest. Debes configurar un clasificador principal (solo se admite RRF). El clasificador se ejecuta después del paso de fusión de RRF y reemplaza el resultado con la lista calificada semánticamente.
En la siguiente tabla, se enumeran los campos de configuración del clasificador.
| Campo | Obligatorio | Descripción |
|---|---|---|
combine.ranker.rrf.weights |
Sí | Los pesos para la fusión de RRF de los resultados de búsqueda subyacentes |
combine.ranker.vertex_ranker.model |
Sí | El nombre del modelo de clasificación Valores admitidos: semantic-ranker-fast@latest, semantic-ranker-default@latest, semantic-ranker-fast-004, semantic-ranker-default-004 Consulta los modelos de la API de Ranking para obtener detalles sobre cada uno. |
combine.ranker.vertex_ranker.top_n |
Sí | La cantidad máxima de candidatos de la lista fusionada para enviar al clasificador Los valores válidos son de 1 a 1000. |
combine.ranker.vertex_ranker.text_record_spec.query |
Sí | La consulta en lenguaje natural que usa el clasificador para calificar los registros |
combine.ranker.vertex_ranker.text_record_spec.title_template |
Sí | La cadena de plantilla, por ejemplo, {title}, que especifica cómo extraer (construir) el título de cada registro Usa rutas de acceso con puntos para especificar los campos de datos. |
combine.ranker.vertex_ranker.text_record_spec.content_template |
Sí | La cadena de plantilla, por ejemplo, {body.text}, que especifica cómo extraer (construir) el contenido principal de cada registro Usa rutas de acceso con puntos para especificar los campos de datos. |
combine.top_k |
Opcional | La cantidad final de resultados que se mostrarán después de la clasificación Debe ser menor o igual que vertex_ranker.top_n y menor o igual que 1000. |
En el siguiente ejemplo, se muestra el cuerpo de una solicitud.
{
"searches": [
{ "semantic_search": { "search_text": "running shoes", "search_field": "embedding", "task_type": "RETRIEVAL_QUERY", "top_k": 50 } },
{ "text_search": { "search_text": "running shoes", "data_field_names": ["title"], "top_k": 50 } }
],
"combine": {
"top_k": 10,
"ranker": {
"rrf": { "weights": [1.0, 1.0] },
"vertex_ranker": {
"model": "semantic-ranker-fast@latest",
"top_n": 50,
"text_record_spec": {
"query": "running shoes",
"title_template": "{title}",
"content_template": "{body.text}"
}
}
}
}
}
Las plantillas usan rutas de acceso con puntos a los campos de datos del objeto de datos, por ejemplo, {title} o {nested.field}. Estos campos deben existir en el esquema de la colección; de lo contrario, la solicitud se rechaza durante la validación. Si a un objeto de datos le falta el campo proporcionado, el servidor vuelve a recuperar de forma transparente el registro completo del almacenamiento para que la plantilla aún se pueda propagar.
Cuota y precios
VertexRanker en Agent Retrieval usa una asignación del nivel gratuito con facturación de excedente basada en el uso. Cada proyecto recibe una asignación gratuita de uso de clasificación por período de 30 días. El uso dentro de esta asignación no genera ningún costo. Los precios estándar de la API de Ranking se aplican al proyecto del consumidor para cualquier uso más allá de esta asignación.
En la siguiente tabla, se enumeran los valores de la cuota.
| Elemento | Valor |
|---|---|
| Asignación del nivel gratuito | 80,000 unidades de clasificación por proyecto de consumidor por período de 30 días |
| Excedente | Se factura con los precios estándar de la API de Ranking en el proyecto del consumidor. |
| Registros máximos por llamada de clasificación | 1,000 (top_n debe estar en el rango [1, 1000] y top_k <= top_n). |
Si alcanzas la asignación del nivel gratuito, no fallarán tus solicitudes. Una vez que se consumen las 80,000 unidades de clasificación, el uso posterior de VertexRanker continúa correctamente y se factura como excedente. La asignación se restablece 30 días después de tu primer uso.
Las unidades de clasificación se calculan a partir de la cantidad de registros enviados al clasificador y el tamaño de sus plantillas de título y contenido, con la misma contabilidad que la API de Ranking independiente. Consulta los precios de la API de Ranking para obtener todos los detalles.
Antes de que puedas usar VertexRanker, se debe habilitar Discovery Engine en el proyecto del consumidor. Para obtener más información, consulta Condiciones de falla.
Advertencias y manejo de fallas
VertexRanker es un clasificador que se realiza de la mejor manera posible. Si falla la llamada de clasificación, la RPC BatchSearchDataObjects aún se realiza correctamente y muestra los resultados fusionados de RRF truncados a top_k. La falla se informa en el campo search_response_metadata.warnings de la respuesta. Se conserva el código de estado completo de la API de Ranking. El código de advertencia para los estados inesperados es
UNAVAILABLE con el mensaje de advertencia:
"Reranking is temporarily unavailable. Returning fused (RRF) results without
semantic reranking."
Condiciones de falla
Toda la RPC BatchSearchDataObjects falla con FAILED_PRECONDITION (sin fallback a RRF) en los siguientes casos.
- La API de Discovery Engine no está habilitada : La API de Ranking muestra
FAILED_PRECONDITIONcon el mensajeDiscovery Engine API is not enabled for the consumer project /<N/>. Please enable the API and try again."Corrección: Habilita la API de Discovery Engine en el proyecto del consumidor.
El cliente debe habilitar Discovery Engine para que se realice la clasificación en el proyecto del consumidor.
En la siguiente tabla, se enumeran los códigos de advertencia, las causas habituales que generan las advertencias y el mensaje que explica la advertencia.
| Código de advertencia | Causa habitual | Mensaje de advertencia |
|---|---|---|
RESOURCE_EXHAUSTED |
Se excedió una cuota de la API de Ranking en el proyecto del consumidor. Nota: Si se excede la asignación de 80,000 unidades de clasificación, no se genera esta advertencia; en su lugar, se factura el excedente. | <Quota exceeded message>; RankService.Rank call failed for consumer project <N> with request query: <query> and <model>: semantic-ranker-fast@latest number of records: <N> |
DEADLINE_EXCEEDED |
Ranker.Rank no se completó dentro del plazo de la solicitud. |
<deadline-exceeded message from Ranker.Rank>; RankService.Rank call failed for consumer project <N> with request query: <query> and <model>: semantic-ranker-fast@latest number of records: <N> |
UNAVAILABLE |
Ranker.Rank mostró UNAVAILABLE o un código no conservado (por ejemplo, INTERNAL) que se contrae a UNAVAILABLE. |
Si el código subyacente es UNAVAILABLE: "RankService.Rank call failed for consumer project... De lo contrario: "Reranking is temporarily unavailable. Returning fused (RRF) results without semantic reranking." |
FAILED_PRECONDITION |
Cualquier FAILED_PRECONDITION que muestre la API de Ranking |
RankService.Rank call failed for consumer project <N> with request query: <query> and <model>: semantic-ranker-fast@latest number of records: <N> |
CANCELLED |
El llamador canceló la RPC BatchSearchDataObjects antes de que se completara la clasificación. |
<cancellation message from the cancelled RankService.Rank RPC>; RankService.Rank call failed for consumer project <N> with request query: <query> and <model>: semantic-ranker-fast@latest number of records: <N> |