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
Solicite acesso para classificar seus resultados de pesquisa usando modelos de classificação e aguarde a confirmação de ativação antes de seguir as instruções desta página.
Verifique se o modelo de classificação da Vertex AI está registrado. Para mais informações, consulte Modelos de classificação da Vertex AI.
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;