Menggunakan Vertex AI Search sebagai backend pengambilan menggunakan Vertex AI RAG Engine

Halaman ini memperkenalkan integrasi Vertex AI Search dengan Vertex AI RAG Engine.

Vertex AI Search menyediakan solusi untuk mengambil dan mengelola data dalam aplikasi RAG Vertex AI Anda. Dengan menggunakan Vertex AI Search sebagai backend pengambilan, Anda dapat meningkatkan performa, skalabilitas, dan kemudahan integrasi.

  • Peningkatan performa dan skalabilitas: Vertex AI Search dirancang untuk menangani volume data yang besar dengan latensi yang sangat rendah. Hal ini menghasilkan waktu respons yang lebih cepat dan peningkatan performa untuk aplikasi RAG Anda, terutama saat menangani basis pengetahuan yang kompleks atau ekstensif.

  • Pengelolaan data yang disederhanakan: Impor data Anda dari berbagai sumber, seperti situs, set data BigQuery, dan bucket Cloud Storage, yang dapat menyederhanakan proses penyerapan data Anda.

  • Integrasi yang lancar: Vertex AI menyediakan integrasi bawaan dengan Vertex AI Search, yang memungkinkan Anda memilih Vertex AI Search sebagai backend korpus untuk aplikasi RAG Anda. Hal ini menyederhanakan proses integrasi dan membantu memastikan kompatibilitas optimal antar-komponen.

  • Peningkatan kualitas output LLM: Dengan menggunakan kemampuan pengambilan Vertex AI Search, Anda dapat membantu memastikan bahwa aplikasi RAG Anda mengambil informasi yang paling relevan dari korpus Anda, sehingga menghasilkan output yang lebih akurat dan informatif yang dihasilkan LLM.

Vertex AI Search menyatukan pengambilan informasi yang mendalam, pemrosesan bahasa alami, dan fitur terbaru dalam pemrosesan model bahasa besar (LLM), yang membantu memahami maksud pengguna dan memberikan hasil yang paling relevan bagi pengguna.

Dengan Vertex AI Search, Anda dapat membangun aplikasi penelusuran berkualitas Google menggunakan data yang Anda kontrol.

Untuk menyiapkan Vertex AI Search, lakukan hal berikut:

  1. Buat penyimpanan data penelusuran.
  2. Buat aplikasi penelusuran.

Menggunakan Vertex AI Search sebagai backend pengambilan untuk Vertex AI RAG Engine

Setelah Vertex AI Search disiapkan, ikuti langkah-langkah berikut untuk menyiapkannya sebagai backend pengambilan untuk aplikasi RAG.

Menetapkan Vertex AI Search sebagai backend pengambilan untuk membuat korpus RAG

Contoh kode ini menunjukkan cara mengonfigurasi Vertex AI Search sebagai backend pengambilan untuk korpus RAG.

REST

Untuk menggunakan command line guna membuat korpus RAG, lakukan hal berikut:

  1. Membuat korpus RAG

    Ganti variabel berikut yang digunakan dalam contoh kode:

    • PROJECT_ID: ID project Google Cloud Anda.
    • LOCATION: Region untuk memproses permintaan.
    • DISPLAY_NAME: Nama tampilan korpus RAG yang ingin Anda buat.
    • ENGINE_NAME: Nama resource lengkap dari mesin Vertex AI Search atau Vertex AI Search Datastore.
    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. Memantau progres

    Ganti variabel berikut yang digunakan dalam contoh kode:

    • PROJECT_ID: ID project Google Cloud Anda.
    • LOCATION: Region untuk memproses permintaan.
    • OPERATION_ID: ID operasi pembuatan korpus RAG.
    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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


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'.
# ...

Mengambil konteks menggunakan RAG API

Setelah pembuatan korpus RAG, konteks yang relevan dapat diambil dari Vertex AI Search melalui RetrieveContexts API.

REST

Contoh kode ini menunjukkan cara mengambil konteks menggunakan REST.

Ganti variabel berikut yang digunakan dalam contoh kode:

  • PROJECT_ID: ID project Google Cloud Anda.
  • LOCATION: Region untuk memproses permintaan.
  • RAG_CORPUS_RESOURCE: Nama resource korpus RAG.

    Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.

  • TEXT: Teks kueri untuk mendapatkan konteks yang relevan.
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

Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python.


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: "....
#   ....

Membuat konten menggunakan Vertex AI Gemini API

REST

Untuk membuat konten menggunakan model Gemini, lakukan panggilan ke Vertex AI GenerateContent API. Dengan menentukan RAG_CORPUS_RESOURCE dalam permintaan, data akan otomatis diambil dari Vertex AI Search.

Ganti variabel berikut yang digunakan dalam kode contoh:

  • PROJECT_ID: ID project Google Cloud Anda.
  • LOCATION: Region untuk memproses permintaan.
  • MODEL_ID: Model LLM untuk pembuatan konten. Contohnya, gemini-2.0-flash.
  • GENERATION_METHOD: Metode LLM untuk pembuatan konten. Contoh, generateContent, streamGenerateContent.
  • INPUT_PROMPT: Teks yang dikirim ke LLM untuk pembuatan konten. Coba gunakan perintah yang relevan dengan dokumen di Vertex AI Search.
  • RAG_CORPUS_RESOURCE: Nama resource korpus RAG. Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K: Opsional: Jumlah konteks teratas yang akan diambil.

    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

Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python.


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....
#   ...

Langkah berikutnya