A Recuperação de Agentes (antiga busca vetorial 2.0) fornece o VertexRanker para a reclassificação semântica, que é alimentada pela API Ranking.
Depois que a Recuperação de Agentes recupera e combina os resultados candidatos (usando a Reciprocal Rank Fusion, RRF), o VertexRanker reavalia os candidatos mesclados em relação à consulta em linguagem natural usando um modelo semântico dedicado.
Isso melhora a relevância dos principais resultados, especialmente para consultas em que a pesquisa sozinha perde a nuance. A reclassificação acontece no lado do servidor com chamadas para BatchSearchDataObjects. Não são necessárias fiações adicionais do lado do cliente nem viagens de ida e volta.
VertexRanker
O VertexRanker é configurado como o reclassificador do campo combine.ranker do objeto BatchSearchDataObjectsRequest. É necessário configurar um classificador principal (somente a RRF é compatível). O reclassificador é executado após a etapa de fusão da RRF e substitui a saída pela lista reclassificada semanticamente.
A tabela a seguir lista os campos de configuração do classificador.
| Campo | Obrigatório | Descrição |
|---|---|---|
combine.ranker.rrf.weights |
Sim | Os pesos para a fusão da RRF dos resultados da pesquisa subjacente. |
combine.ranker.vertex_ranker.model |
Sim | O nome do modelo de classificação. Valores compatíveis: semantic-ranker-fast@latest, semantic-ranker-default@latest, semantic-ranker-fast-004, semantic-ranker-default-004. Consulte os modelos da API Ranking para detalhes sobre cada um. |
combine.ranker.vertex_ranker.top_n |
Sim | O número máximo de candidatos da lista mesclada a serem enviados ao classificador. Os valores válidos são de 1 a 1000. |
combine.ranker.vertex_ranker.text_record_spec.query |
Sim | A consulta em linguagem natural usada pelo classificador para pontuar registros. |
combine.ranker.vertex_ranker.text_record_spec.title_template |
Sim | A string de modelo, por exemplo, {title}, especificando como extrair (construir) o título de cada registro. Use caminhos de ponto para especificar campos de dados. |
combine.ranker.vertex_ranker.text_record_spec.content_template |
Sim | A string de modelo, por exemplo, {body.text}, especificando como extrair (construir) o conteúdo principal de cada registro. Use caminhos de ponto para especificar campos de dados. |
combine.top_k |
Opcional | O número final de resultados a serem retornados após a reclassificação. Esse valor precisa ser menor ou igual a vertex_ranker.top_n e menor ou igual a 1.000. |
O exemplo a seguir demonstra o corpo de uma solicitação.
{
"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}"
}
}
}
}
}
Os modelos usam caminhos de ponto para campos de dados de objetos de dados, por exemplo, {title} ou {nested.field}. Esses campos precisam existir no esquema da coleção. Caso contrário, a solicitação será rejeitada durante a validação. Se um objeto de dados estiver ausente no campo fornecido, o servidor vai buscar novamente o registro completo no armazenamento de forma transparente para que o modelo ainda possa ser preenchido.
Cota e preços
O VertexRanker na recuperação de agentes usa uma permissão de nível sem custo financeiro com faturamento de excedente baseado no uso. Cada projeto recebe uma permissão sem custo financeiro de uso de classificação por período de 30 dias. O uso dentro dessa permissão não gera custos. Os preços padrão da API Ranking se aplicam ao projeto do consumidor para qualquer uso além dessa permissão.
A tabela a seguir lista os valores de cota.
| Item | Valor |
|---|---|
| Permissão de nível sem custo financeiro | 80.000 unidades de classificação por projeto de consumidor por período de 30 dias. |
| Excedente | Faturado com os preços padrão da API Ranking no projeto do consumidor. |
| Número máximo de registros por chamada de reclassificação | 1.000 (top_n precisa estar no intervalo [1, 1000] e top_k <= top_n). |
Atingir a permissão de nível sem custo financeiro não causa falha nas solicitações. Depois que a permissão de 80.000 unidades de classificação for consumida, o uso subsequente do VertexRanker continuará sendo bem-sucedido e será faturado como excedente. A permissão é redefinida 30 dias após o primeiro uso.
As unidades de classificação são calculadas com base no número de registros enviados ao classificador e no tamanho dos modelos de título e conteúdo, usando a mesma contabilidade da API Ranking independente. Consulte os preços da API Ranking para mais detalhes.
Antes de usar o VertexRanker, o Discovery Engine precisa estar ativado no projeto do consumidor. Para mais informações, consulte Condições de falha.
Tratamento de falhas e avisos
O VertexRanker é um reclassificador de melhor esforço. Se a chamada de classificação falhar, a RPC BatchSearchDataObjects ainda será bem-sucedida e retornará os resultados mesclados da RRF truncados para top_k. A falha é informada no campo search_response_metadata.warnings na resposta. O código de status completo da API Ranking é preservado. O código de aviso para status inesperados é
UNAVAILABLE com a mensagem de aviso:
"Reranking is temporarily unavailable. Returning fused (RRF) results without
semantic reranking."
Condições de falha
Toda a RPC BatchSearchDataObjects falha com FAILED_PRECONDITION (sem fallback para RRF) nos casos a seguir.
- API Discovery Engine não ativada : a API Ranking retorna
FAILED_PRECONDITIONcom a mensagemDiscovery Engine API is not enabled for the consumer project /<N/>. Please enable the API and try again."Correção: ative a API Discovery Engine no projeto do consumidor.
O cliente precisa ativar o Discovery Engine para que a reclassificação ocorra no projeto do consumidor.
A tabela a seguir lista os códigos de aviso, as causas típicas que geram os avisos e a mensagem que explica o aviso.
| Código de aviso | Causa típica | Mensagem de aviso |
|---|---|---|
RESOURCE_EXHAUSTED |
Uma cota da API Ranking foi excedida no projeto do consumidor. Observação: exceder a permissão de 80.000 unidades de classificação não causa esse aviso. Em vez disso,o excedente é faturado. | <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 não foi concluído dentro do prazo da solicitação. |
<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 retornou UNAVAILABLE ou um código não preservado (por exemplo, INTERNAL), que é recolhido para UNAVAILABLE. |
Se o código subjacente for UNAVAILABLE: "RankService.Rank call failed for consumer project... Caso contrário: "Reranking is temporarily unavailable. Returning fused (RRF) results without semantic reranking." |
FAILED_PRECONDITION |
Qualquer FAILED_PRECONDITION retornado pela API Ranking. |
RankService.Rank call failed for consumer project <N> with request query: <query> and <model>: semantic-ranker-fast@latest number of records: <N> |
CANCELLED |
O autor da chamada cancelou a RPC BatchSearchDataObjects antes que a reclassificação fosse concluída. |
<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> |