Qualität der Suche und RAG mit Ranking API verbessern

Im Rahmen von Retrieval Augmented Generation (RAG) in AI Applications können Sie eine Reihe von Dokumenten anhand einer Anfrage einstufen.

Die Ranking API nimmt eine Liste von Dokumenten entgegen und ordnet sie neu, je nachdem, wie relevant die Dokumente für eine Anfrage sind. Im Gegensatz zu Einbettungen, bei denen nur die semantische Ähnlichkeit zwischen einem Dokument und einer Anfrage berücksichtigt wird, können Sie mit der Ranking API genaue Werte dafür erhalten, wie gut ein Dokument eine bestimmte Anfrage beantwortet. Mit der Ranking API lässt sich die Qualität der Suchergebnisse verbessern, nachdem eine erste Gruppe von Kandidatendokumenten abgerufen wurde.

Die Ranking API ist zustandslos. Daher müssen Sie keine Dokumente indexieren, bevor Sie die API aufrufen. Sie müssen nur die Anfrage und die Dokumente übergeben. Daher eignet sich die API gut für das Neusortieren von Dokumenten aus Vector Search und anderen Suchlösungen.

Auf dieser Seite wird beschrieben, wie Sie mit der Ranking API eine Reihe von Dokumenten anhand einer Anfrage einstufen.

Anwendungsfälle

Der primäre Anwendungsfall der Ranking API besteht darin, die Qualität der Suchergebnisse zu verbessern.

Die Ranking API kann jedoch in jedem Szenario nützlich sein, in dem Sie herausfinden müssen, welche Inhalte für die Anfrage eines Nutzers am relevantesten sind. Die Ranking API kann Ihnen beispielsweise bei Folgendem helfen:

  • Die richtigen Inhalte für die Fundierung eines LLM finden

  • Relevanz einer vorhandenen Suchfunktion verbessern

  • Relevante Abschnitte eines Dokuments identifizieren

Im folgenden Ablauf wird beschrieben, wie Sie die Ranking API verwenden können, um die Qualität der Ergebnisse für in Chunks aufgeteilte Dokumente zu verbessern:

  1. Verwenden Sie die Document AI Layout Parser API, um eine Reihe von Dokumenten in Blöcke aufzuteilen.

  2. Verwenden Sie eine Einbettungs-API, um Einbettungen für die einzelnen Chunks zu erstellen.

  3. Laden Sie die Einbettungen in die Vektorsuche oder eine andere Suchlösung.

  4. Suchindex abfragen und die relevantesten Chunks abrufen

  5. Ordnen Sie die relevanten Chunks mit der Ranking API neu.

Eingabedaten

Für die Ranking API sind die folgenden Eingaben erforderlich:

  • Die Abfrage, für die Sie die Datensätze einstufen.

    Beispiel:

    "query": "Why is the sky blue?"
    
  • Eine Reihe von Datensätzen, die für die Anfrage relevant sind. Die Datensätze werden als Array von Objekten bereitgestellt. Jeder Datensatz kann eine eindeutige ID, einen Titel und den Inhalt des Dokuments enthalten. Jeder Datensatz muss einen Titel, Inhalt oder beides enthalten. Die maximal unterstützten Tokens pro Datensatz hängen von der verwendeten Modellversion ab. Beispielsweise unterstützen Modelle bis zur Version 003 512 Tokens, während Version 004 1.024 Tokens unterstützt. Wenn die kombinierte Länge von Titel und Inhalt das Tokenlimit des Modells überschreitet, wird der zusätzliche Inhalt abgeschnitten. Sie können bis zu 200 Datensätze pro Anfrage einfügen.

    Ein Datensatz-Array sieht beispielsweise so aus. In der Realität wären viel mehr Datensätze im Array enthalten und der Inhalt wäre viel länger:

    "records": [
       {
           "id": "1",
           "title": "The Color of the Sky: A Poem",
           "content": "A canvas stretched across the day,\nWhere sunlight learns to dance and play.\nBlue, a hue of scattered light,\nA gentle whisper, soft and bright."
       },
       {
           "id": "2",
           "title": "The Science of a Blue Sky",
           "content": "The sky appears blue due to a phenomenon called Rayleigh scattering. Sunlight is comprised of all the colors of the rainbow. Blue light has shorter wavelengths than other colors, and is thus scattered more easily."
       }
    ]
    
  • Optional: Die maximale Anzahl der Datensätze, die von der Ranking API zurückgegeben werden sollen. Standardmäßig werden alle Datensätze zurückgegeben. Sie können jedoch das FeldtopNverwenden, um weniger Datensätze zurückzugeben. Alle Datensätze werden unabhängig vom festgelegten Wert sortiert.

    Damit werden beispielsweise die 10 besten Datensätze zurückgegeben:

    "topN": 10,
    
  • Optional: Eine Einstellung, die angibt, ob nur die ID des von der API zurückgegebenen Datensatzes oder auch der Datensatzname und -inhalt zurückgegeben werden sollen. Standardmäßig wird der vollständige Datensatz zurückgegeben. Der Hauptgrund für die Festlegung dieses Parameters ist, dass Sie die Größe der Antwortnutzlast reduzieren möchten.

    Wenn Sie beispielsweise true festlegen, wird nur die Datensatz-ID zurückgegeben, nicht der Titel oder Inhalt:

    "ignoreRecordDetailsInResponse": true,
    
  • Optional: Der Modellname. Gibt das Modell an, das zum Ranking der Dokumente verwendet werden soll. Wenn kein Modell angegeben ist, wird semantic-ranker-default@latest verwendet, das automatisch auf das neueste verfügbare Modell verweist. Wenn Sie auf ein bestimmtes Modell verweisen möchten, geben Sie einen der Modellnamen an, die unter Unterstützte Modelle aufgeführt sind, z. B. semantic-ranker-512-003.

    Im folgenden Beispiel ist model auf semantic-ranker-default@latest festgelegt. Das bedeutet, dass in der Ranking API immer das neueste verfügbare Modell verwendet wird.

    "model": "semantic-ranker-default@latest"
    

Ausgabedaten

Die Ranking API gibt eine Rangliste von Datensätzen mit den folgenden Ausgaben zurück:

  • Bewertung: Ein Gleitkommawert zwischen 0 und 1, der die Relevanz des Datensatzes angibt.

  • ID: Die eindeutige ID des Datensatzes.

  • Falls angefordert, das vollständige Objekt: ID, Titel und Inhalt.

    Beispiel:

{
    "records": [
        {
            "id": "2",
            "score": 0.98,
            "title": "The Science of a Blue Sky",
            "content": "The sky appears blue due to a phenomenon called Rayleigh scattering. Sunlight is comprised of all the colors of the rainbow. Blue light has shorter wavelengths than other colors, and is thus scattered more easily."
        },
        {
            "id": "1",
            "score": 0.64,
            "title": "The Color of the Sky: A Poem",
            "content": "A canvas stretched across the day,\nWhere sunlight learns to dance and play.\nBlue, a hue of scattered light,\nA gentle whisper, soft and bright."
        }
    ]
}

Eine Gruppe von Datensätzen anhand einer Anfrage einstufen (oder neu einstufen)

In der Regel stellen Sie der Ranking API eine Anfrage und eine Reihe von Datensätzen zur Verfügung, die für diese Anfrage relevant sind und bereits mit einer anderen Methode wie einer Keyword-Suche oder einer Vektorsuche gerankt wurden. Anschließend verwenden Sie die Ranking API, um die Qualität des Rankings zu verbessern und eine Punktzahl zu ermitteln, die die Relevanz der einzelnen Datensätze für die Anfrage angibt.

  1. Abfrage und resultierende Datensätze abrufen. Jeder Datensatz muss eine ID und entweder einen Titel, Inhalt oder beides haben.

    Die maximale Anzahl der unterstützten Tokens pro Datensatz hängt von der Modellversion ab. Modelle bis zur Version 003, z. B. semantic-ranker-512-003, unterstützen 512 Tokens pro Datensatz. Ab Version 004 wird dieses Limit auf 1.024 Tokens erhöht. Wenn die kombinierte Länge von Titel und Inhalt das Tokenlimit des Modells überschreitet, wird der zusätzliche Inhalt abgeschnitten.

  2. Rufen Sie die Methode rankingConfigs.rank mit dem folgenden Code auf:

REST

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
"https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/rankingConfigs/default_ranking_config:rank" \
-d '{
"model": "semantic-ranker-default@latest",
"query": "QUERY",
"records": [
    {
        "id": "RECORD_ID_1",
        "title": "TITLE_1",
        "content": "CONTENT_1"
    },
    {
        "id": "RECORD_ID_2",
        "title": "TITLE_2",
        "content": "CONTENT_2"
    },
    {
        "id": "RECORD_ID_3",
        "title": "TITLE_3",
        "content": "CONTENT_3"
    }
]
}'

Ersetzen Sie Folgendes:

  • PROJECT_ID: die ID Ihres Google Cloud Projekts.
  • QUERY: Die Abfrage, anhand derer die Datensätze gerankt und bewertet werden.
  • RECORD_ID_n: Ein eindeutiger String, der den Datensatz identifiziert.
  • TITLE_n: Der Titel des Datensatzes.
  • CONTENT_n: Der Inhalt des Datensatzes.

Allgemeine Informationen zu dieser Methode finden Sie unter rankingConfigs.rank.

Klicken Sie hier, um ein Beispiel für einen cURL-Befehl und eine Antwort zu sehen.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: my-project-123" \
    "https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/rankingConfigs/default_ranking_config:rank" \
    -d '{
        "model": "semantic-ranker-default@latest",
        "query": "what is Google gemini?",
        "records": [
            {
                "id": "1",
                "title": "Gemini",
                "content": "The Gemini zodiac symbol often depicts two figures standing side-by-side."
            },
            {
                "id": "2",
                "title": "Gemini",
                "content": "Gemini is a cutting edge large language model created by Google."
            },
            {
                "id": "3",
                "title": "Gemini Constellation",
                "content": "Gemini is a constellation that can be seen in the night sky."
            }
        ]
    }'
    
{
    "records": [
        {
            "id": "2",
            "title": "Gemini",
            "content": "Gemini is a cutting edge large language model created by Google.",
            "score": 0.97
        },
        {
            "id": "3",
            "title": "Gemini Constellation",
            "content": "Gemini is a constellation that can be seen in the night sky.",
            "score": 0.18
        },
        {
            "id": "1",
            "title": "Gemini",
            "content": "The Gemini zodiac symbol often depicts two figures standing side-by-side.",
            "score": 0.05
        }
    ]
}

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur AI Applications Python API.

Richten Sie zur Authentifizierung bei AI Applications Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.cloud import discoveryengine_v1 as discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"

client = discoveryengine.RankServiceClient()

# The full resource name of the ranking config.
# Format: projects/{project_id}/locations/{location}/rankingConfigs/default_ranking_config
ranking_config = client.ranking_config_path(
    project=project_id,
    location="global",
    ranking_config="default_ranking_config",
)
request = discoveryengine.RankRequest(
    ranking_config=ranking_config,
    model="semantic-ranker-default@latest",
    top_n=10,
    query="What is Google Gemini?",
    records=[
        discoveryengine.RankingRecord(
            id="1",
            title="Gemini",
            content="The Gemini zodiac symbol often depicts two figures standing side-by-side.",
        ),
        discoveryengine.RankingRecord(
            id="2",
            title="Gemini",
            content="Gemini is a cutting edge large language model created by Google.",
        ),
        discoveryengine.RankingRecord(
            id="3",
            title="Gemini Constellation",
            content="Gemini is a constellation that can be seen in the night sky.",
        ),
    ],
)

response = client.rank(request=request)

# Handle the response
print(response)

Unterstützte Modelle

Die folgenden Modelle sind verfügbar.

Modellname Neuestes Modell (semantic-ranker-default@latest) Eingabe Verlaufszeitraum Releasedatum Einstellungsdatum
semantic-ranker-default-004 Ja Text (25 Sprachen) 1.024 09. April 2025 Noch nicht bekannt
semantic-ranker-fast-004 Nein Text (25 Sprachen) 1.024 09. April 2025 Noch nicht bekannt
semantic-ranker-default-003 Nein Text (25 Sprachen) 512 10. September 2024 Noch nicht bekannt
semantic-ranker-default-002 Nein Text (nur auf Englisch) 512 3. Juni 2024 Noch nicht bekannt

Nächste Schritte

Hier erfahren Sie, wie Sie die Ranking-Methode mit anderen RAG-APIs verwenden, um fundierte Antworten aus unstrukturierten Daten zu generieren.