Auf dieser Seite wird beschrieben, wie Sie Ihre Suchergebnisse für Anwendungen mit dem Vertex AI-Rankingmodellendpunkt einstufen.
Die Vertex AI Ranking API nimmt eine Liste von Dokumenten entgegen und ordnet sie danach ein, wie relevant sie für eine bestimmte Anfrage (einen Suchstring) sind. Wenn Sie die Funktion ai.rank()
verwenden, werden Werte dafür zurückgegeben, wie gut ein Dokument eine bestimmte Anfrage beantwortet.
Um die Anleitungen auf dieser Seite zu verwenden, müssen Sie sich mit AlloyDB for PostgreSQL auskennen und mit generativen KI-Konzepten vertraut sein.
AlloyDB reserviert und erstellt das ai
-Schema.
Hinweise
Bevor Sie Suchergebnisse einstufen, führen Sie die folgenden Schritte aus:
- Prüfen Sie, ob die Erweiterung
google_ml_integration
installiert ist. - Prüfen Sie, ob das Flag
google_ml_integration.enable_model_support
aufon
gesetzt ist. - In Vertex AI einbinden
- Discovery Engine API aktivieren
- Erforderliche Rollen zum Verwenden von Rankingmodellen abrufen
Discovery Engine API aktivieren
Console
- API aktivieren
- Klicken Sie im Schritt Projekt bestätigen auf Weiter, um den Namen des Projekts zu bestätigen, an dem Sie Änderungen vornehmen möchten.
- Klicken Sie im Schritt APIs aktivieren auf Aktivieren, um die Discovery Engine API zu aktivieren. Wenn Sie diese API bereits aktiviert haben, wird sie hier nicht aufgeführt.
gcloud
Damit Sie Ranking-Modelle verwenden können, müssen Sie die Discovery Engine API aktivieren.
Ersetzen Sie PROJECT_ID
durch Ihre
Google Cloud Projekt-ID und PROJECT_NUMBER
durch die entsprechende Projektnummer.
# Enable Discovery Engine API gcloud services enable discoveryengine.googleapis.com --project=PROJECT_ID gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com" \ --role="roles/discoveryengine.viewer"
Die Modellregistrierung für das Ranking ist für Vertex AI-Modelle nicht erforderlich.
Sie können den Vertex AI-Modellnamen als model_id
verwenden, wie im folgenden Beispiel gezeigt.
SELECT index, score FROM ai.rank( model_id => 'semantic-ranker-default-003', search_string => 'Affordable family-friendly vacation spots in Southeast Asia?', documents => ARRAY[ 'Luxury resorts in South Korea', 'Family vacation packages for Vietnam: Ha Long Bay and Hoi An', 'Budget-friendly beaches in Thailand perfect for families', 'A backpacker guide to solo travel in India'])
Ein häufiger Anwendungsfall für den semantischen Ranker ist das erneute Ranking der von der Vektorsuche zurückgegebenen Ergebnisse, um die Reihenfolge der Suchanfragen zu verbessern. Im folgenden Beispiel wird gezeigt, wie das semantische Ranking-Modell für diesen Anwendungsfall verwendet wird. Im Beispiel wird ein erstes Ergebnis-Set für die Abfrage personal fitness
equipment
mithilfe der Vektorsuche abgerufen. Diese Ergebnisse werden dann neu sortiert, um die fünf besten Ergebnisse zurückzugeben.
WITH initial_ranking AS ( SELECT id, description, ROW_NUMBER() OVER () AS ref_number FROM product ORDER BY embedding <=> google_ml.embedding( 'gemini-embedding-001', 'personal fitness equipment')::vector LIMIT 10 ), reranked_results AS ( SELECT index, score FROM ai.rank( model_id => 'semantic-ranker-default-003', search_string => 'personal fitness equipment', documents => (SELECT ARRAY_AGG(description ORDER BY ref_number) FROM initial_ranking), top_n => 5) ) SELECT id, description FROM initial_ranking, reranked_results WHERE initial_ranking.ref_number = reranked_results.index ORDER BY reranked_results.score DESC;
Eine Liste der verfügbaren Modelle und Anwendungsfälle finden Sie unter Unterstützte Modelle.
In Vertex AI einbinden und Erweiterung installieren
- In Vertex AI einbinden
- Prüfen Sie, ob die aktuelle Version von
google_ml_integration
installiert ist.Führen Sie den folgenden Befehl aus, um die installierte Version zu prüfen:
SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.4.3 (1 row)
Wenn die Erweiterung nicht installiert ist oder die installierte Version älter als 1.4.3 ist, aktualisieren Sie die Erweiterung mit den folgenden Befehlen:
CREATE EXTENSION IF NOT EXISTS google_ml_integration; ALTER EXTENSION google_ml_integration UPDATE;
Wenn beim Ausführen der vorherigen Befehle Probleme auftreten oder die Erweiterung nach dem Ausführen der vorherigen Befehle nicht auf Version 1.4.3 aktualisiert wird, wenden Sie sich an den AlloyDB-Support.
Nachdem Sie sichergestellt haben, dass die Version aktuell ist, installieren Sie die Vorschaufunktion, indem Sie die Prozedur
upgrade_to_preview_version
ausführen:CALL google_ml.upgrade_to_preview_version(); SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.4.4 (1 row)
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle „Discovery Engine Viewer“ (roles/discoveryengine.viewer
) für your project
zuzuweisen, damit Sie die Berechtigungen erhalten, die Sie zum Verwenden von Rankingmodellen aus Discovery Engine benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Suchergebnisse einstufen
Die folgende SQL-Abfrage zeigt, wie Sie Ihre Suchergebnisse einstufen :
SELECT
ai.rank(
model_id => 'MODEL_ID',
search_string => 'SEARCH_STRING',
documents => ARRAY['DOCUMENT_1', 'DOCUMENT_2', 'DOCUMENT_3']);
Ersetzen Sie Folgendes:
Parameter | Beschreibung |
---|---|
MODEL_ID |
Eine eindeutige ID für den Modellendpunkt, die Sie definieren. |
SEARCH_STRING |
Ein Suchstring, anhand dessen die Datensätze sortiert werden. |
DOCUMENTS |
Ein eindeutiger String, der den Datensatz identifiziert. |
Eine Liste der unterstützten Vertex AI-Rankingmodelle finden Sie unter Unterstützte Modelle.
Beispiele
Führen Sie die folgende Abfrage aus, um Suchergebnisse mit einem Vertex AI-Rankingmodell zu sortieren:
SELECT index, score
FROM
ai.rank(
model_id => 'semantic-ranker-default-003',
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.']);
Die Antwort ist eine Tabelle, in der jedes Dokument und die Punktzahl basierend auf der Relevanz für die Suchanfrage aufgeführt sind. Hier ist die Beispielantwort:
index | score
-------+------------
2 | 0.33
1 | 0.28
3 | 0.16
(3 rows)
Betrachten Sie eine AlloyDB-Beispieldatenbank mit einer Liste von Rezensionsbeschreibungen, die in Einbettungen konvertiert werden. Im folgenden Codebeispiel wird gezeigt, wie Sie das Ranking-Modell verwenden, um die Namen der am besten bewerteten Produkte basierend auf der semantischen Ähnlichkeit ihrer Rezensionsbeschreibungen mit einer Anfrage abzurufen.
WITH initial_ranking 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(
'gemini-embedding-001', 'good desserts')::vector
LIMIT 10
), reranked_results AS (
SELECT index, score
FROM
ai.rank(
model_id => 'semantic-ranker-512',
search_string => 'good desserts',
documents => (SELECT ARRAY_AGG(review ORDER BY ref_number) FROM initial_ranking),
top_n => 5)
)
SELECT product_id, name
FROM initial_ranking, reranked_results
WHERE initial_ranking.ref_number = reranked_results.index
ORDER BY reranked_results.score DESC;