Im Rahmen der Retrieval Augmented Generation (RAG) in Vertex AI Agent Builder können Sie eine Reihe von Dokumenten anhand einer Suchanfrage sortieren.
Die Ranking API nimmt eine Liste von Dokumenten und sortiert diese neu, je nachdem, wie relevant sie für eine Suchanfrage sind. Im Vergleich zu Einbettungen, bei denen nur die semantische Ähnlichkeit eines Dokuments und einer Suchanfrage berücksichtigt wird, kann die Ranking API Ihnen genaue Bewertungen dazu liefern, inwiefern ein Dokument eine bestimmte Suchanfrage beantwortet. Mit der Ranking API können Sie die Qualität der Suchergebnisse verbessern, nachdem Sie eine erste Gruppe von Kandidatendokumenten abgerufen haben.
Die Ranking API ist zustandslos. Dokumente müssen also nicht indexiert werden, bevor die API aufgerufen wird. Sie müssen lediglich die Abfrage und die Dokumente übergeben. Das macht die API gut geeignet, um Dokumente aus der Vector Search und anderen Suchlösungen neu zu ranken.
Auf dieser Seite wird beschrieben, wie Sie mit der Ranking API eine Reihe von Dokumenten anhand einer Suchanfrage sortieren.
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 Fall hilfreich sein, wenn Sie herausfinden möchten, welche Inhalte für die Suchanfrage eines Nutzers am relevantesten sind. Die Ranking API kann Ihnen beispielsweise bei Folgendem helfen:
Die richtigen Inhalte für die LLM-Grundlagen finden
Relevanz einer bestehenden Suche 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 gechunkte Dokumente zu verbessern:
Verwenden Sie die Document AI Layout Parser API, um eine Reihe von Dokumenten in Blöcke aufzuteilen.
Verwenden Sie eine Einbettungs-API, um für jeden der Chunks Einbettungen zu erstellen.
Laden Sie die Einbettungen in die Vektorsuche oder eine andere Suchlösung.
Suchindex abfragen und die relevantesten Chunks abrufen
Die relevanten Segmente mit der Ranking API neu sortieren
Eingabedaten
Für die Ranking API sind die folgenden Eingaben erforderlich:
Die Abfrage, für die Sie die Datensätze sortieren.
Beispiel:
"query": "Why is the sky blue?"
Eine Reihe von Einträgen, die für die Abfrage relevant sind. Die Einträge werden als Array von Objekten bereitgestellt. Jeder Datensatz kann eine eindeutige ID, einen Titel und den Inhalt des Dokuments enthalten. Geben Sie für jeden Eintrag entweder einen Titel, einen Inhalt oder beides an. Wenn der Titel und der Inhalt zusammen mehr als 512 Tokens lang sind, wird der zusätzliche Inhalt abgeschnitten. Sie können bis zu 200 Einträge pro Anfrage angeben.
Ein Datensatz-Array sieht beispielsweise so aus: In der Realität würden viele weitere Einträge im Array enthalten sein 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 von Einträgen, die die Ranking API zurückgeben soll. Standardmäßig werden alle Einträge zurückgegeben. Mit dem Feld
topN
können Sie jedoch weniger Einträge zurückgeben. Alle Einträge werden unabhängig vom festgelegten Wert sortiert.So werden beispielsweise die 10 höchstbewerteten Einträge zurückgegeben:
"topN": 10,
Optional: Eine Einstellung, die angibt, ob nur die ID des Datensatzes von der API zurückgegeben werden soll oder auch der Titel und der Inhalt des Datensatzes. Standardmäßig wird der vollständige Datensatz zurückgegeben. Sie sollten diese Option vor allem dann festlegen, wenn 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 der Inhalt:"ignoreRecordDetailsInResponse": true,
Optional: Der Modellname. Hier wird das Modell angegeben, das für das Ranking der Dokumente verwendet werden soll. Ist kein Modell angegeben, wird
semantic-ranker-512@latest
verwendet, was 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-002
.Im folgenden Beispiel ist
model
aufsemantic-ranker-512@latest
festgelegt. Das bedeutet, dass in der Ranking API immer das neueste verfügbare Modell verwendet wird."model": "semantic-ranker-512@latest"
Ausgabedaten
Die Ranking API gibt eine Rangliste von Einträgen mit den folgenden Ergebnissen zurück:
„Score“: Ein Gleitkommawert zwischen 0 und 1, der die Relevanz des Eintrags angibt.
ID: Die eindeutige ID des Datensatzes.
Auf Anfrage 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."
}
]
}
Datensätze anhand einer Abfrage sortieren (oder neu sortieren)
Normalerweise stellen Sie der Ranking API eine Suchanfrage und eine Reihe von Einträgen zur Verfügung, die für diese Suchanfrage relevant sind und bereits mit einer anderen Methode wie einer Keyword- oder Vektorsuche sortiert wurden. Anschließend verwenden Sie die Ranking API, um die Qualität des Rankings zu verbessern und einen Wert zu ermitteln, der die Relevanz der einzelnen Einträge für die Suchanfrage angibt.
Abfrage und resultierende Einträge abrufen Achten Sie darauf, dass jeder Datensatz eine ID und entweder einen Titel, Inhalt oder beides hat.
Das Modell unterstützt bis zu 512 Tokens pro Datensatz. Wenn die kombinierte Länge von Titel und Inhalt mehr als 512 Tokens beträgt, wird der zusätzliche Inhalt abgeschnitten.
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-512@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 Einträge sortiert und bewertet werden.RECORD_ID_n
: Ein eindeutiger String, der den Datensatz identifiziert.TITLE_n
: Der Titel des Eintrags.CONTENT_n
: den Inhalt des Eintrags.
Allgemeine Informationen zu dieser Methode finden Sie unter rankingConfigs.rank
.
Klicken Sie hier für ein Beispiel für einen cURL-Befehl und eine Antwort.
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-512@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 Vertex AI Agent Builder Python API.
Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Unterstützte Modelle
Die folgenden Modelle sind verfügbar.
Modellname | Neuestes Modell (semantic-ranker-512@latest ) |
Eingabe | Verlaufszeitraum | Releasedatum | Einstellungsdatum |
---|---|---|---|---|---|
semantic-ranker-512-003 |
Ja | Text (25 Sprachen) | 512 | 10. September 2024 | Noch nicht bekannt |
semantic-ranker-512-002 |
Nein | Text (nur 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.