Halaman ini menjelaskan pemeringkatan ulang dan menunjukkan cara menggunakan API untuk memeringkat ulang respons yang diambil.
Pembuatan peringkat ulang pasca-pengambilan adalah teknik yang meningkatkan relevansi hasil pengambilan. Mesin RAG Vertex AI menawarkan pemeringkat ulang opsional yang meningkatkan relevansi hasil yang diambil selama kueri. Reranker menilai relevansi bagian dari kueri dan mengurutkan ulang hasilnya. Urutan baru mengarah ke respons yang lebih sesuai sebagai respons terhadap kueri atau dapat disertakan dalam perintah untuk inferensi model guna menghasilkan respons yang lebih relevan dan akurat.
Reranker yang Tersedia
Bagian ini membahas jenis pemeringkat ulang.
Reranker LLM
Reranker LLM adalah reranker yang menggunakan LLM untuk menilai relevansi bagian dengan kueri dan mengurutkan ulang hasil yang sesuai, sehingga menghasilkan respons yang lebih sesuai atau perintah yang ditingkatkan untuk inferensi model.
Pengurut ulang layanan peringkat Vertex AI
Reranker layanan peringkat didasarkan pada API peringkat yang mengambil daftar dokumen dan mengurutkan ulang dokumen tersebut berdasarkan relevansi dokumen dengan kueri. Dibandingkan dengan penyematan, yang hanya melihat kemiripan semantik dokumen dan kueri, hal ini dapat memberi Anda skor yang akurat tentang seberapa baik dokumen menjawab kueri tertentu.
Cara menggunakan pemeringkat ulang
Bagian ini menyajikan prasyarat dan contoh kode untuk menggunakan pemeringkat ulang.
Prasyarat untuk menggunakan pemeringkat ulang LLM
Reranker LLM hanya mendukung model Gemini, yang dapat diakses saat RAG API diaktifkan. Untuk melihat daftar model yang didukung, lihat model Gemini.
Mengambil konteks yang relevan menggunakan RAG API
Contoh kode ini menunjukkan cara mengambil konteks yang relevan menggunakan RAG API.
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 pemeringkatan ulang.
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",
"rag_retrieval_config": {
"top_k": 10,
"ranking": {
"llm_ranker": {
"model_name": "MODEL_NAME"
}
}
}
}
}'
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.
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 pemeringkatan ulang.
from vertexai.preview import rag
import vertexai
PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/[PROJECT_ID]/locations/LOCATION/ragCorpora/[RAG_CORPUS_ID]"
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: "....
# ....
Membuat konten menggunakan RAG API
REST
Untuk membuat konten menggunakan model Gemini, lakukan panggilan ke
Vertex AI GenerateContent
API. Dengan menentukan
RAG_CORPUS_RESOURCE
dalam permintaan, model akan otomatis mengambil data
dari Penelusuran Vertex AI.
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.
Opsi adalah
generateContent
danstreamGenerateContent
. - INPUT_PROMPT: Teks yang dikirim ke LLM untuk pembuatan konten. 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.
- MODEL_NAME: Nama model yang digunakan untuk pemeringkatan ulang.
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"
},
"rag_retrieval_config": {
"top_k": 10,
"ranking": {
"llm_ranker": {
"model_name": "MODEL_NAME"
}
}
}
}
}
}
}'
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.
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.
Opsi adalah
generateContent
danstreamGenerateContent
. - INPUT_PROMPT: Teks yang dikirim ke LLM untuk pembuatan konten. 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.
- MODEL_NAME: Nama model yang digunakan untuk pemeringkatan ulang.
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"
MODEL_NAME= "MODEL_NAME"
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")
config = vertexai.preview.rag.RagRetrievalConfig(
top_k=10,
ranking=rag.Ranking(
llm_ranker=rag.LlmRanker(
model_name=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("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....
# ...
Prasyarat reranker layanan peringkat Vertex
Untuk menggunakan reranker layanan peringkat Vertex AI, Discovery Engine API harus diaktifkan.
Mengambil konteks yang relevan menggunakan RAG API
Setelah Anda membuat korpus RAG, konteks yang relevan dapat diambil dari
Vertex AI Search melalui RetrieveContexts
API.
Contoh kode ini menunjukkan cara menggunakan API untuk mengambil konteks dari Vertex AI Search.
REST
Ganti variabel berikut yang digunakan dalam kode contoh:
- PROJECT_ID: ID project Google Cloud Anda.
- LOCATION: Region untuk memproses permintaan Anda.
- 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 pemeringkatan ulang.
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",
"rag_retrieval_config": {
"top_k": 5,
"ranking": {
"rank_service": {
"model_name": "MODEL_NAME"
}
}
}
}
}'
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.
Ganti variabel berikut yang digunakan dalam kode contoh:
- PROJECT_ID: ID project Google Cloud Anda.
- LOCATION: Region untuk memproses permintaan Anda.
- 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 pemeringkatan ulang.
from vertexai.preview 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(
rank_service=rag.RankService(
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: "....
# ....
Membuat konten menggunakan RAG API
REST
Untuk membuat konten menggunakan model Gemini, lakukan panggilan ke
Vertex AI GenerateContent
API. Dengan menentukan
RAG_CORPUS_RESOURCE
dalam permintaan, model akan otomatis mengambil data
dari Penelusuran Vertex AI.
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.
Opsi mencakup
generateContent
danstreamGenerateContent
. - INPUT_PROMPT: Teks yang dikirim ke LLM untuk pembuatan konten. 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.
- MODEL_NAME: Nama model yang digunakan untuk pemeringkatan ulang.
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"
},
"rag_retrieval_config": {
"top_k": 10,
"ranking": {
"rank_service": {
"model_name": "MODEL_NAME"
}
}
}
}
}
}
}'
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.
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.
Opsi mencakup
generateContent
danstreamGenerateContent
. - INPUT_PROMPT: Teks yang dikirim ke LLM untuk pembuatan konten. 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.
- MODEL_NAME: Nama model yang digunakan untuk pemeringkatan ulang.
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")
config = vertexai.preview.rag.RagRetrievalConfig(
top_k=10,
ranking=rag.Ranking(
rank_service=rag.RankService(
model_name=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....
# ...