Menggunakan model embedding dengan RAG Engine

Halaman ini menjelaskan pilihan model embedding dan menunjukkan cara menggunakan model embedding untuk membuat korpus RAG. Pengaitan antara model embedding dan korpus RAG tetap berlaku selama masa aktif korpus RAG Anda.

Pengantar embedding

Embedding adalah representasi numerik dari input. Anda dapat menggunakan embedding dalam aplikasi Anda untuk mengenali makna dan hubungan semantik yang kompleks serta untuk memproses dan menghasilkan bahasa.

Embedding berfungsi dengan mengonversi teks, gambar, dan video menjadi array bilangan floating point yang disebut vektor. Semakin dekat dua vektor dalam ruang embedding-nya, semakin besar kemiripan inputnya.

Model embedding adalah komponen penting dari sistem pengambilan semantik. Performa sistem pengambilan bergantung pada seberapa baik model embedding memetakan hubungan dalam data Anda.

Pilihan model embedding

RAG Engine mengimplementasikan retrieval-augmented generation (RAG), dan menawarkan pilihan model embedding berikut untuk digunakan dalam korpus RAG:

Jenis model embedding Deskripsi
Model embedding teks Gemini Enterprise Agent Platform Model yang dilatih oleh penayang, seperti Google. Model ini dilatih dengan set data teks yang besar, dan memberikan dasar pengukuran yang kuat untuk banyak tugas.
Model embedding teks Agent Platform yang telah disesuaikan Model embedding teks Agent Platform disesuaikan untuk memiliki pengetahuan khusus atau performa yang sangat disesuaikan.
Model embedding OSS Model embedding open source pihak ketiga dalam varian khusus bahasa Inggris dan multibahasa.

Model embedding yang didukung

Model embedding digunakan untuk membuat korpus dan digunakan untuk penelusuran dan pengambilan selama pembuatan respons. Bagian ini mencantumkan model embedding yang didukung.

Versi model Deskripsi
text-embedding-005 Model embedding default.

Direkomendasikan untuk digunakan dengan korpus RAG.

text-embedding-004 text-embedding-004 diakses langsung melalui embedding API dan tidak tersedia di Model Garden.
text-multilingual-embedding-002 Direkomendasikan untuk digunakan dengan korpus RAG.

Model embedding open source

Model embedding terbuka berikut juga didukung. Anda dapat menemukannya di Model Garden.

  • e5-base-v2
  • e5-large-v2
  • e5-small-v2
  • multilingual-e5-large
  • multilingual-e5-small

Menggunakan model embedding teks Agent Platform

API embedding teks Agent Platform mendukung beberapa model embedding, yang menghasilkan vektor embedding padat dengan 768 dimensi. Embedding padat menyimpan makna teks, tidak seperti vektor renggang, yang cenderung memetakan kata langsung ke angka. Manfaat menggunakan embedding vektor rapat dalam AI generatif adalah, alih-alih menelusuri kecocokan kata atau sintaksis langsung, Anda dapat menelusuri bagian yang sesuai dengan makna kueri dengan lebih baik, meskipun bagian tersebut tidak menggunakan bahasa yang sama.

Untuk mengetahui daftar model yang didukung, lihat Model embedding.

Model Gecko

Model Gecko tersedia dalam versi khusus bahasa Inggris dan multibahasa. Tidak seperti model Gecko yang telah disesuaikan, model Gecko penayang tidak perlu di-deploy, sehingga menjadikannya kumpulan model yang lebih disukai untuk digunakan dengan RAG Engine.

Untuk mengidentifikasi model embedding default yang digunakan atau jika Anda memerlukan daftar model Gecko yang direkomendasikan untuk digunakan dengan korpus RAG, lihat Model embedding yang didukung.

Saat model Gecko dihentikan

Model Gecko penayang mungkin dihentikan. Jika hal itu terjadi, model Gecko penayang tidak dapat digunakan dengan RAG Engine, bahkan untuk korpus RAG yang dibuat sebelum penghentian. Jika model Gecko Anda dihentikan, Anda harus memigrasikan korpus RAG, yang berarti Anda membuat korpus RAG baru dan mengimpor ulang data. Alternatifnya adalah menggunakan model Gecko yang telah disesuaikan atau model embedding OSS yang di-deploy sendiri, yang didukung setelah model dihentikan.

Membuat korpus RAG dengan model Gecko penayang

Contoh kode ini menunjukkan cara membuat korpus RAG dengan model Gecko penayang.

curl

  ENDPOINT=us-central1-aiplatform.googleapis.com
  PROJECT_ID=YOUR_PROJECT_ID

  // Set this to your choice of publisher Gecko model. Note that the full resource name of the publisher model is required.
  // Example: projects/${PROJECT_ID}/locations/us-central1/publishers/google/models/text-embedding-004
  ENDPOINT_NAME=YOUR_ENDPOINT_NAME

  // Set a display name for your corpus.
  // For example, "my test corpus"
  CORPUS_DISPLAY_NAME=YOUR_CORPUS_DISPLAY_NAME

  // CreateRagCorpus
  // Input: ENDPOINT, PROJECT_ID, ENDPOINT_NAME, CORPUS_DISPLAY_NAME
  curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
  -d '{
        "display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
        "rag_embedding_model_config" : {
              "vertex_prediction_endpoint": {
                    "endpoint": '\""${ENDPOINT_NAME}"\"'
              }
        }
  }'

Agent Platform SDK untuk Python

  import vertexai
  from vertexai import rag

  # Set Project
  PROJECT_ID = "YOUR_PROJECT_ID"
  vertexai.init(project=${PROJECT_ID}, location="us-central1")

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

  # Name your corpus
  DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"

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

Menggunakan model embedding teks Agent Platform yang telah disesuaikan

Meskipun model penayang dasar dilatih dengan set data teks yang besar dan memberikan dasar pengukuran yang kuat untuk banyak tugas, mungkin ada skenario saat Anda mungkin memerlukan model untuk memiliki pengetahuan khusus atau performa yang sangat disesuaikan. Dalam kasus tersebut, penyesuaian model memungkinkan Anda menyesuaikan representasi model menggunakan data yang relevan. Manfaat tambahan dari pendekatan ini adalah saat model disesuaikan, gambar yang dihasilkan akan menjadi milik Anda dan tidak terpengaruh oleh penghentian penggunaan model Gecko. Semua model embedding Gecko yang telah disesuaikan menghasilkan embedding dengan vektor 768 dimensi. Untuk mempelajari lebih lanjut model ini, lihat Mendapatkan embedding teks.

Untuk mengetahui informasi selengkapnya tentang cara menyesuaikan model embedding, lihat Menyesuaikan embedding teks.

Contoh kode ini menunjukkan cara membuat korpus RAG dengan model Gecko yang telah di-deploy dan disesuaikan.

curl

  ENDPOINT=us-central1-aiplatform.googleapis.com
  PROJECT_ID=YOUR_PROJECT_ID

  // Your Agent Platform endpoint resource with the deployed fine-tuned Gecko model
  // Example: projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT_ID}
  ENDPOINT_NAME=YOUR_ENDPOINT_NAME

  // Set a display name for your corpus.
  // For example, "my test corpus"
  CORPUS_DISPLAY_NAME=YOUR_CORPUS_DISPLAY_NAME

  // CreateRagCorpus
  // Input: ENDPOINT, PROJECT_ID, ENDPOINT_NAME, CORPUS_DISPLAY_NAME
  curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
  -d '{
        "display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
        "rag_embedding_model_config" : {
                "vertex_prediction_endpoint": {
                      "endpoint": '\""${ENDPOINT_NAME}"\"'
                }
        }
    }'

Agent Platform SDK untuk Python

  import vertexai
  from vertexai import rag

  # Set Project
  PROJECT_ID = "YOUR_PROJECT_ID"
  vertexai.init(project=${PROJECT_ID}, location="us-central1")

  # Your Vertex Endpoint resource with the deployed fine-tuned Gecko model
  ENDPOINT_ID = "YOUR_MODEL_ENDPOINT_ID"
  MODEL_ENDPOINT = "projects/${PROJECT_ID}/locations/us-central1/endpoints/${ENDPOINT_ID}"

  embedding_model_config = rag.RagEmbeddingModelConfig(
      endpoint=${MODEL_ENDPOINT},
  )

  # Name your corpus
  DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"

  rag_corpus = rag.create_corpus(
      display_name=${DISPLAY_NAME}, rag_embedding_model_config=embedding_model_config
  )

Menggunakan model embedding OSS

RAG Engine mendukung model embedding open source pihak ketiga dalam varian khusus bahasa Inggris dan multibahasa. Tabel ini mencantumkan model E5 yang didukung.

Versi model Model dasar Parameter dimensi embedding Khusus bahasa Inggris
e5-base-v2 MiniLM 109 JT 768 ✔
e5-large-v2 MiniLM 335 JT 1.024 ✔
e5-small-v2 MiniLM 33 JT 384 ✔
multilingual-e5-large xlm-roberta-large 560 JT 1.024 ✗
multilingual-e5-small microsoft/Multilingual-MiniLM-L12-H384 118 JT 384 ✗

Untuk menggunakan model E5 dengan RAG Engine, model E5 harus di-deploy dari Model Garden. Untuk men-deploy model E5, lihat Embedding Teks E5 di konsol Google Cloud .

Contoh kode ini menunjukkan cara membuat korpus RAG dengan model E5 yang di-deploy.

curl

  ENDPOINT=us-central1-aiplatform.googleapis.com
  PROJECT_ID=YOUR_PROJECT_ID

  // Your Vertex Endpoint resource with the deployed E5 model
  // Example: projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT_ID}
  ENDPOINT_NAME=YOUR_ENDPOINT_NAME

  // Set a display name for your corpus.
  // For example, "my test corpus"
  CORPUS_DISPLAY_NAME=YOUR_CORPUS_DISPLAY_NAME

  // CreateRagCorpus
  // Input: ENDPOINT, PROJECT_ID, ENDPOINT_NAME, CORPUS_DISPLAY_NAME
  curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
  -d '{
        "display_name" : '\""${CORPUS_DISPLAY_NAME</var>}"\"',
        "rag_embedding_model_config" : {
                "vertex_prediction_endpoint": {
                      "endpoint": '\""${ENDPOINT_NAME}"\"'
                }
        }
    }'

Agent Platform SDK untuk Python

  import vertexai
  from vertexai import rag

  # Set Project
  PROJECT_ID = "YOUR_PROJECT_ID"
  vertexai.init(project=PROJECT_ID, location="us-central1")

  # Your Vertex Endpoint resource with the deployed E5 model
  ENDPOINT_ID = "YOUR_MODEL_ENDPOINT_ID"
  MODEL_ENDPOINT = "projects/{PROJECT_ID}/locations/us-central1/endpoints/{ENDPOINT_ID}"

  embedding_model_config = rag.RagEmbeddingModelConfig(
      endpoint=MODEL_ENDPOINT,
  )

  # Name your corpus
  DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"

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

Langkah berikutnya