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

Auf dieser Seite wird die Einbindung von Vertex AI Search in die Vertex AI RAG Engine beschrieben.

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.

  • Erhöhte Leistung und Skalierbarkeit: Die Vertex AI Search ist für die Verarbeitung großer Datenmengen mit außergewöhnlich niedriger Latenz konzipiert. Dies führt zu kürzeren Reaktionszeiten und einer verbesserten Leistung Ihrer RAG-Anwendungen, insbesondere bei komplexen oder umfangreichen Wissensbasen.

  • Einfachere Datenverwaltung: Sie können Daten aus verschiedenen Quellen wie Websites, BigQuery-Datasets und Cloud Storage-Buckets importieren, um den Dateneinnahmeprozess zu optimieren.

  • Nahtlose Integration: Vertex AI bietet eine integrierte Integration mit Vertex AI Search, mit der Sie Vertex AI Search als Korpus-Backend für Ihre RAG-Anwendung auswählen können. Das vereinfacht den Integrationsprozess und trägt zu einer optimalen Kompatibilität zwischen den Komponenten bei.

  • 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 präziseren und informativeren LLM-generierten Ergebnissen.

Vertex AI Search vereint die Leistungsfähigkeit von umfassenden Informationsabrufen, Natural Language Processing und den neuesten Funktionen der Verarbeitung von Large Language Models (LLMs), um Nutzerabsichten zu verstehen und die relevantesten Ergebnisse für die Nutzer zurückzugeben.

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

So richten Sie eine Vertex AI Search ein:

  1. Erstellen Sie einen Suchdatenspeicher.
  2. Erstellen Sie eine Suchanwendung.

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

Nachdem Vertex AI Search eingerichtet ist, 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

In diesen Codebeispielen wird gezeigt, wie Sie Vertex AI Search als Abruf-Backend für einen RAG-Korpus konfigurieren.

REST

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

  1. RAG-Korpus erstellen

    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.
    • DISPLAY_NAME: Der Anzeigename des RAG-Corpus, das Sie erstellen möchten.
    • ENGINE_NAME: Der vollständige Ressourcenname der Vertex AI Search-Suchmaschine 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/v1beta1/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 im Codebeispiel:

    • 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/v1beta1/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.preview 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 Kontexte mithilfe von REST abgerufen werden.

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.
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"
    }
  }'

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.


from vertexai.preview 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!",
    similarity_top_k=10,  # Optional
    vector_distance_threshold=0.5,  # Optional
    # vector_search_alpha=0.5, # Optional - Only supported for Weaviate
)
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 automatisch Daten aus Vertex AI Search abgerufen.

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. Beispiel: generateContent, streamGenerateContent.
  • INPUT_PROMPT: Der Text, der zur Inhaltsgenerierung an das LLM gesendet wird. Verwenden Sie einen Prompt, 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/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"
              },
            "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 Referenzdokumentation zur Python API.


from vertexai.preview import rag
from vertexai.preview.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", ...],
                )
            ],
            similarity_top_k=3,  # Optional
            vector_distance_threshold=0.5,  # Optional
        ),
    )
)

rag_model = GenerativeModel(
    model_name="gemini-1.5-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