Abruf und Ranking

Auf dieser Seite wird erläutert, wie Sie die Reihenfolge der abgerufenen Antworten mithilfe der API neu anordnen.

Das erneute Ranking nach der Suche ist eine Methode, mit der die Relevanz der Suchergebnisse verbessert wird. Die Vertex AI RAG Engine bietet optionale Neubewertungsmechanismen, die die Relevanz der abgerufenen Ergebnisse bei Abfragen verbessern. Mithilfe von Rerankern wird die Relevanz von Chunks aus einer Abfrage bewertet und die Ergebnisse entsprechend neu angeordnet. Die neue Reihenfolge führt zu Antworten, die besser auf die Suchanfrage passen, oder kann in Prompts für die Modellinferenz einbezogen werden, um relevantere und genauere Antworten zu generieren.

Verfügbare Reranker

In diesem Abschnitt werden die verschiedenen Arten von Rerankern beschrieben.

LLM-Neubewertung

Der LLM-Neusortierer ist der Neusortierer, der mithilfe eines LLM die Relevanz von Blöcken für eine Suchanfrage bewertet und die Ergebnisse entsprechend neu anordnet. Dies führt zu geeigneteren Antworten oder verbesserten Prompts für die Modellinferenz.

Vertex AI-Rangdienst-Neubewerter

Der Rangdienst-Neubewerter basiert auf der Rang-API, die eine Liste von Dokumenten annimmt und diese Dokumente neu bewertet, 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, können Sie so genaue Bewertungen dafür erhalten, wie gut ein Dokument eine bestimmte Suchanfrage beantwortet.

Überlegungen bei der Auswahl eines Rerankers

Berücksichtigen Sie bei der Auswahl eines Rerankers Folgendes:

  • Die LLM- und Rangdienst-Neubewerterungen verwenden die Neusortierung, um die Relevanz der abgerufenen Kontexte zu verbessern. So kann das Modell bessere Antworten liefern.
  • Reranker führen zu einer Latenz, die mit der Anzahl der verarbeiteten Kontexte zunimmt.
  • Die Kosten für einen LLM-Reranker hängen von der Anzahl der verarbeiteten Tokens ab. Die Kosten für die Verwendung des Rank-Dienst-Rerankers sind jedoch pro Abfrage fix.

Reranker verwenden

In diesem Abschnitt werden die Voraussetzungen und Codebeispiele für die Verwendung von Rerankern vorgestellt.

Voraussetzungen für die Verwendung des LLM-Rerankers

Der LLM-Neubewerter unterstützt nur Gemini-Modelle, auf die zugegriffen werden kann, wenn die RAG API aktiviert ist. Eine Liste der unterstützten Modelle finden Sie unter Gemini-Modelle.

Relevante Kontexte mit der RAG API abrufen

In diesem Codebeispiel wird gezeigt, wie Sie mithilfe der RAG API relevante Kontexte abrufen.

REST

Ersetzen Sie die folgenden Variablen im Codebeispiel:

  • PROJECT_ID: Die ID Ihres Google Cloud Projekts.
  • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
  • RAG_CORPUS_RESOURCE: Der Name der RAG-Korpusressource. Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • TEXT: Der Abfragetext, um relevante Kontexte abzurufen.
  • MODEL_NAME: Der Name des Modells, das für die Neubewertung verwendet wird.
curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts" \
  -d '{
    "vertex_rag_store": {
      "rag_resources": {
          "rag_corpus": """RAG_CORPUS_RESOURCE"
        }
    },
    "query": {
      "text": "TEXT",
      "rag_retrieval_config": {
        "top_k": 10,
        "ranking": {
          "llm_ranker": {
            "model_name": "MODEL_NAME"
          }
        }
      }
    }
  }'

Python

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Python API.

Ersetzen Sie die folgenden Variablen im Codebeispiel:

  • PROJECT_ID: Die ID Ihres Google Cloud Projekts.
  • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
  • RAG_CORPUS_RESOURCE: Der Name der RAG-Korpusressource. Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • TEXT: Der Abfragetext, um relevante Kontexte abzurufen.
  • MODEL_NAME: Der Name des Modells, das für die Neubewertung verwendet wird.
from vertexai.preview import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/[PROJECT_ID]/locations/LOCATION/ragCorpora/[RAG_CORPUS_ID]"
MODEL_NAME= "MODEL_NAME"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")

rag_retrieval_config = rag.RagRetrievalConfig(
    top_k=10,
    ranking=rag.Ranking(
        llm_ranker=rag.LlmRanker(
            model_name=MODEL_NAME
        )
    )
)

response = rag.retrieval_query(
    rag_resources=[
        rag.RagResource(
            rag_corpus=CORPUS_NAME,
        )
    ],
    text="TEXT",
    rag_retrieval_config=rag_retrieval_config,
)
print(response)
# Example response:
# contexts {
#   contexts {
#     source_uri: "gs://your-bucket-name/file.txt"
#     text: "....
#   ....

Inhalte mit der RAG API generieren

REST

Wenn Sie Inhalte mit Gemini-Modellen generieren möchten, rufen Sie die Vertex AI GenerateContent API auf. Wenn Sie die RAG_CORPUS_RESOURCE in der Anfrage angeben, ruft das Modell automatisch Daten aus der Vertex AI Search ab.

Ersetzen Sie die folgenden Variablen im Beispielcode:

  • PROJECT_ID: Die ID Ihres Google Cloud Projekts.
  • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
  • MODEL_ID: LLM-Modell für die Inhaltsgenerierung. Beispiel: gemini-1.5-flash-002.
  • GENERATION_METHOD: LLM-Methode für die Inhaltsgenerierung. Optionen sind generateContent und streamGenerateContent.
  • INPUT_PROMPT: Der Text, der zur Inhaltsgenerierung an das LLM gesendet wird. Verwenden Sie einen Prompt, der für die Dokumente in der Vertex AI-Suche relevant ist.
  • RAG_CORPUS_RESOURCE: Der Name der RAG-Korpusressource.
    Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K: Optional: Die Anzahl der Top-Kontexte, die abgerufen werden sollen.
  • MODEL_NAME: Der Name des Modells, das für die Neubewertung verwendet wird.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD" \
-d '{
  "contents": {
    "role": "user",
    "parts": {
      "text": "INPUT_PROMPT"
    }
  },
  "tools": {
    "retrieval": {
      "disable_attribution": false,
      "vertex_rag_store": {
        "rag_resources": {
            "rag_corpus": "RAG_CORPUS_RESOURCE"
          },
        "rag_retrieval_config": {
          "top_k": 10,
          "ranking": {
            "llm_ranker": {
              "model_name": "MODEL_NAME"
            }
          }
        }
      }
    }
  }
}'

Python

Informationen zur Installation oder Aktualisierung des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Python API.

Ersetzen Sie die folgenden Variablen im Beispielcode:

  • PROJECT_ID: Die ID Ihres Google Cloud Projekts.
  • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
  • MODEL_ID: LLM-Modell für die Inhaltsgenerierung. Beispiel: gemini-1.5-flash-002.
  • GENERATION_METHOD: LLM-Methode für die Inhaltsgenerierung. Optionen sind generateContent und streamGenerateContent.
  • INPUT_PROMPT: Der Text, der zur Inhaltsgenerierung an das LLM gesendet wird. Verwenden Sie einen Prompt, der für die Dokumente in der Vertex AI-Suche relevant ist.
  • RAG_CORPUS_RESOURCE: Der Name der RAG-Korpusressource.
    Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K: Optional: Die Anzahl der Top-Kontexte, die abgerufen werden sollen.
  • MODEL_NAME: Der Name des Modells, das für die Neubewertung verwendet wird.
from vertexai.preview import rag
from vertexai.preview.generative_models import GenerativeModel, Tool
import vertexai

PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/{PROJECT_ID}/locations/LOCATION/ragCorpora/RAG_CORPUS_RESOURCE"
MODEL_NAME= "MODEL_NAME"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")

config = rag.RagRetrievalConfig(
    top_k=10,
    ranking=rag.Ranking(
        llm_ranker=rag.LlmRanker(
            model_name=MODEL_NAME
        )
    )
)

rag_retrieval_tool = Tool.from_retrieval(
    retrieval=rag.Retrieval(
        source=rag.VertexRagStore(
            rag_resources=[
                rag.RagResource(
                    rag_corpus=CORPUS_NAME,
                )
            ],
            rag_retrieval_config=config
        ),
    )
)

rag_model = GenerativeModel(
    model_name=MODEL_NAME, tools=[rag_retrieval_tool]
)
response = rag_model.generate_content("Why is the sky blue?")
print(response.text)
# Example response:
#   The sky appears blue due to a phenomenon called Rayleigh scattering.
#   Sunlight, which contains all colors of the rainbow, is scattered
#   by the tiny particles in the Earth's atmosphere....
#   ...

Voraussetzungen für den Vertex-Reranker

Wenn Sie den Vertex AI-Dienst zum Neubestimmen des Rankings verwenden möchten, muss die Discovery Engine API aktiviert sein. Alle unterstützten Modelle finden Sie im Dokument.

Relevante Kontexte mit der RAG API abrufen

Nachdem Sie Ihren RAG-Korpus erstellt haben, können relevante Kontexte über die RetrieveContexts API aus der Vertex AI Search abgerufen werden.

Diese Codebeispiele zeigen, wie Sie mit der API Kontexte aus Vertex AI Search abrufen.

REST

Ersetzen Sie die folgenden Variablen im Beispielcode:

  • PROJECT_ID: Die ID Ihres Google Cloud Projekts.
  • LOCATION: Die Region, in der Ihre Anfrage verarbeitet werden soll.
  • RAG_CORPUS_RESOURCE: Der Name der RAG-Korpusressource. Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • TEXT: Der Abfragetext, um relevante Kontexte abzurufen.
  • MODEL_NAME: Der Name des Modells, das für die Neubewertung verwendet wird.
curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts" \
  -d '{
    "vertex_rag_store": {
      "rag_resources": {
          "rag_corpus": "RAG_CORPUS_RESOURCE"
        }
    },
    "query": {
      "text": "TEXT",
      "rag_retrieval_config": {
        "top_k": 5,
        "ranking": {
          "rank_service": {
            "model_name": "MODEL_NAME"
          }
        }
      }
    }
  }'

Python

Informationen zur Installation oder Aktualisierung des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Python API.

Ersetzen Sie die folgenden Variablen im Beispielcode:

  • PROJECT_ID: Die ID Ihres Google Cloud Projekts.
  • LOCATION: Die Region, in der Ihre Anfrage verarbeitet werden soll.
  • RAG_CORPUS_RESOURCE: Der Name der RAG-Korpusressource.
    Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • TEXT: Der Abfragetext, um relevante Kontexte abzurufen.
  • MODEL_NAME: Der Name des Modells, das für die Neubewertung verwendet wird.
from vertexai.preview import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/[PROJECT_ID]/locations/LOCATION/ragCorpora/RAG_CORPUS_RESOURCE"
MODEL_NAME= "MODEL_NAME"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")

rag_retrieval_config = rag.RagRetrievalConfig(
    top_k=10,
    ranking=rag.Ranking(
        rank_service=rag.RankService(
            model_name=MODEL_NAME
        )
    )
)
response = rag.retrieval_query(
    rag_resources=[
        rag.RagResource(
            rag_corpus=CORPUS_NAME,
        )
    ],
    text="TEXT",
    rag_retrieval_config=rag_retrieval_config,
)
print(response)
# Example response:
# contexts {
#   contexts {
#     source_uri: "gs://your-bucket-name/file.txt"
#     text: "....
#   ....

Inhalte mit der RAG API generieren

REST

Wenn Sie Inhalte mit Gemini-Modellen generieren möchten, rufen Sie die Vertex AI GenerateContent API auf. Wenn Sie die RAG_CORPUS_RESOURCE in der Anfrage angeben, ruft das Modell automatisch Daten aus der Vertex AI Search ab.

Ersetzen Sie die folgenden Variablen im Beispielcode:

  • PROJECT_ID: Die ID Ihres Google Cloud Projekts.
  • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
  • MODEL_ID: LLM-Modell für die Inhaltsgenerierung. Beispiel: gemini-1.5-flash-002.
  • GENERATION_METHOD: LLM-Methode für die Inhaltsgenerierung. Zu den Optionen gehören generateContent und streamGenerateContent.
  • INPUT_PROMPT: Der Text, der zur Inhaltsgenerierung an das LLM gesendet wird. Verwenden Sie einen Prompt, der für die Dokumente in der Vertex AI-Suche relevant ist.
  • RAG_CORPUS_RESOURCE: Der Name der RAG-Korpusressource.
    Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K: Optional: Die Anzahl der Top-Kontexte, die abgerufen werden sollen.
  • MODEL_NAME: Der Name des Modells, das für die Neubewertung verwendet wird.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD" \
-d '{
  "contents": {
    "role": "user",
    "parts": {
      "text": "INPUT_PROMPT"
    }
  },
  "tools": {
    "retrieval": {
      "disable_attribution": false,
      "vertex_rag_store": {
        "rag_resources": {
            "rag_corpus": "RAG_CORPUS_RESOURCE"
          },
        "rag_retrieval_config": {
          "top_k": 10,
          "ranking": {
            "rank_service": {
              "model_name": "MODEL_NAME"
            }
          }
        }
      }
    }
  }
}'

Python

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Python API.

Ersetzen Sie die folgenden Variablen im Beispielcode:

  • PROJECT_ID: Die ID Ihres Google Cloud Projekts.
  • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
  • MODEL_ID: LLM-Modell für die Inhaltsgenerierung. Beispiel: gemini-1.5-flash-002.
  • GENERATION_METHOD: LLM-Methode für die Inhaltsgenerierung. Zu den Optionen gehören generateContent und streamGenerateContent.
  • INPUT_PROMPT: Der Text, der zur Inhaltsgenerierung an das LLM gesendet wird. Verwenden Sie einen Prompt, der für die Dokumente in der Vertex AI-Suche relevant ist.
  • RAG_CORPUS_RESOURCE: Der Name der RAG-Korpusressource.
    Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K: Optional: Die Anzahl der Top-Kontexte, die abgerufen werden sollen.
  • MODEL_NAME: Der Name des Modells, das für die Neubewertung verwendet wird.
from vertexai.preview import rag
from vertexai.preview.generative_models import GenerativeModel, Tool
import vertexai

PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/{PROJECT_ID}/locations/LOCATION/ragCorpora/RAG_CORPUS_RESOURCE"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")

config = rag.RagRetrievalConfig(
    top_k=10,
    ranking=rag.Ranking(
        rank_service=rag.RankService(
            model_name=MODEL_NAME
        )
    )
)

rag_retrieval_tool = Tool.from_retrieval(
    retrieval=rag.Retrieval(
        source=rag.VertexRagStore(
            rag_resources=[
                rag.RagResource(
                    rag_corpus=CORPUS_NAME,
                )
            ],
            rag_retrieval_config=config
        ),
    )
)

rag_model = GenerativeModel(
    model_name="MODEL_NAME", tools=[rag_retrieval_tool]
)
response = rag_model.generate_content("INPUT_PROMPT")
print(response.text)
# Example response:
#   The sky appears blue due to a phenomenon called Rayleigh scattering.
#   Sunlight, which contains all colors of the rainbow, is scattered
#   by the tiny particles in the Earth's atmosphere....
#   ...

Nächste Schritte