Reclassificação dos resultados da pesquisa com o VertexRanker

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_PRECONDITION com a mensagem Discovery 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>