Vertex AI Search als Abruf-Backend mit der Vertex AI RAG Engine verwenden

Auf dieser Seite wird die Integration von Vertex AI Search in die Vertex AI RAG Engine vorgestellt.

Vertex AI Search bietet eine Lösung zum Abrufen und Verwalten von Daten in Ihren Vertex AI RAG-Anwendungen. Wenn Sie Vertex AI Search als Abruf-Backend verwenden, können Sie Leistung, Skalierbarkeit und Integrationsfreundlichkeit verbessern.

  • Verbesserte Leistung und Skalierbarkeit: Vertex AI Search ist für die Verarbeitung großer Datenmengen mit extrem niedriger Latenz konzipiert. Das führt zu schnelleren Reaktionszeiten und einer besseren Leistung Ihrer RAG-Anwendungen, insbesondere bei komplexen oder umfangreichen Wissensdatenbanken.

  • Vereinfachte Datenverwaltung: Importieren Sie Ihre Daten aus verschiedenen Quellen wie Websites, BigQuery-Datasets und Cloud Storage-Buckets, um den Prozess der Datenerfassung zu optimieren.

  • Nahtlose Integration: Vertex AI bietet eine integrierte Integration mit Vertex AI Search, sodass Sie Vertex AI Search als Corpus-Backend für Ihre RAG-Anwendung auswählen können. Das vereinfacht den Integrationsprozess und trägt dazu bei, dass die Komponenten optimal kompatibel sind.

  • Verbesserte LLM-Ausgabequalität: Mit den Abruffunktionen von Vertex AI Search können Sie dafür sorgen, dass Ihre RAG-Anwendung die relevantesten Informationen aus Ihrem Korpus abruft. Das führt zu genaueren und informativeren LLM-generierten Ausgaben.

Vertex AI Search vereint umfassenden Informationsabruf, Natural Language Processing und die neuesten Funktionen für die Verarbeitung von Large Language Models (LLMs). So können Nutzerabsichten verstanden und die relevantesten Ergebnisse für den Nutzer zurückgegeben werden.

Mit Vertex AI Search können Sie eine Suchanwendung in Google-Qualität mit von Ihnen verwalteten Daten erstellen.

So richten Sie Vertex AI Search ein:

  1. Suchdatenspeicher erstellen
  2. Suchanwendung erstellen

Vertex AI Search als Abruf-Backend für die Vertex AI RAG Engine verwenden

Nachdem Sie Vertex AI Search eingerichtet haben, gehen Sie so vor, um es als Abruf-Backend für die RAG-Anwendung festzulegen.

Vertex AI Search als Abruf-Backend festlegen, um einen RAG-Korpus zu erstellen

Diese Codebeispiele zeigen, wie Sie Vertex AI Search als Abruf-Backend für einen RAG-Korpus konfigurieren.

REST

So erstellen Sie einen RAG-Korpus über die Befehlszeile:

  1. RAG-Korpus erstellen

    Ersetzen Sie die folgenden Variablen, die im Codebeispiel verwendet werden:

    • PROJECT_ID: Die ID Ihres Google Cloud -Projekts.
    • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
    • DISPLAY_NAME: Der Anzeigename des RAG-Korpus, den Sie erstellen möchten.
    • ENGINE_NAME: Der vollständige Ressourcenname der Vertex AI Search-Engine oder des Vertex AI Search-Datenspeichers.
    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora" \
    -d '{
      "display_name" : "DISPLAY_NAME",
      "vertex_ai_search_config" : {
        "serving_config": "ENGINE_NAME/servingConfigs/default_search"
      }
    }'
    
  2. Fortschritt im Blick behalten

    Ersetzen Sie die folgenden Variablen, die im Codebeispiel verwendet werden:

    • PROJECT_ID: Die ID Ihres Google Cloud -Projekts.
    • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
    • OPERATION_ID: Die ID des Vorgangs zum Erstellen des RAG-Korpus.
    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"
    

Python

Bevor Sie dieses Beispiel anwenden, folgen Sie den Python-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Python API.

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


from vertexai import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# vertex_ai_search_engine_name = "projects/{PROJECT_ID}/locations/{LOCATION}/collections/default_collection/engines/{ENGINE_ID}"
# display_name = "test_corpus"
# description = "Corpus Description"

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

# Configure Search
vertex_ai_search_config = rag.VertexAiSearchConfig(
    serving_config=f"{vertex_ai_search_engine_name}/servingConfigs/default_search",
)

corpus = rag.create_corpus(
    display_name=display_name,
    description=description,
    vertex_ai_search_config=vertex_ai_search_config,
)
print(corpus)
# Example response:
# RagCorpus(name='projects/1234567890/locations/us-central1/ragCorpora/1234567890',
# display_name='test_corpus', description='Corpus Description'.
# ...

Kontexte mit der RAG API abrufen

Nach der Erstellung des RAG-Korpus können relevante Kontexte über die RetrieveContexts API aus Vertex AI Search abgerufen werden.

REST

Dieses Codebeispiel zeigt, wie Sie Kontexte mit REST abrufen.

Ersetzen Sie die folgenden Variablen, die im Codebeispiel verwendet werden:

  • 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.
curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts" \
  -d '{
    "vertex_rag_store": {
      "rag_resources": {
        "rag_corpus": "RAG_CORPUS_RESOURCE"
      }
    },
    "query": {
      "text": "TEXT"
    }
  }'

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 Python-API-Referenzdokumentation.


from vertexai import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# corpus_name = "projects/[PROJECT_ID]/locations/us-central1/ragCorpora/[rag_corpus_id]"

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

response = rag.retrieval_query(
    rag_resources=[
        rag.RagResource(
            rag_corpus=corpus_name,
            # Optional: supply IDs from `rag.list_files()`.
            # rag_file_ids=["rag-file-1", "rag-file-2", ...],
        )
    ],
    text="Hello World!",
    rag_retrieval_config=rag.RagRetrievalConfig(
        top_k=10,
        filter=rag.utils.resources.Filter(vector_distance_threshold=0.5),
    ),
)
print(response)
# Example response:
# contexts {
#   contexts {
#     source_uri: "gs://your-bucket-name/file.txt"
#     text: "....
#   ....

Inhalte mit der Vertex AI Gemini API generieren

REST

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

Ersetzen Sie die folgenden Variablen, die im Beispielcode verwendet werden:

  • 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-2.0-flash.
  • GENERATION_METHOD: LLM-Methode zum Generieren von Inhalten. Beispiel: generateContent, streamGenerateContent.
  • INPUT_PROMPT: Der Text, der zur Inhaltsgenerierung an das LLM gesendet wird. Versuchen Sie, einen Prompt zu verwenden, der für die Dokumente in Vertex AI Search 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.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://LOCATION-aiplatform.googleapis.com/v1/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"
              },
            "similarity_top_k": SIMILARITY_TOP_K
          }
        }
      }
    }'
    

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 Python-API-Referenzdokumentation.


from vertexai import rag
from vertexai.generative_models import GenerativeModel, Tool
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# corpus_name = "projects/{PROJECT_ID}/locations/us-central1/ragCorpora/{rag_corpus_id}"

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

rag_retrieval_tool = Tool.from_retrieval(
    retrieval=rag.Retrieval(
        source=rag.VertexRagStore(
            rag_resources=[
                rag.RagResource(
                    rag_corpus=corpus_name,
                    # Optional: supply IDs from `rag.list_files()`.
                    # rag_file_ids=["rag-file-1", "rag-file-2", ...],
                )
            ],
            rag_retrieval_config=rag.RagRetrievalConfig(
                top_k=10,
                filter=rag.utils.resources.Filter(vector_distance_threshold=0.5),
            ),
        ),
    )
)

rag_model = GenerativeModel(
    model_name="gemini-2.0-flash-001", 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....
#   ...

Nächste Schritte