Menggunakan Vertex AI Search sebagai backend pengambilan menggunakan RAG Engine

Halaman ini memperkenalkan integrasi Vertex AI Search dengan Mesin RAG.

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

  • Performa dan skalabilitas yang ditingkatkan: Vertex AI Search dirancang untuk menangani data dalam volume besar dengan latensi yang sangat rendah. Hal ini berarti waktu respons yang lebih cepat dan performa yang lebih baik untuk aplikasi RAG Anda, terutama saat menangani basis pengetahuan yang kompleks atau luas.

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

  • 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 yang optimal antarkomponen.

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

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

Dengan Vertex AI Search, Anda dapat membuat 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 RAG Engine

Setelah Vertex AI Search disiapkan, ikuti langkah-langkah berikut untuk menetapkannya 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 tindakan 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 Datastore Vertex AI Search.
    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. 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/v1beta1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"
    

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

Ganti variabel berikut yang digunakan dalam kode contoh:

  • 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 Datastore Vertex AI Search.
from vertexai.preview import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
LOCATION = "LOCATION"
DISPLAY_NAME = "DISPLAY_NAME"
ENGINE_NAME = "ENGINE_NAME"

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

# Create a corpus
vertex_ai_search_config = rag.VertexAiSearchConfig(
    serving_config=f"ENGINE_NAME/servingConfigs/default_search",
)

rag_corpus = rag.create_corpus(
    name=DISPLAY_NAME,
    vertex_ai_search_config=vertex_ai_search_config,
)

# Check the corpus just created
new_corpus = rag.get_corpus(name=rag_corpus.name)
print(new_corpus)

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/v1beta1/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 Python API.

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.
from vertexai.preview import rag
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")

response = rag.retrieval_query(
    rag_resources=[
        rag.RagResource(
            rag_corpus=CORPUS_NAME,
        )
    ],
    text="TEXT",
    similarity_top_k=10,  # Optional
)
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-1.5-flash-002.
  • 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/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

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

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-1.5-flash-002.
  • 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.
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")

rag_retrieval_tool = Tool.from_retrieval(
    retrieval=rag.Retrieval(
        source=rag.VertexRagStore(
            rag_resources=[
                rag.RagResource(
                    rag_corpus=RAG_CORPUS_RESOURCE,
                )
            ],
            similarity_top_k=10,  # Optional
        ),
    )
)

rag_model = GenerativeModel(
    model_name="MODEL_ID", 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....
#   ...

Langkah selanjutnya