Hier erfahren Sie, wie Sie Ihre Suchergebnisse für Anwendungen mit Ranking-Modellen der Gemini Enterprise Agent Platform wie semantic-ranker-default-003 einstufen und neu einstufen.
Mit der Funktion ai.rank() können Sie Dokumente anhand ihrer Relevanz für eine Abfrage bewerten und die Ergebnisse der Vektorsuche verbessern, indem Sie sie neu einstufen, um die Abfrage besser zu sortieren.
Die Ranking API der Agent Platform verwendet eine Liste von Dokumenten und stuft diese Dokumente danach ein, wie relevant sie für eine bestimmte Abfrage (eine Suchanfrage) sind. Wenn Sie die Funktion ai.rank() verwenden, werden Ergebnisse zurückgegeben, die angeben, wie gut ein Dokument eine bestimmte Abfrage beantwortet.
Um die Anleitung auf dieser Seite zu verwenden, müssen Sie mit AlloyDB for PostgreSQL vertraut sein und generative KI-Konzepte kennen.
AlloyDB reserviert und erstellt das ai-Schema.
Vorbereitung
Führen Sie vor dem Einstufen von Suchergebnissen die folgenden Schritte aus:
- Prüfen Sie, ob die Erweiterung
google_ml_integrationinstalliert ist. - Prüfen Sie, ob das Flag
google_ml_integration.enable_model_supportaufongesetzt ist. - In die Agent Platform einbinden.
- Aktivieren Sie die Discovery Engine API.
- Erforderliche Rollen zum Verwenden von Ranking-Modellen 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, in 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
Um Ranking-Modelle zu verwenden, 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 Agent Platform-Modelle nicht erforderlich.
Sie können den Namen des Agent Platform-Modells als das
model_id, wie im folgenden Beispiel gezeigt, verwenden.
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 Einstufen der Ergebnisse, die von der Vektorsuche zurückgegeben werden
um die Abfrage besser zu sortieren. Im folgenden Beispiel wird gezeigt, wie das semantische Ranking-Modell für diesen Anwendungsfall verwendet wird. Im Beispiel wird mit der Vektorsuche ein
erster Ergebnissatz für die Abfrage personal fitness
equipment abgerufen. Diese Ergebnisse werden dann neu eingestuft, um
zurückzugeben die fünf besten Ergebnisse.
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 die Agent Platform einbinden und die Erweiterung installieren
- Nutzerzugriff auf Agent Platform-Modelle konfigurieren.
- Prüfen Sie, ob die neueste Version von
google_ml_integrationinstalliert 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.5.2 (1 row)
Wenn die Erweiterung nicht installiert ist oder die installierte Version älter als 1.5.2 ist, aktualisieren Sie die Erweiterung.
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.5.2 aktualisiert wird, wenden Sie sich an den Google Cloud Support.
Setzen Sie das
google_ml_integration.enable_ai_query_engineFlag aufon, um die Funktion der AlloyDB AI-Abfrage-Engine zu verwenden.SQL
- Aktivieren Sie die KI-Abfrage-Engine für die aktuelle Sitzung.
SET google_ml_integration.enable_ai_query_engine = on;
- Aktivieren Sie Funktionen für eine bestimmte Datenbank sitzungsübergreifend.
ALTER DATABASE DATABASE_NAME SET google_ml_integration.enable_ai_query_engine = 'on';
- Aktivieren Sie die KI-Abfrage-Engine für einen bestimmten Nutzer sitzungs- und datenbankübergreifend.
ALTER ROLE postgres SET google_ml_integration.enable_ai_query_engine = 'on';
Console
Informationen zum Ändern des Werts des Flags
google_ml_integration.enable_ai_query_enginefinden Sie unter Datenbank-Flags einer Instanz konfigurieren.gcloud
Wenn Sie die gcloud CLI verwenden möchten, können Sie die Google Cloud CLI installieren und initialisieren oder Sie können Cloud Shell verwenden.
Sie können den Wert des Flags
google_ml_integration.enable_ai_query_engineändern. Weitere Informationen finden Sie unter Datenbank-Flags einer Instanz konfigurieren.gcloud alloydb instances update INSTANCE_ID \ --database-flags google_ml_integration.enable_ai_query_engine=on \ --region=REGION_ID \ --cluster=CLUSTER_ID \ --project=PROJECT_ID
- Aktivieren Sie die KI-Abfrage-Engine für die aktuelle Sitzung.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle „Discovery Engine-Betrachter“ (roles/discoveryengine.viewer) für your project zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Verwenden von Ranking-Modellen aus der
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, den Sie definieren. |
SEARCH_STRING |
Eine Suchanfrage, anhand derer die Einträge eingestuft werden. |
DOCUMENTS |
Ein eindeutiger String, der den Eintrag identifiziert. |
Eine Liste der unterstützten Ranking-Modelle der Agent Platform finden Sie unter Unterstützte Modelle.
Beispiele
Führen Sie die folgende Abfrage aus, um Suchergebnisse mit einem Vertex AI-Ranking-Modell einzustufen:
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 mit den einzelnen Dokumenten und der Punktzahl basierend auf der Relevanz für die Suchanfrage. Hier ist die Beispielantwort:
index | score
-------+------------
2 | 0.33
1 | 0.28
3 | 0.16
(3 rows)
Stellen Sie sich eine AlloyDB-Beispieldatenbank mit einer Liste von Rezensionsbeschreibungen vor, die in Einbettungen umgewandelt wurden. Das folgende Codebeispiel zeigt, wie Sie das Ranking-Modell verwenden, um den Namen der am besten bewerteten Produkte basierend auf der semantischen Ähnlichkeit ihrer Rezensionsbeschreibungen mit einer Abfrage 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;
Nächste Schritte
Modellendpunkt bei der Modellendpunktverwaltung registrieren.
Erfahren Sie mehr über die Referenz zur Verwaltung von Modellendpunkten.