Classificare e assegnare un punteggio ai risultati di ricerca

Questa pagina descrive come assegnare un ranking o un punteggio ai risultati di ricerca per le applicazioni utilizzando l'endpoint del modello di ranking Vertex AI registrato nella gestione degli endpoint del modello.

L'API di ranking di Vertex AI prende un elenco di documenti e li classifica in base alla pertinenza per una determinata query (una stringa di ricerca). Quando utilizzi la funzione ai.rank(), vengono restituiti i punteggi relativi alla qualità della risposta di un documento a una determinata query.

Per utilizzare le istruzioni riportate in questa pagina, devi conoscere AlloyDB per PostgreSQL e avere familiarità con i concetti di IA generativa.

AlloyDB riserva lo schema ai e tenta di crearlo quando installi l'estensione google_ml_integration. Se la creazione dello schema non va a buon fine, utilizza le funzioni con lo stesso nome nello schema google_ml.

Prima di iniziare

Classificare i risultati di ricerca

La seguente query SQL mostra come assegnare un ranking ai risultati di ricerca :

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

Sostituisci quanto segue:

Parametro Descrizione
MODEL_ID Un ID univoco per l'endpoint del modello definito.
SEARCH_STRING Stringa di ricerca in base alla quale i record vengono classificati o valutati.
DOCUMENTS Una stringa univoca che identifica il record.

Esempi

Per assegnare un ranking ai risultati di ricerca utilizzando l'endpoint di ranking registrato, esegui la seguente query:

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.']);

La risposta è una tabella che mostra ogni documento e il relativo punteggio in base alla pertinenza alla query di ricerca.Di seguito è riportata la risposta di esempio:

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

Prendi in considerazione un database AlloyDB di esempio con un elenco di descrizioni delle recensioni convertite in embedding. Il seguente snippet di codice di esempio mostra come utilizzare il modello di ranking per recuperare il nome dei prodotti con il ranking più alto in base alla somiglianza semantica delle descrizioni delle recensioni a una query. Si presume che entrambi gli endpoint del modello text-embedding-005 e semantic-ranker-512@002 siano registrati.

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;

Passaggi successivi