Pembuatan peringkat ulang untuk Mesin RAG Vertex AI

Halaman ini menjelaskan pengurutan ulang dan jenis pengurutan. Halaman ini juga menunjukkan cara menggunakan Vertex AI ranking API untuk mengurutkan ulang respons yang diambil.

Pengubah peringkat yang tersedia

Opsi penentu peringkat Deskripsi Latensi Akurasi Harga
Vertex AI ranking API Vertex AI Ranking API adalah pemeringkat ulang semantik mandiri yang dirancang untuk pemberian skor relevansi yang sangat presisi dan latensi rendah.

Untuk mengetahui informasi selengkapnya tentang Vertex AI Ranking API, lihat Meningkatkan kualitas penelusuran dan RAG dengan Ranking API.
Sangat rendah (kurang dari 100 milidetik) Performa yang canggih Per permintaan Vertex AI RAG Engine
Pengubah peringkat LLM Pengubah peringkat LLM menggunakan panggilan terpisah ke Gemini untuk menilai relevansi potongan dengan kueri. Tinggi (1 hingga 2 detik) Bergantung pada model Harga token LLM

Menggunakan Vertex AI ranking API

Untuk menggunakan Vertex AI ranking API, Anda harus mengaktifkan Discovery Engine API. Semua model yang didukung dapat ditemukan di Meningkatkan kualitas penelusuran dan RAG dengan API peringkat.

Contoh kode ini menunjukkan cara mengaktifkan pengurutan ulang dengan Vertex AI ranking API dalam konfigurasi alat.

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_NAME: Model LLM untuk pembuatan konten. Contohnya, gemini-2.0-flash.
  • INPUT_PROMPT: Teks yang dikirim ke LLM untuk pembuatan konten.
  • 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.
  • RANKER_MODEL_NAME: Nama model yang digunakan untuk penyusunan ulang peringkat. Misalnya, semantic-ranker-default@latest.
from vertexai import rag
from vertexai.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")

config = rag.RagRetrievalConfig(
    top_k=10,
    ranking=rag.Ranking(
        rank_service=rag.RankService(
            model_name=RANKER_MODEL_NAME
        )
    )
)

rag_retrieval_tool = Tool.from_retrieval(
    retrieval=rag.Retrieval(
        source=rag.VertexRagStore(
            rag_resources=[
                rag.RagResource(
                    rag_corpus=CORPUS_NAME,
                )
            ],
            rag_retrieval_config=config
        ),
    )
)

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

REST

Untuk membuat konten menggunakan model Gemini, lakukan panggilan ke Vertex AI GenerateContent API. Dengan menentukan RAG_CORPUS_RESOURCE saat Anda membuat permintaan, model akan otomatis mengambil data dari Vertex AI RAG Engine.

Ganti variabel berikut yang digunakan dalam kode contoh:

  • PROJECT_ID: ID project Google Cloud Anda.
  • LOCATION: Region untuk memproses permintaan.
  • MODEL_NAME: Model LLM untuk pembuatan konten. Contohnya, gemini-2.0-flash.
  • GENERATION_METHOD: Metode LLM untuk pembuatan konten. Opsinya meliputi generateContent dan streamGenerateContent.
  • INPUT_PROMPT: Teks yang dikirim ke LLM untuk pembuatan konten.
  • 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.
  • RANKER_MODEL_NAME: Nama model yang digunakan untuk penyusunan ulang peringkat. Misalnya, semantic-ranker-default@latest.
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_NAME: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"
          },
        "rag_retrieval_config": {
          "top_k": SIMILARITY_TOP_K,
          "ranking": {
            "rank_service": {
              "model_name": "RANKER_MODEL_NAME"
            }
          }
        }
      }
    }
  }
}'

Menggunakan pengurutan ulang LLM di Vertex AI RAG Engine

Bagian ini menyajikan prasyarat dan contoh kode untuk menggunakan LLM pengubah peringkat.

Pengurut ulang LLM hanya mendukung model Gemini, yang dapat diakses saat Vertex AI RAG Engine API diaktifkan. Untuk melihat daftar model yang didukung, lihat Model Gemini.

Untuk mengambil konteks yang relevan menggunakan Vertex AI RAG Engine API, lakukan hal berikut:

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.
  • MODEL_NAME: Nama model yang digunakan untuk menyusun ulang peringkat.
from vertexai import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/[PROJECT_ID]/locations/LOCATION/ragCorpora/RAG_CORPUS_RESOURCE"
MODEL_NAME= "MODEL_NAME"

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

rag_retrieval_config = rag.RagRetrievalConfig(
    top_k=10,
    ranking=rag.Ranking(
        llm_ranker=rag.LlmRanker(
            model_name=MODEL_NAME
        )
    )
)

response = rag.retrieval_query(
    rag_resources=[
        rag.RagResource(
            rag_corpus=CORPUS_NAME,
        )
    ],
    text="TEXT",
    rag_retrieval_config=rag_retrieval_config,
)
print(response)
# Example response:
# contexts {
#   contexts {
#     source_uri: "gs://your-bucket-name/file.txt"
#     text: "....
#   ....

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.
  • MODEL_NAME: Nama model yang digunakan untuk menyusun ulang peringkat.
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",
      "rag_retrieval_config": {
        "top_k": 10,
        "ranking": {
          "llm_ranker": {
            "model_name": "MODEL_NAME"
          }
        }
      }
    }
  }'

Langkah berikutnya