Agent Retrieval (ehemals Vektorsuche 2.0) bietet VertexRanker für das semantische Ranking, das von der Ranking API unterstützt wird.
Nachdem Agent Retrieval Kandidatenergebnisse abgerufen und zusammengeführt hat (mithilfe von Reciprocal Rank Fusion (RRF)), bewertet VertexRanker die zusammengeführten Kandidaten anhand Ihrer Suchanfrage in natürlicher Sprache mit einem speziellen semantischen Modell neu.
Dadurch wird die Relevanz der Top-k-Ergebnisse verbessert, insbesondere bei Suchanfragen, bei denen die Suche allein keine Nuancen berücksichtigt. Das Ranking erfolgt serverseitig mit Aufrufen von BatchSearchDataObjects. Es sind keine zusätzlichen clientseitigen Verbindungen oder zusätzlichen Roundtrips erforderlich.
VertexRanker
VertexRanker ist als Reranker für das Feld combine.ranker des Objekts BatchSearchDataObjectsRequest konfiguriert. Sie müssen einen primären Ranker konfigurieren (nur RRF wird unterstützt). Der Reranker wird nach dem RRF-Zusammenführungsschritt ausgeführt und ersetzt die Ausgabe durch die semantisch neu bewertete Liste.
In der folgenden Tabelle sind die Felder für die Ranker-Konfiguration aufgeführt.
| Feld | Erforderlich | Beschreibung |
|---|---|---|
combine.ranker.rrf.weights |
Ja | Die Gewichtungen für die RRF-Zusammenführung der zugrunde liegenden Suchergebnisse. |
combine.ranker.vertex_ranker.model |
Ja | Der Name des Ranking-Modells. Unterstützte Werte: semantic-ranker-fast@latest, semantic-ranker-default@latest, semantic-ranker-fast-004, semantic-ranker-default-004. Weitere Informationen zu den einzelnen Modellen finden Sie unter Ranking API-Modelle. |
combine.ranker.vertex_ranker.top_n |
Ja | Die maximale Anzahl von Kandidaten aus der zusammengeführten Liste, die an den Ranker gesendet werden sollen. Gültige Werte sind 1 bis 1000. |
combine.ranker.vertex_ranker.text_record_spec.query |
Ja | Die Suchanfrage in natürlicher Sprache, die vom Ranker zum Bewerten von Datensätzen verwendet wird. |
combine.ranker.vertex_ranker.text_record_spec.title_template |
Ja | Der Vorlagenstring, z. B. {title}, der angibt, wie der Titel für jeden Datensatz extrahiert (erstellt) werden soll. Verwenden Sie Punktpfade, um Datenfelder anzugeben. |
combine.ranker.vertex_ranker.text_record_spec.content_template |
Ja | Der Vorlagenstring, z. B. {body.text}, der angibt, wie der Hauptinhalt für jeden Datensatz extrahiert (erstellt) werden soll. Verwenden Sie Punktpfade, um Datenfelder anzugeben. |
combine.top_k |
Optional | Die endgültige Anzahl der Ergebnisse, die nach dem Ranking zurückgegeben werden sollen. Dieser Wert muss kleiner oder gleich vertex_ranker.top_n und kleiner oder gleich 1000 sein. |
Das folgende Beispiel zeigt den Text einer Anfrage.
{
"searches": [
{ "semantic_search": { "search_text": "running shoes", "search_field": "embedding", "task_type": "RETRIEVAL_QUERY", "top_k": 50 } },
{ "text_search": { "search_text": "running shoes", "data_field_names": ["title"], "top_k": 50 } }
],
"combine": {
"top_k": 10,
"ranker": {
"rrf": { "weights": [1.0, 1.0] },
"vertex_ranker": {
"model": "semantic-ranker-fast@latest",
"top_n": 50,
"text_record_spec": {
"query": "running shoes",
"title_template": "{title}",
"content_template": "{body.text}"
}
}
}
}
}
Vorlagen verwenden Punktpfade zu Datenfeldern von Datenobjekten, z. B. {title} oder {nested.field}. Diese Felder müssen im Collections-Schema vorhanden sein. Andernfalls wird die Anfrage bei der Validierung abgelehnt. Wenn in einem Datenobjekt das angegebene Feld fehlt, ruft der Server den vollständigen Datensatz transparent aus dem Speicher ab, damit die Vorlage trotzdem ausgefüllt werden kann.
Kontingent und Preise
VertexRanker in Agent Retrieval verwendet ein kostenloses Kontingent mit nutzungsabhängiger Abrechnung bei Überschreitung. Jedes Projekt erhält ein kostenloses Kontingent für die Ranking-Nutzung pro 30-Tage-Zeitraum. Für die Nutzung innerhalb dieses Kontingents fallen keine Kosten an. Für die Nutzung über dieses Kontingent hinaus gelten die Standardpreise der Ranking API für das Nutzerprojekt.
In der folgenden Tabelle sind die Kontingentwerte aufgeführt.
| Element | Wert |
|---|---|
| Kostenloses Kontingent | 80.000 Ranking-Einheiten pro Nutzerprojekt und 30-Tage-Zeitraum. |
| Überschreitung | Wird zum Standardpreis der Ranking API für das Nutzerprojekt in Rechnung gestellt. |
| Maximale Anzahl von Datensätzen pro Ranking-Aufruf | 1000 (top_n muss im Bereich [1, 1000] liegen und top_k <= top_n). |
Wenn Sie das kostenlose Kontingent erreichen, schlagen Ihre Anfragen nicht fehl. Nachdem das Kontingent von 80.000 Ranking-Einheiten aufgebraucht ist, wird die weitere Nutzung von VertexRanker weiterhin erfolgreich ausgeführt und als Überschreitung in Rechnung gestellt. Das Kontingent wird 30 Tage nach der ersten Nutzung zurückgesetzt.
Ranking-Einheiten werden anhand der Anzahl der an den Ranker gesendeten Datensätze und der Größe der Titel- und Inhaltsvorlagen berechnet. Dabei wird dieselbe Abrechnung wie bei der eigenständigen Ranking API verwendet. Ausführliche Informationen finden Sie unter Preise für die Ranking API.
Bevor Sie VertexRanker verwenden können, muss die Discovery Engine im Nutzerprojekt aktiviert sein. Weitere Informationen finden Sie unter Fehlerbedingungen.
Fehlerbehandlung und Warnungen
VertexRanker ist ein Reranker, bei dem das Best-Effort-Prinzip gilt. Wenn der Ranking-Aufruf fehlschlägt, wird der BatchSearchDataObjects-RPC trotzdem erfolgreich ausgeführt und gibt die RRF-zusammengeführten Ergebnisse zurück, die auf top_k gekürzt wurden. Der Fehler wird im Feld search_response_metadata.warnings in der Antwort gemeldet. Der vollständige Statuscode der Ranking API bleibt erhalten. Der Warnungscode für unerwartete Status ist
UNAVAILABLE mit der Warnmeldung:
"Reranking is temporarily unavailable. Returning fused (RRF) results without
semantic reranking."
Fehlerbedingungen
Der gesamte BatchSearchDataObjects-RPC schlägt mit FAILED_PRECONDITION fehl (kein Fallback auf RRF) in den folgenden Fällen.
- Discovery Engine API nicht aktiviert : Die Ranking API gibt
FAILED_PRECONDITIONmit der MeldungDiscovery Engine API is not enabled for the consumer project /<N/>. Please enable the API and try again."zurück. Lösung: Aktivieren Sie die Discovery Engine API im Nutzerprojekt.
Der Kunde muss die Discovery Engine für das Nutzerprojekt aktivieren, damit das Ranking erfolgen kann.
In der folgenden Tabelle sind Warnungscodes, die typischen Ursachen für die Warnungen und die Meldung zur Erklärung der Warnung aufgeführt.
| Warnungscode | Typische Ursache | Warnmeldung |
|---|---|---|
RESOURCE_EXHAUSTED |
Ein Kontingent der Ranking API für das Nutzerprojekt wurde überschritten. Hinweis: Wenn Sie das Kontingent von 80.000 Ranking-Einheiten überschreiten,wird diese Warnung nicht ausgelöst. Stattdessen wird die Überschreitung in Rechnung gestellt. | <Quota exceeded message>; RankService.Rank call failed for consumer project <N> with request query: <query> and <model>: semantic-ranker-fast@latest number of records: <N> |
DEADLINE_EXCEEDED |
Ranker.Rank wurde nicht innerhalb der Frist der Anfrage abgeschlossen. |
<deadline-exceeded message from Ranker.Rank>; RankService.Rank call failed for consumer project <N> with request query: <query> and <model>: semantic-ranker-fast@latest number of records: <N> |
UNAVAILABLE |
Ranker.Rank hat entweder UNAVAILABLE zurückgegeben oder einen nicht beibehaltenen Code (z. B. INTERNAL), der auf UNAVAILABLE reduziert wird. |
Wenn der zugrunde liegende Code UNAVAILABLE ist: "RankService.Rank call failed for consumer project... Andernfalls: "Reranking is temporarily unavailable. Returning fused (RRF) results without semantic reranking." |
FAILED_PRECONDITION |
Alle von der Ranking API zurückgegebenen FAILED_PRECONDITION. |
RankService.Rank call failed for consumer project <N> with request query: <query> and <model>: semantic-ranker-fast@latest number of records: <N> |
CANCELLED |
Der Aufrufer hat den BatchSearchDataObjects-RPC abgebrochen, bevor das Ranking abgeschlossen war. |
<cancellation message from the cancelled RankService.Rank RPC>; RankService.Rank call failed for consumer project <N> with request query: <query> and <model>: semantic-ranker-fast@latest number of records: <N> |