Suchergebnisse einstufen

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:

Discovery Engine API aktivieren

Console

  1. API aktivieren
  2. Klicken Sie im Schritt Projekt bestätigen auf Weiter , um den Namen des Projekts zu bestätigen, in dem Sie Änderungen vornehmen möchten.
  3. 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

  1. Nutzerzugriff auf Agent Platform-Modelle konfigurieren.
  2. Prüfen Sie, ob die neueste Version von google_ml_integration installiert ist.
    1. 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)
    2. 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.

  3. Setzen Sie das google_ml_integration.enable_ai_query_engine Flag auf on, um die Funktion der AlloyDB AI-Abfrage-Engine zu verwenden.

    SQL

    1. Aktivieren Sie die KI-Abfrage-Engine für die aktuelle Sitzung.
      SET google_ml_integration.enable_ai_query_engine = on;
    2. Aktivieren Sie Funktionen für eine bestimmte Datenbank sitzungsübergreifend.
      ALTER DATABASE DATABASE_NAME SET google_ml_integration.enable_ai_query_engine = 'on';
    3. 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_engine finden 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

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