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
Richiedi l'accesso per classificare i risultati di ricerca utilizzando i modelli di ranking e attendi di ricevere la conferma dell'attivazione prima di seguire le istruzioni riportate in questa pagina.
Assicurati che il modello di ranking di Vertex AI sia registrato. Per ulteriori informazioni, consulta Modelli di ranking di Vertex AI.
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;