Classificar e pontuar os resultados da pesquisa

Esta página descreve como classificar ou pontuar os resultados da pesquisa para aplicativos que usam o endpoint do modelo de classificação da Vertex AI registrado no gerenciamento de endpoint do modelo.

A API de classificação da Vertex AI usa uma lista de documentos e os classifica com base na relevância deles para uma determinada consulta (uma string de pesquisa). Quando você usa a função ai.rank(), ela retorna pontuações sobre o quanto bem um documento responde a uma determinada consulta.

Para usar as instruções desta página, você precisa entender o AlloyDB para PostgreSQL e conhecer os conceitos de IA generativa.

O AlloyDB reserva o esquema ai e tenta criar esse esquema quando você instala a extensão google_ml_integration. Se a criação do esquema falhar, use as funções com o mesmo nome no esquema google_ml.

Antes de começar

Classificar seus resultados da pesquisa

A consulta SQL a seguir mostra como classificar os resultados da pesquisa :

SELECT
  ai.rank(
    model_id => 'MODEL_ID',
    search_string => 'SEARCH_STRING',
    documents => ARRAY['DOCUMENT_1', 'DOCUMENT_2', 'DOCUMENT_3']);

Substitua:

Parâmetro Descrição
MODEL_ID Um ID exclusivo para o endpoint do modelo que você define.
SEARCH_STRING String de pesquisa em que os registros são classificados ou pontuados.
DOCUMENTS Uma string exclusiva que identifica o registro.

Exemplos

Para classificar os resultados da pesquisa usando o endpoint de classificação registrado, execute a seguinte consulta:

SELECT index, score
FROM
  ai.rank(
    model_id => 'semantic-ranker-512-002',
    search_string => 'AlloyDB is a PostgreSQL compatible AI database that is ready for production.',
    documents =>
      ARRAY[
        'Alloys are made from combination of metals',
        'The best enterprise-ready PostgreSQL database.',
        'You can feel the heat in Alloy apartments.']);

A resposta é uma tabela que mostra cada documento e a pontuação com base na relevância para a consulta de pesquisa.Confira abaixo um exemplo de resposta:

 index | score
-------+-------
     1 |  0.03
     2 |  0.02
     3 |  0.01
(3 rows)

Considere um exemplo de banco de dados do AlloyDB com uma lista de descrições de avaliações convertidas em embeddings. O snippet de código de exemplo a seguir mostra como usar o modelo de classificação para recuperar o nome dos produtos com a melhor classificação com base na semelhança semântica das descrições de avaliações com uma consulta. Ele pressupõe que os endpoints dos modelos text-embedding-005 e semantic-ranker-512@002 estão registrados.

WITH
  initial_results AS (
    SELECT product_id, name, review, review_id,
            ROW_NUMBER() OVER () AS ref_number
    FROM user_reviews
    ORDER BY
      review_desc_embedding <=> google_ml.embedding(
        'text-embedding-005', 'good desserts')
    LIMIT 100
  ),
reranked AS (
    SELECT
      ai.rank(
        model_id => 'semantic-ranker-512@002',
        search_string => 'good desserts',
        documents => ARRAY_AGG(review ORDER BY ref_number))
    FROM initial_results
  )
SELECT product_id, name
FROM initial_results, reranked
WHERE initial_results.ref_number = reranked.index
ORDER BY reranked.score;

A seguir