Suchergebnisse ranken und bewerten

Auf dieser Seite wird beschrieben, wie Sie Ihre Suchergebnisse für Anwendungen mit dem Vertex AI-Rankingmodellendpunkt bewerten, der in der Modellendpunktverwaltung registriert ist.

Die Vertex AI Ranking API nimmt eine Liste von Dokumenten und sortiert diese anhand ihrer Relevanz für eine bestimmte Suchanfrage (einen Suchstring). Wenn Sie die Funktion ai.rank() verwenden, werden Bewertungen dafür zurückgegeben, wie gut ein Dokument eine bestimmte Suchanfrage beantwortet.

Um die Anleitungen auf dieser Seite verwenden zu können, müssen Sie AlloyDB for PostgreSQL kennen und mit den Konzepten der generativen KI vertraut sein.

AlloyDB reserviert das ai-Schema und versucht, es zu erstellen, wenn Sie die google_ml_integration-Erweiterung installieren. Wenn die Schemaerstellung fehlschlägt, verwenden Sie die Funktionen mit demselben Namen im google_ml-Schema.

Hinweise

Suchergebnisse sortieren

In der folgenden SQL-Abfrage wird gezeigt, wie Sie Ihre Suchergebnisse sortieren :

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 von Ihnen definierten Modellendpunkt.
SEARCH_STRING Suchstring, anhand dessen die Einträge sortiert oder bewertet werden.
DOCUMENTS Ein eindeutiger String, der den Datensatz identifiziert.

Beispiele

Wenn Sie Suchergebnisse mit dem registrierten Ranking-Endpunkt sortieren möchten, führen Sie die folgende Abfrage aus:

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

Die Antwort ist eine Tabelle, in der jedes Dokument und die Bewertung basierend auf der Relevanz für die Suchanfrage angezeigt wird.Unten sehen Sie eine Beispielantwort:

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

Angenommen, Sie haben eine AlloyDB-Datenbank mit einer Liste von Rezensionsbeschreibungen, die in Einbettungen umgewandelt werden. Im folgenden Codebeispiel wird gezeigt, wie Sie mit dem Ranking-Modell den Namen der Produkte mit der höchsten Bewertung basierend auf der semantischen Ähnlichkeit ihrer Rezensionsbeschreibungen zu einer Suchanfrage abrufen. Es wird davon ausgegangen, dass sowohl die text-embedding-005- als auch die semantic-ranker-512@002-Modellendpunkte registriert sind.

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;

Nächste Schritte