Menggunakan database Weaviate dengan RAG Engine

Halaman ini menunjukkan cara menghubungkan korpus RAG Engine ke Weaviate di skrip untuk menyiapkan database.

Anda dapat menggunakan instance database Weaviate, yang merupakan database open source, dengan RAG Engine untuk mengindeks dan melakukan penelusuran kemiripan berbasis vektor. J penelusuran kesamaan adalah cara untuk menemukan potongan teks yang mirip dengan teks yang Anda cari, yang memerlukan penggunaan penyematan model. Model penyematan menghasilkan data vektor untuk setiap bagian teks yang dibandingkan. Penelusuran kemiripan digunakan untuk mengambil konteks semantik untuk penjelasan guna menampilkan konten yang paling akurat dari LLM Anda.

Dengan RAG Engine, Anda dapat terus menggunakan vektor yang terkelola sepenuhnya instance database, yang menjadi tanggung jawab Anda. RAG Engine menggunakan database vektor untuk penyimpanan, pengelolaan indeks, dan penelusuran.

Pertimbangan

Pertimbangkan langkah-langkah berikut sebelum menggunakan database Weaviate:

  1. Anda harus membuat, mengonfigurasi, dan men-deploy instance database Weaviate, serta pengumpulan data. Ikuti petunjuk di Membuat koleksi Weaviate untuk menyiapkan koleksi berdasarkan skema Anda.
  2. Anda harus memberikan kunci API Weaviate, yang memungkinkan RAG Engine berinteraksi dengan database Weaviate. RAG Engine mendukung AuthN dan AuthZ berbasis kunci API, yang terhubung ke database Weaviate Anda dan mendukung koneksi HTTPS.
  3. RAG Engine tidak menyimpan dan mengelola kunci API Weaviate Anda. Sebaliknya, Anda dapat harus melakukan hal berikut:
    1. Simpan kunci Anda di Google Cloud Secret Manager.
    2. Beri akun layanan project izin untuk mengakses secret Anda.
    3. Berikan akses RAG Engine ke nama resource secret Anda.
    4. Saat Anda berinteraksi dengan database Weaviate, RAG Engine akan mengakses resource rahasia menggunakan akun layanan Anda.
  4. Korpus RAG Engine dan koleksi Weaviate memiliki pemetaan peta Google. File RAG disimpan dalam kumpulan database Weaviate. Saat panggilan dilakukan ke CreateRagCorpus API atau UpdateRagCorpus API, korpus RAG akan dikaitkan dengan koleksi database.
  5. Selain penelusuran semantik berbasis embeddings padat, penelusuran campuran juga didukung dengan RAG Engine melalui sebuah {i>database<i} Weaviate. Anda juga dapat menyesuaikan bobot antara kesamaan vektor rapat dan jarang dalam penelusuran campuran.

Menyediakan database Weaviate

Sebelum menggunakan database Weaviate dengan RAG Engine, Anda harus melakukan hal berikut:

  1. Konfigurasikan dan deploy instance database Weaviate Anda.
  2. Siapkan endpoint HTTPS.
  3. Buat koleksi Weaviate Anda.
  4. Gunakan kunci API Anda untuk menyediakan Weaviate menggunakan AuthN dan AuthZ.
  5. Menyediakan akun layanan RAG Engine Anda.

Mengonfigurasi dan men-deploy instance database Weaviate

Anda harus mengikuti panduan memulai cepat Weaviate resmi. Namun, Anda dapat menggunakan Panduan Google Cloud Marketplace, yang bersifat opsional.

Anda dapat menyiapkan instance Weaviate di mana saja selama endpoint Weaviate dapat diakses untuk dikonfigurasi dan di-deploy dalam project Anda. Anda kemudian dapat sepenuhnya mengelola instance database Weaviate Anda.

Karena RAG Engine tidak terlibat dalam tahap apa pun dalam siklus proses instance database Weaviate, Anda bertanggung jawab untuk memberikan izin ke RAG Engine agar dapat menyimpan dan menelusuri data di database Weaviate. Anda juga bertanggung jawab untuk memastikan bahwa data dalam database Anda dapat digunakan oleh RAG Engine. Misalnya, jika Anda mengubah data Anda, RAG Engine tidak bertanggung jawab atas perilaku yang tidak terduga karena perubahan tersebut.

Menyiapkan endpoint HTTPS

Selama penyediaan Weaviate, pastikan Anda membuat endpoint HTTPS. Meskipun koneksi HTTP didukung, sebaiknya traffic database RAG Engine dan Weaviate menggunakan koneksi HTTPS.

Buat koleksi Weaviate Anda

Karena korpus RAG Engine dan koleksi Weaviate memiliki pemetaan satu-satu, Anda harus membuat koleksi di database Weaviate sebelum mengaitkan koleksi dengan korpus RAG Engine. Atribusi satu kali ini dibuat saat Anda memanggil CreateRagCorpus API atau UpdateRagCorpus API.

Saat membuat koleksi di Weaviate, Anda harus menggunakan skema berikut:

Nama properti Jenis data
fileId text
corpusId text
chunkId text
chunkDataType text
chunkData text
fileOriginalUri text

Menggunakan kunci API untuk menyediakan Weaviate menggunakan AuthN dan AuthZ

Penyediaan kunci API Weaviate melibatkan langkah-langkah berikut:

  1. Membuat kunci API Weaviate.
  2. Konfigurasikan Weaviate menggunakan kunci API Weaviate Anda.
  3. Simpan kunci API Weaviate Anda di Secret Manager.

Membuat kunci API

RAG Engine hanya dapat terhubung ke instance database Weaviate menggunakan kunci API Anda untuk otentikasi dan otorisasi. Anda harus mengikuti Panduan resmi autentikasi untuk mengonfigurasi autentikasi berbasis kunci API di database Weaviate Anda di instance Compute Engine.

Jika pembuatan kunci API Weaviate memerlukan informasi identitas untuk dikaitkan dengan yang berasal dari RAG Engine, Anda harus membuat korpus pertama, dan menggunakan akun layanan RAG Engine sebagai identitas.

Menyimpan kunci API Anda di Secret Manager

Kunci API menyimpan Informasi Identitas Pribadi (SPII) yang Sensitif, yaitu tunduk pada persyaratan hukum. Jika data SPII disusupi atau disalahgunakan, individu mungkin akan mengalami risiko atau bahaya yang signifikan. Untuk meminimalkan risiko terhadap satu per satu saat menggunakan RAG Engine, jangan simpan dan kelola kunci API Anda, dan menghindari berbagi kunci API yang tidak dienkripsi.

Untuk melindungi SPII, lakukan hal berikut:

  1. Simpan kunci API Anda di Secret Manager.
  2. Beri akun layanan RAG Engine izin ke secret Anda, dan mengelola kontrol akses di level resource secret.
    1. Buka izin project Anda.
    2. Aktifkan opsi Sertakan pemberian peran yang diberikan Google.
    3. Temukan akun layanan, yang memiliki format

      service-{project number}@gcp-sa-vertex-rag.iam.gserviceaccount.com

    4. Edit akun utama akun layanan.
    5. Tambahkan peran Secret Manager Secret Accessor ke layanan menggunakan akun layanan.
  3. Selama pembuatan atau pembaruan korpus RAG, teruskan resource rahasia ke RAG Engine, dan menyimpan nama resource rahasia.

Saat Anda membuat permintaan API ke instance database Weaviate, RAG Engine menggunakan setiap akun layanan untuk membaca kunci API yang sesuai dengan resource rahasia Anda di Secret Manager dari project Anda.

Menyediakan akun layanan RAG Engine

Saat Anda membuat resource pertama dalam project, RAG Engine membuat akun layanan khusus. Anda dapat menemukan akun layanan dari halaman IAM project. Akun layanan mengikuti langkah ini format:

service-{project number}@gcp-sa-vertex-rag.iam.gserviceaccount.com

Misalnya, service-123456789@gcp-sa-vertex-rag.iam.gserviceaccount.com.

Saat berintegrasi dengan database Weaviate, akun layanan Anda digunakan di skenario berikut:

  • Anda dapat menggunakan akun layanan untuk membuat kunci Weaviate API untuk autentikasi. Dalam beberapa kasus, pembuatan kunci API tidak memerlukan informasi pengguna, yang berarti akun layanan tidak diperlukan saat membuat kunci API.
  • Anda dapat mengikat akun layanan dengan kunci API di database Weaviate untuk mengonfigurasi autentikasi (AuthN) dan otorisasi (AuthZ). Namun, akun layanan Anda tidak diperlukan.
  • Anda dapat menyimpan Secret Manager kunci API di project, dan Anda dapat memberikan izin akun layanan ke resource secret ini.
  • RAG Engine menggunakan akun layanan untuk mengakses kunci API dari Secret Manager di project Anda.

Menyiapkan lingkungan konsol Google Cloud

Klik untuk mempelajari cara menyiapkan lingkungan Anda

Pelajari cara menyiapkan lingkungan Anda dengan memilih salah satu tab berikut:

Python

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Aktifkan API Vertex AI.

    Mengaktifkan API

  4. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  5. Aktifkan API Vertex AI.

    Mengaktifkan API

  6. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  7. Buat kredensial autentikasi lokal untuk Akun Google Anda:

    gcloud auth application-default login
  8. Instal atau update Vertex AI SDK untuk Python dengan menjalankan perintah berikut:

    pip3 install --upgrade "google-cloud-aiplatform>=1.38"
        

Node.js

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Aktifkan API Vertex AI.

    Mengaktifkan API

  4. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  5. Aktifkan API Vertex AI.

    Mengaktifkan API

  6. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  7. Buat kredensial autentikasi lokal untuk Akun Google Anda:

    gcloud auth application-default login
  8. Instal atau perbarui Vertex AI SDK untuk Node.js dengan menjalankan perintah berikut:

    npm install @google-cloud/vertexai
        

Java

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Aktifkan API Vertex AI.

    Mengaktifkan API

  4. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  5. Aktifkan API Vertex AI.

    Mengaktifkan API

  6. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  7. Buat kredensial autentikasi lokal untuk Akun Google Anda:

    gcloud auth application-default login
  8. Untuk menambahkan google-cloud-vertexai sebagai dependensi, tambahkan kode yang sesuai untuk lingkungan Anda:

    Maven dengan BOM

    Tambahkan HTML berikut ke pom.xml Anda:

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.google.cloud</groupId>
          <artifactId>libraries-bom</artifactId>
          <version>26.32.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-vertexai</artifactId>
      </dependency>
    </dependencies>
                

    Maven tanpa BOM

    Tambahkan HTML berikut ke pom.xml Anda:

    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-vertexai</artifactId>
      <version>0.4.0</version>
    </dependency>
              

    Gradle without BOM

    Add the following to your build.gradle

    implementation 'com.google.cloud:google-cloud-vertexai:0.4.0'

Go

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Aktifkan API Vertex AI.

    Mengaktifkan API

  4. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  5. Aktifkan API Vertex AI.

    Mengaktifkan API

  6. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  7. Buat kredensial autentikasi lokal untuk Akun Google Anda:

    gcloud auth application-default login
  8. Meninjau paket Vertex AI API Go yang tersedia untuk menentukan paket mana yang paling sesuai dengan kebutuhan proyek Anda:

    • Paket cloud.google.com/go/vertexai (direkomendasikan)

      vertexai adalah paket yang dibuat manusia yang memberikan akses ke kemampuan dan fitur umum.

      Paket ini direkomendasikan sebagai titik awal bagi sebagian besar developer membangun solusi dengan Vertex AI API. Untuk mengakses kemampuan dan fitur yang belum tercakup dalam paket ini, gunakan aiplatform yang dibuat otomatis.

    • Paket cloud.google.com/go/aiplatform

      aiplatform adalah paket yang dibuat secara otomatis.

      Paket ini ditujukan untuk project yang memerlukan akses ke Kemampuan dan fitur Vertex AI API yang belum disediakan oleh paket vertexai yang ditulis manusia.

  9. Instal paket Go yang diinginkan berdasarkan kebutuhan project Anda dengan menjalankan salah satu perintah berikut:

    # Human authored package. Recommended for most developers.
    go get cloud.google.com/go/vertexai
        
    # Auto-generated package. go get cloud.google.com/go/aiplatform

C#

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Aktifkan API Vertex AI.

    Mengaktifkan API

  4. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  5. Aktifkan API Vertex AI.

    Mengaktifkan API

  6. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  7. Buat kredensial autentikasi lokal untuk Akun Google Anda:

    gcloud auth application-default login

REST

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Aktifkan API Vertex AI.

    Mengaktifkan API

  4. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  5. Aktifkan API Vertex AI.

    Mengaktifkan API

  6. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  7. Konfigurasikan variabel lingkungan dengan memasukkan kode berikut. Ganti PROJECT_ID dengan ID project Google Cloud Anda.
    MODEL_ID="gemini-1.5-flash-002"
    PROJECT_ID="PROJECT_ID"
        
  8. Menyediakan endpoint:
    gcloud beta services identity create --service=aiplatform.googleapis.com --project=${PROJECT_ID}
        
  9. Opsional: Jika Anda menggunakan Cloud Shell dan diminta untuk mengotorisasi Cloud Shell, klik Izinkan.

Menyiapkan korpus RAG

Untuk mengakses data dari database Weaviate, RAG Engine harus memiliki akses ke korpus RAG. Bagian ini memberikan langkah-langkah untuk membuat satu korpus RAG dan korpus RAG tambahan.

Menggunakan API CreateRagCorpus dan UpdateRagCorpus

Anda harus menentukan kolom berikut saat memanggil CreateRagCorpus dan UpdateRagCorpus API:

  • rag_vector_db_config.weaviate: Setelah memanggil API CreateRagCorpus, konfigurasi database vektor dipilih. Konfigurasi database vektor berisi semua isian konfigurasi. Jika kolom rag_vector_db_config.weaviate tidak ditetapkan, rag_vector_db_config.rag_managed_db akan ditetapkan secara default.
  • weaviate.http_endpoint: Endpoint Weaviate HTTPS atau HTTP dibuat selama penyediaan instance database Weaviate.
  • weaviate.collection_name: Nama koleksi yang dibuat selama penyediaan instance Weaviate. Nama harus diawali dengan huruf kapital.
  • api_auth.api_key_config: Konfigurasi menentukan untuk menggunakan kunci API guna memberikan otorisasi akses Anda ke database vektor.
  • api_key_config.api_key_secret_version: Nama resource secret yang disimpan di Secret Manager, yang berisi kunci Weaviate API Anda.

Anda dapat membuat dan mengaitkan korpus RAG ke koleksi Weaviate di di instance database. Namun, Anda mungkin memerlukan akun layanan untuk membuat kunci API dan mengonfigurasi instance database Weaviate. Saat Anda membuat korpus RAG pertama, akun layanan akan dibuat. Setelah membuat Korpus RAG, hubungan antara {i> database Weaviate <i}dan kunci API mungkin belum siap digunakan dalam pembuatan korpus RAG lain.

Untuk berjaga-jaga jika {i>database<i} dan kunci Anda belum siap untuk dikaitkan dengan Korpus RAG, lakukan hal berikut pada korpus RAG Anda:

  1. Tetapkan kolom weaviate di rag_vector_db_config.

    • Anda tidak dapat mengubah database vektor terkait.
    • Biarkan kolom http_endpoint dan collection_name kosong. Keduanya dapat diperbarui di lain waktu.
  2. Jika tidak memiliki kunci API yang tersimpan di Secret Manager, Anda dapat mengosongkan kolom api_auth. Saat Anda memanggil UpdateRagCorpus Anda dapat memperbarui kolom api_auth. Weaviate mengharuskan hal berikut dilakukan:

    1. Tetapkan api_key_config di kolom api_auth.
    2. Tetapkan api_key_secret_version kunci API Weaviate Anda di Secret Manager. Kolom api_key_secret_version menggunakan format berikut:

      projects/{project}/secrets/{secret}/versions/{version}

  3. Jika Anda menentukan kolom yang hanya dapat ditetapkan satu kali, seperti http_endpoint atau collection_name, Anda tidak dapat mengubahnya kecuali jika Anda menghapus korpus RAG, dan buat korpus RAG Anda lagi. Kolom lain seperti kolom kunci API, api_key_secret_version, dapat diperbarui.

  4. Saat memanggil UpdateRagCorpus, Anda dapat menetapkan kolom vector_db. Tujuan vector_db harus disetel ke weaviate oleh panggilan API CreateRagCorpus Anda. Jika tidak, sistem akan memilih opsi RAG Managed Database, yang secara default. Opsi ini tidak dapat diubah saat Anda memanggil API UpdateRagCorpus. Saat memanggil UpdateRagCorpus dan kolom vector_db ditetapkan sebagian, Anda dapat memperbarui kolom yang ditandai sebagai Dapat Diubah (juga disebut sebagai dapat diubah).

Tabel ini mencantumkan kolom WeaviateConfig yang dapat diubah dan tidak dapat diubah yang digunakan dalam kode Anda.

Nama kolom Dapat Diubah atau Tidak Dapat Diubah
http_endpoint Tidak dapat diubah setelah ditetapkan
collection_name Tidak dapat diubah setelah ditetapkan
api_key_authentication Dapat diubah

Membuat korpus RAG pertama

Jika akun layanan RAG Engine tidak ada, lakukan tindakan berikut:

  1. Buat korpus RAG di RAG Engine dengan konfigurasi Weaviate kosong, yang memulai penyediaan RAG Engine untuk membuat akun layanan.
  2. Pilih nama untuk akun layanan RAG Engine Anda yang mengikuti format ini:

    service-{project number}@gcp-sa-vertex-rag.iam.gserviceaccount.com

    Misalnya, service-123456789@gcp-sa-vertex-rag.iam.gserviceaccount.com.

  3. Dengan menggunakan akun layanan, akses secret yang disimpan di Secret Manager project Anda, yang berisi kunci Weaviate API Anda.
  4. Dapatkan informasi berikut setelah penyediaan Weaviate selesai:
    • Endpoint HTTPS atau HTTP Weaviate Anda.
    • Nama koleksi Weaviate Anda.
  5. Memanggil CreateRagCorpus API untuk membuat korpus RAG dengan Konfigurasi Weaviate, dan panggil UpdateRagCorpus API untuk mengupdate Korpus RAG dengan informasi berikut:
    • Endpoint HTTPS atau HTTP Weaviate Anda.
    • Nama koleksi Weaviate Anda.
    • Nama resource kunci API.

Buat korpus RAG lain

Jika akun layanan RAG Engine sudah ada, lakukan hal berikut:

  1. Dapatkan akun layanan RAG Engine dari izin project Anda.
  2. Aktifkan opsi "Sertakan pemberian peran yang disediakan Google"
  3. Pilih nama untuk akun layanan RAG Engine Anda setelah ini format:

    service-{project number}@gcp-sa-vertex-rag.iam.gserviceaccount.com

  4. Dengan menggunakan akun layanan, akses secret yang disimpan di Secret Manager project Anda, yang berisi kunci Weaviate API Anda.
  5. Selama penyediaan Weaviate, dapatkan informasi berikut:
    • Endpoint HTTPS atau HTTP Weaviate.
    • Nama koleksi Weaviate Anda.
  6. Buat korpus RAG di RAG Engine, dan hubungkan dengan koleksi Weaviate Anda dengan melakukan salah satu hal berikut:
    1. Lakukan panggilan API CreateRagCorpus untuk membuat korpus RAG dengan Konfigurasi bobot, yang merupakan opsi yang lebih disukai.
    2. Lakukan panggilan API CreateRagCorpus untuk membuat korpus RAG dengan konfigurasi Weaviate kosong, dan lakukan panggilan API UpdateRagCorpus untuk memperbarui korpus RAG dengan informasi berikut:
      • Endpoint HTTP database Weaviate
      • Nama Koleksi Weaviate
      • Kunci API

Contoh

Bagian ini menampilkan kode contoh yang menunjukkan cara menyiapkan Weaviate {i>database<i}, Secret Manager, korpus RAG, dan file RAG. Kode contoh juga disediakan untuk menunjukkan cara mengimpor file, mengambil konteks, membuat konten, dan menghapus korpus RAG dan file RAG.

Untuk menggunakan notebook Model Garden RAG API, lihat Menggunakan Weaviate dengan Llama 3.

Menyiapkan database Weaviate

Contoh kode ini menunjukkan cara menyiapkan data Weaviate Anda dan {i>Secret Manager<i}.

# TODO(developer): Update the variables.
# The HTTPS/HTTP Weaviate endpoint you created during provisioning.
HTTP_ENDPOINT_NAME="https://your.weaviate.endpoint.com"

# Your Weaviate API Key.
WEAVIATE_API_KEY="example-api-key"

# Select your Weaviate collection name, which roughly corresponds to a Vertex AI Knowledge Engine Corpus.
# For example, "MyCollectionName"
# Note that the first letter needs to be capitalized.
# Otherwise, Weavaite will capitalize it for you.
WEAVIATE_COLLECTION_NAME="MyCollectionName"

# Create a collection in Weaviate which includes the required schema fields shown below.
echo '{
  "class": "'${WEAVIATE_COLLECTION_NAME}'",
  "properties": [
    { "name": "fileId", "dataType": [ "string" ] },
    { "name": "corpusId", "dataType": [ "string" ] },
    { "name": "chunkId", "dataType": [ "string" ] },
    { "name": "chunkDataType", "dataType": [ "string" ] },
    { "name": "chunkData", "dataType": [ "string" ] },
    { "name": "fileOriginalUri", "dataType": [ "string" ] }
  ]
}' | curl \
    -X POST \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer "${WEAVIATE_API_KEY} \
    -d @- \
    ${HTTP_ENDPOINT_NAME}/v1/schema

Menyiapkan Secret Manager

Untuk menyiapkan Secret Manager, Anda harus mengaktifkan Secret Manager, dan menetapkan izin akses.

Mengaktifkan Secret Manager

Untuk mengaktifkan Secret Manager, lakukan hal berikut:

  1. Buka halaman Secret Manager.

    Buka Secret Manager

  2. Klik + Create Secret.
  3. Masukkan Nama rahasia Anda. Nama rahasia hanya boleh berisi huruf Latin (A-Z), angka (0-9), tanda hubung (-), dan garis bawah (_).
  4. Menentukan kolom berikut bersifat opsional:
    1. Untuk mengupload file dengan secret Anda, klik Browse.
    2. Baca Kebijakan replikasi.
    3. Jika ingin mengelola lokasi untuk secret Anda secara manual, centang Kelola lokasi untuk rahasia ini secara manual. Minimal satu region harus dipilih.
    4. Pilih opsi enkripsi Anda.
    5. Jika Anda ingin menetapkan periode rotasi secara manual, centang Tetapkan periode rotasi.
    6. Jika Anda ingin menentukan topik Publikasikan atau berlangganan untuk menerima notifikasi peristiwa, klik Tambahkan topik.
    7. Secara default, masa berlaku secret tidak pernah berakhir. Jika Anda ingin menetapkan tanggal habis masa berlaku, lalu centang Tetapkan tanggal habis masa berlaku.
    8. Secara default, versi secret dihancurkan sesuai permintaan. Untuk menunda penghancuran versi secret, periksa Set duration for delayed destruction.
    9. Jika Anda ingin menggunakan label untuk mengatur dan mengategorikan secret, klik + Tambahkan label.
    10. Jika Anda ingin menggunakan anotasi untuk melampirkan metadata non-identitas ke secret, klik + Tambahkan anotasi.
  5. Klik Create secret.

Menetapkan izin

  1. Anda harus memberikan izin Secret Manager ke akun layanan Anda.

  2. Di bagian IAM & Admin di konsol Google Cloud, temukan akun layanan Anda, lalu klik ikon pensil untuk mengedit.

  3. Di kolom Role, pilih Secret Manager Secret Accessor.

Contoh kode ini menunjukkan cara menyiapkan Secret Manager Anda.

# TODO(developer): Update the variables.
# Select a resource name for your Secret, which contains your API Key.
SECRET_NAME="MyWeaviateApiKeySecret"

# Create a secret in SecretManager.
curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets?secretId=${SECRET_NAME}" \
    --request "POST" \
    --header "authorization: Bearer $(gcloud auth print-access-token)" \
    --header "content-type: application/json" \
    --data "{\"replication\": {\"automatic\": {}}}"

# Your Weaviate API Key.
WEAVIATE_API_KEY="example-api-key"
# Encode your WEAVIATE_API_KEY using base 64.
SECRET_DATA=$(echo ${WEAVIATE_API_KEY} | base64)

# Create a new version of your secret which uses SECRET_DATA as payload
curl.
"https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets/${SECRET_NAME}:addVersion" \
    --request "POST" \
    --header "authorization: Bearer $(gcloud auth print-access-token)" \
    --header "content-type: application/json" \
    --data "{\"payload\": {\"data\": \"${SECRET_DATA}\"}}"

Menggunakan Weaviate dengan Llama 3

Notebook Model Garden RAG API menunjukkan cara menggunakan Vertex AI SDK untuk Python dengan model Weaviate corpus dan Llama 3. Untuk menggunakan Anda harus melakukan hal berikut:

  1. Siapkan database Weaviate.

  2. Siapkan Secret Manager Anda.

  3. Gunakan notebook Model Garden RAG API.

Untuk contoh lainnya, lihat Contoh.

Membuat korpus RAG

Contoh kode ini menunjukkan cara membuat korpus RAG, dan menetapkan bobot sebagai database vektornya.

REST

# TODO(developer): Update the variables.
PROJECT_ID = "YOUR_PROJECT_ID"
# The HTTPS/HTTP Weaviate endpoint you created during provisioning.
HTTP_ENDPOINT_NAME="https://your.weaviate.endpoint.com"

# Your Weaviate collection name, which roughly corresponds to a Vertex AI Knowledge Engine Corpus.
# For example, "MyCollectionName"
# Note that the first letter needs to be capitalized.
# Otherwise, Weaviate will capitalize it for you.
WEAVIATE_COLLECTION_NAME="MyCollectionName"

# The resource name of your Weaviate API Key your Secret.
SECRET_NAME="MyWeaviateApiKeySecret"
# The Secret Manager resource name containing the API Key for your Weaviate endpoint.
# For example, projects/{project}/secrets/{secret}/versions/latest
APIKEY_SECRET_VERSION="projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/latest"

# Select a Corpus display name.
CORPUS_DISPLAY_NAME="SpecialCorpus"

# Call CreateRagCorpus API and set all Vector DB Config parameters for Weaviate to create a new corpus associated to your selected Weaviate collection.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
-d '{
      "display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
      "rag_vector_db_config" : {
              "weaviate": {
                    "http_endpoint": '\""${HTTP_ENDPOINT_NAME}"\"',
                    "collection_name": '\""${WEAVIATE_COLLECTION_NAME}"\"'
              },
        "api_auth" : {
                "api_key_config": {
                      "api_key_secret_version": '\""${APIKEY_SECRET_VERSION}"\"'
                }
        }
      }
  }'

# TODO(developer): Update the variables.
# Get operation_id returned in CreateRagCorpus.
OPERATION_ID="your-operation-id"

# Poll Operation status until done = true in the response.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/operations/${OPERATION_ID}

# Call ListRagCorpora API to verify the RAG corpus is created successfully.
curl -sS -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora"

Python

import vertexai
from vertexai.preview import rag
from vertexai.preview.generative_models import GenerativeModel, Tool
# Set Project
PROJECT_ID = "YOUR_PROJECT_ID"  # @param {type:"string"}
vertexai.init(project=PROJECT_ID, location="us-central1")

# Configure a Google first-party embedding model
embedding_model_config = rag.EmbeddingModelConfig(
    publisher_model="publishers/google/models/text-embedding-004"
)

# Configure a third-party model or a Google fine-tuned first-party model as a Vertex Endpoint resource
# See https://github.com/GoogleCloudPlatform/vertex-ai-samples/blob/main/notebooks/community/model_garden/model_garden_e5.ipynb for
# deploying 3P embedding models to endpoints
ENDPOINT_ID = "your-model-endpoint-id"  # @param {type:"string"}
MODEL_ENDPOINT = "projects/{PROJECT_ID}/locations/us-central1/endpoints/{ENDPOINT_ID}"

embedding_model_config = rag.EmbeddingModelConfig(
    endpoint=MODEL_ENDPOINT,
)

# Configure a Weaviate Vector Database Instance for the corpus
WEAVIATE_HTTP_ENDPOINT = "weaviate-http-endpoint"  # @param {type:"string"}
COLLECTION_NAME = "weaviate-collection-name"  # @param {type:"string"}
API_KEY = "your-secret-manager-resource-name"  # @param {type:"string"}

vector_db = rag.Weaviate(
    weaviate_http_endpoint=WEAVIATE_HTTP_ENDPOINT,
    collection_name=COLLECTION_NAME,
    api_key=API_KEY,
)

# Name your corpus
DISPLAY_NAME = "your-corpus-name"  # @param {type:"string"}

rag_corpus = rag.create_corpus(
    display_name=DISPLAY_NAME, embedding_model_config=embedding_model_config, vector_db=vector_db
)

# Check the corpus just created
rag.list_corpora()

Menggunakan file RAG

RAG API menangani unggahan, impor, listingan, dan penghapusan file.

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Anda.
  • LOCATION: Region untuk memproses permintaan.
  • RAG_CORPUS_ID: ID resource RagCorpus.
  • INPUT_FILE: Jalur file lokal.
  • FILE_DISPLAY_NAME: Nama tampilan RagFile.
  • RAG_FILE_DESCRIPTION: Deskripsi RagFile.

Metode HTTP dan URL:

POST https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:upload

Isi JSON permintaan:

{
 "rag_file": {
  "display_name": "FILE_DISPLAY_NAME",
  "description": "RAG_FILE_DESCRIPTION"
 }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama INPUT_FILE, lalu jalankan perintah berikut:

curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @INPUT_FILE \
"https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:upload"

PowerShell

Simpan isi permintaan dalam file bernama INPUT_FILE, dan jalankan perintah berikut:

$headers = @{  }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile INPUT_FILE `
-Uri "https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:upload" | Select-Object -Expand Content
Respons yang berhasil akan menampilkan resource RagFile. Komponen terakhir kolom RagFile.name adalah rag_file_id yang dibuat server.

Python

Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk informasi selengkapnya, lihat Dokumentasi referensi 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}"
# path = "path/to/local/file.txt"
# display_name = "file_display_name"
# description = "file description"

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

rag_file = rag.upload_file(
    corpus_name=corpus_name,
    path=path,
    display_name=display_name,
    description=description,
)
print(rag_file)
# RagFile(name='projects/[PROJECT_ID]/locations/us-central1/ragCorpora/1234567890/ragFiles/09876543',
#  display_name='file_display_name', description='file description')

Mengimpor file RAG

File dan folder dapat diimpor dari Drive atau Cloud Storage.

REST

Gunakan response.metadata untuk melihat kegagalan sebagian, waktu permintaan, dan waktu respons di objek response SDK.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Anda.
  • LOCATION: Region untuk memproses permintaan.
  • RAG_CORPUS_ID: ID resource RagCorpus.
  • GCS_URIS: Daftar lokasi Cloud Storage. Contoh: gs://my-bucket1, gs://my-bucket2.
  • DRIVE_RESOURCE_ID: ID resource Drive. Contoh:
    • https://drive.google.com/file/d/ABCDE
    • https://drive.google.com/corp/drive/u/0/folders/ABCDEFG
  • DRIVE_RESOURCE_TYPE: Jenis resource Drive. Opsi:
    • RESOURCE_TYPE_FILE - File
    • RESOURCE_TYPE_FOLDER - Folder
  • CHUNK_SIZE: Opsional: Jumlah token yang harus dimiliki setiap bagian.
  • CHUNK_OVERLAP: Opsional: Jumlah token yang tumpang-tindih di antara bagian.

Metode HTTP dan URL:

POST https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import

Isi JSON permintaan:

{
  "import_rag_files_config": {
    "gcs_source": {
      "uris": GCS_URIS
    },
    "google_drive_source": {
      "resource_ids": {
        "resource_id": DRIVE_RESOURCE_ID,
        "resource_type": DRIVE_RESOURCE_TYPE
      },
    }
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, lalu jalankan perintah berikut:

curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$headers = @{  }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import" | Select-Object -Expand Content
Respons yang berhasil akan menampilkan resource ImportRagFilesOperationMetadata.

Contoh berikut menunjukkan cara mengimpor file dari Cloud Storage. Gunakan kolom kontrol max_embedding_requests_per_min untuk membatasi kecepatan RAG Engine memanggil model penyematan selama proses pengindeksan ImportRagFiles. Kolom ini memiliki nilai default 1000 panggilan per menit.

// Cloud Storage bucket/file location.
// Such as "gs://rag-e2e-test/"
GCS_URIS=YOUR_GCS_LOCATION

// Enter the QPM rate to limit RAG's access to your embedding model
// Example: 1000
EMBEDDING_MODEL_QPM_RATE=MAX_EMBEDDING_REQUESTS_PER_MIN_LIMIT

// ImportRagFiles
// Import a single Cloud Storage file or all files in a Cloud Storage bucket.
// Input: ENDPOINT, PROJECT_ID, RAG_CORPUS_ID, GCS_URIS
// Output: ImportRagFilesOperationMetadataNumber
// Use ListRagFiles to find the server-generated rag_file_id.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora/${RAG_CORPUS_ID}/ragFiles:import \
-d '{
  "import_rag_files_config": {
    "gcs_source": {
      "uris": '\""${GCS_URIS}"\"'
    },
    "rag_file_chunking_config": {
      "chunk_size": 512
    },
    "max_embedding_requests_per_min": '"${EMBEDDING_MODEL_QPM_RATE}"'
  }
}'

// Poll the operation status.
// The response contains the number of files imported.
OPERATION_ID=OPERATION_ID
poll_op_wait ${OPERATION_ID}

Contoh berikut menunjukkan cara mengimpor file dari Drive. Gunakan kolom kontrol max_embedding_requests_per_min untuk membatasi kecepatan RAG Engine memanggil model embedding Proses pengindeksan ImportRagFiles. Kolom ini memiliki nilai default 1000 panggilan per menit.

// Google Drive folder location.
FOLDER_RESOURCE_ID=YOUR_GOOGLE_DRIVE_FOLDER_RESOURCE_ID

// Enter the QPM rate to limit RAG's access to your embedding model
// Example: 1000
EMBEDDING_MODEL_QPM_RATE=MAX_EMBEDDING_REQUESTS_PER_MIN_LIMIT

// ImportRagFiles
// Import all files in a Google Drive folder.
// Input: ENDPOINT, PROJECT_ID, RAG_CORPUS_ID, FOLDER_RESOURCE_ID
// Output: ImportRagFilesOperationMetadataNumber
// Use ListRagFiles to find the server-generated rag_file_id.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora/${RAG_CORPUS_ID}/ragFiles:import \
-d '{
  "import_rag_files_config": {
    "google_drive_source": {
      "resource_ids": {
        "resource_id": '\""${FOLDER_RESOURCE_ID}"\"',
        "resource_type": "RESOURCE_TYPE_FOLDER"
      }
    },
    "max_embedding_requests_per_min": '"${EMBEDDING_MODEL_QPM_RATE}"'
  }
}'

// Poll the operation status.
// The response contains the number of files imported.
OPERATION_ID=OPERATION_ID
poll_op_wait ${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.


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}"
# paths = ["https://drive.google.com/file/123", "gs://my_bucket/my_files_dir"]  # Supports Google Cloud Storage and Google Drive Links

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

response = rag.import_files(
    corpus_name=corpus_name,
    paths=paths,
    chunk_size=512,  # Optional
    chunk_overlap=100,  # Optional
    max_embedding_requests_per_min=900,  # Optional
)
print(f"Imported {response.imported_rag_files_count} files.")
# Example response:
# Imported 2 files.

Mendapatkan file RAG

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Anda.
  • LOCATION: Region untuk memproses permintaan.
  • RAG_CORPUS_ID: ID resource RagCorpus.
  • RAG_FILE_ID: ID resource RagFile.

Metode HTTP dan URL:

GET https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

curl -X GET \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID"

PowerShell

Jalankan perintah berikut:

$headers = @{  }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID" | Select-Object -Expand Content
Respons yang berhasil akan menampilkan resource RagFile.

Python

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


from vertexai.preview import rag
import vertexai

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

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

rag_file = rag.get_file(name=file_name)
print(rag_file)
# Example response:
# RagFile(name='projects/1234567890/locations/us-central1/ragCorpora/11111111111/ragFiles/22222222222',
# display_name='file_display_name', description='file description')

Membuat daftar file RAG

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Anda.
  • LOCATION: Region untuk memproses permintaan.
  • RAG_CORPUS_ID: ID resource RagCorpus.
  • PAGE_SIZE: Ukuran halaman daftar standar. Anda dapat menyesuaikan jumlah RagFiles yang akan ditampilkan per halaman dengan memperbarui parameter page_size.
  • PAGE_TOKEN: Token halaman daftar standar. Biasanya diperoleh menggunakan ListRagFilesResponse.next_page_token dari panggilan VertexRagDataService.ListRagFiles sebelumnya.

Metode HTTP dan URL:

GET https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles?page_size=PAGE_SIZE&page_token=PAGE_TOKEN

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

curl -X GET \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles?page_size=PAGE_SIZE&page_token=PAGE_TOKEN"

PowerShell

Jalankan perintah berikut:

$headers = @{  }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles?page_size=PAGE_SIZE&page_token=PAGE_TOKEN" | Select-Object -Expand Content
Anda akan menerima kode status berhasil (2xx) beserta daftar RagFiles di bawah RAG_CORPUS_ID yang diberikan.

Python

Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk informasi selengkapnya, lihat Dokumentasi referensi 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")

files = rag.list_files(corpus_name=corpus_name)
for file in files:
    print(file.display_name)
    print(file.name)
# Example response:
# g-drive_file.txt
# projects/1234567890/locations/us-central1/ragCorpora/111111111111/ragFiles/222222222222
# g_cloud_file.txt
# projects/1234567890/locations/us-central1/ragCorpora/111111111111/ragFiles/333333333333

Menghapus file RAG

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Anda.
  • LOCATION: Region untuk memproses permintaan.
  • RAG_CORPUS_ID: ID resource RagCorpus.
  • RAG_FILE_ID: ID resource RagFile. Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}/ragFiles/{rag_file_id}.

Metode HTTP dan URL:

DELETE https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

curl -X DELETE \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID"

PowerShell

Jalankan perintah berikut:

$headers = @{  }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID" | Select-Object -Expand Content
Respons yang berhasil akan menampilkan resource DeleteOperationMetadata.

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.


from vertexai.preview import rag
import vertexai

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

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

rag.delete_file(name=file_name)
print(f"File {file_name} deleted.")
# Example response:
# Successfully deleted the RagFile.
# File projects/1234567890/locations/us-central1/ragCorpora/1111111111/ragFiles/2222222222 deleted.

Mengambil konteks

Saat pengguna mengajukan pertanyaan atau memberikan perintah, komponen pengambilan di RAG akan menelusuri pusat informasinya untuk menemukan informasi yang relevan dengan kueri.

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION: Region untuk memproses permintaan.
  • PROJECT_ID: Project ID Anda.
  • RAG_CORPUS_RESOURCE: Nama resource RagCorpus. Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • VECTOR_DISTANCE_THRESHOLD: Hanya konteks dengan jarak vektor yang lebih kecil dari nilai minimum yang ditampilkan.
  • TEXT: Teks kueri untuk mendapatkan konteks yang relevan.
  • SIMILARITY_TOP_K: Jumlah konteks teratas yang akan diambil.

Metode HTTP dan URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts

Isi JSON permintaan:

{
 "vertex_rag_store": {
    "rag_resources": {
      "rag_corpus": "RAG_CORPUS_RESOURCE",
    },
    "vector_distance_threshold": 0.8
  },
  "query": {
   "text": "TEXT",
   "similarity_top_k": SIMILARITY_TOP_K
  }
 }

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, lalu jalankan perintah berikut:

curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$headers = @{  }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts" | Select-Object -Expand Content
Anda akan menerima kode status berhasil (2xx) dan daftar RagFiles terkait.

Python

Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk informasi selengkapnya, lihat Dokumentasi referensi 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
)
print(response)
# Example response:
# contexts {
#   contexts {
#     source_uri: "gs://your-bucket-name/file.txt"
#     text: "....
#   ....

Membuat konten

Prediksi mengontrol metode LLM yang menghasilkan konten.

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Anda.
  • LOCATION: Region untuk memproses permintaan.
  • MODEL_ID: Model LLM untuk pembuatan konten. Contoh: gemini-1.5-pro-002
  • GENERATION_METHOD: Metode LLM untuk pembuatan konten. Opsi: generateContent, streamGenerateContent
  • INPUT_PROMPT: Teks yang dikirim ke LLM untuk pembuatan konten. Coba gunakan perintah yang relevan dengan File kain yang diupload.
  • RAG_CORPUS_RESOURCE: Nama resource RagCorpus. Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K: Opsional: Jumlah konteks teratas yang akan diambil.
  • VECTOR_DISTANCE_THRESHOLD: Opsional: Konteks dengan jarak vektor yang lebih kecil dari nilai minimum akan ditampilkan.

Metode HTTP dan URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD

Isi JSON permintaan:

{
 "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,
    "vector_distance_threshold": VECTOR_DISTANCE_THRESHOLD
   }
  }
 }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, lalu jalankan perintah berikut:

curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$headers = @{  }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD" | Select-Object -Expand Content
Respons yang berhasil akan menampilkan konten yang dihasilkan dengan kutipan.

Python

Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk informasi selengkapnya, lihat Dokumentasi referensi 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....
#   ...

Penelusuran campuran didukung dengan database Weaviate, yang menggabungkan kedua model dan kata kunci untuk meningkatkan relevansi hasil penelusuran. Selama pengambilan hasil penelusuran, kombinasi skor kesamaan dari vektor padat) dan pencocokan kata kunci (vektor renggang) menghasilkan vektor padat hasil pengujian tersebut.

Penelusuran campuran menggunakan API pengambilan RAG Engine

Ini adalah contoh cara mengaktifkan penelusuran campuran menggunakan API pengambilan Mesin RAG.

REST

Variabel berikut digunakan dalam contoh kode:

  • PROJECT_ID: Project ID Google Cloud Anda.
  • RAG_CORPUS_RESOURCE: Nama resource lengkap untuk korpus RAG Anda dalam format projects/*/locations/us-central1/ragCorpora/*.
  • DISTANCE_THRESHOLD: Nilai minimum yang ditetapkan untuk penelusuran vektor jarak dalam rentang [0, 1.0]. Nilai defaultnya ditetapkan ke 0.3.
  • ALPHA: Nilai alfa mengontrol bobot antar-semantik dan hasil penelusuran kata kunci. Rentangnya adalah [0, 1] dengan 0 adalah sparse penelusuran vektor dan 1 adalah penelusuran vektor padat. Nilai defaultnya adalah 0.5, yang menyeimbangkan penelusuran vektor jarang dan padat.
  • RETRIEVAL_QUERY: Kueri pengambilan Anda.
  • TOP_K: Jumlah hasil k teratas yang akan diambil.

Contoh ini menunjukkan cara memanggil metode HTTP di URL.

  POST https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1:retrieveContexts

Contoh kode ini menunjukkan cara menggunakan isi JSON permintaan.

  {
      "vertex_rag_store": {
        "rag_resources": {
            "rag_corpus": '\""${RAG_CORPUS_RESOURCE}"\"',
          },

        "vector_distance_threshold": ${DISTANCE_THRESHOLD}
      },
      "query": {
        "text": '\""${RETRIEVAL_QUERY}"\"',
        "similarity_top_k": ${TOP_K},
        "ranking": { "alpha" : ${ALPHA}}
      }
  }

Python

from vertexai.preview import rag
import vertexai

# TODO(developer): Update the variables.
# PROJECT_ID = "your-project-id"
# rag_corpus_id = "your-rag-corpus-id"
# Only one corpus is supported at this time

# 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=rag_corpus_id,
            # Optional: supply IDs from `rag.list_files()`.
            # rag_file_ids=["rag-file-1", "rag-file-2", ...],
        )
    ],
    text="What is RAG and why it is helpful?",
    similarity_top_k=10,  # Optional
    vector_distance_threshold=0.5,  # Optional
    ranking=rag.RagQuery.Ranking(
                alpha=0.5
    ),  # Optional
)
print(response)

Gunakan penelusuran hybrid dan RAG Engine untuk generasi yang tidak terhubung

Ini adalah contoh cara menggunakan penelusuran campuran dan RAG Engine untuk pembuatan yang beralasan.

REST

Variabel berikut digunakan dalam contoh kode:

  • PROJECT_ID: ID project Google Cloud Anda.
  • RAG_CORPUS_RESOURCE: Nama referensi lengkap korpus RAG Anda di dalam format projects/*/locations/us-central1/ragCorpora/*.
  • DISTANCE_THRESHOLD: Nilai minimum yang ditetapkan untuk penelusuran vektor jarak dalam rentang [0, 1.0]. Nilai default ditetapkan ke 0.3.
  • ALPHA: Nilai alfa mengontrol bobot antara hasil penelusuran kata kunci dan semantik. Rentangnya adalah [0, 1] dengan 0 adalah penelusuran vektor yang jarang dan 1 adalah penelusuran vektor yang rapat. Nilai defaultnya adalah 0.5, yang menyeimbangkan penelusuran vektor jarang dan padat.
  • INPUT_PROMPT: Perintah input Anda.
  • TOP_K: Jumlah hasil k teratas yang akan diambil.

Contoh ini menunjukkan cara memanggil metode HTTP di URL.

    POST https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/publishers/google/models/gemini-pro:generateContent

Contoh kode ini menunjukkan cara menggunakan isi JSON permintaan.

    {
      "contents": {
        "role": "user",
        "parts": {
          "text": '\""${INPUT_PROMPT}"\"'
        }
      },
      "tools": {
        "retrieval": {
          "vertex_rag_store": {
            "rag_resources": {
                "rag_corpus": '\""${RAG_CORPUS_RESOURCE}"\"',
              },
            "similarity_top_k": ${TOP_K},
            "vector_distance_threshold": ${DISTANCE_THRESHOLD},
            "ranking": { "alpha" : ${ALPHA}}
          }
        }
      }
    }

Python

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

# TODO(developer): Update the variables.
# PROJECT_ID = "your-project-id"
# rag_corpus_id = "your-rag-corpus-id" # Only one corpus is supported at this time

# 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=rag_corpus_id,  # Currently only 1 corpus is allowed.
                    # 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
            ranking=rag.RagQuery.Ranking(
                        alpha=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)

Langkah selanjutnya