Retrieval-augmented generation (RAG) adalah teknik yang digunakan untuk mengambil dan memberikan informasi yang relevan ke LLM untuk menghasilkan respons yang dapat diverifikasi. Informasi ini dapat mencakup informasi terbaru, topik dan konteks, atau kebenaran dasar.
Halaman ini menunjukkan cara menggunakan Mesin RAG Vertex AI dengan Gemini Live API, yang memungkinkan Anda menentukan dan mengambil informasi dari korpus RAG.
Prasyarat
Prasyarat berikut harus diselesaikan sebelum Anda dapat menggunakan Vertex AI RAG Engine dengan Live API multimodal:
Aktifkan RAG API di Vertex AI.
Untuk mengupload file ke RAG Corpus, lihat Contoh API impor file RAG.
Siapkan
Anda dapat menggunakan Vertex AI RAG Engine dengan Live API dengan menentukan Vertex AI RAG Engine sebagai alat. Contoh kode berikut menunjukkan cara menentukan Vertex AI RAG Engine sebagai alat:
Ganti variabel berikut:
- YOUR_PROJECT_ID: ID project Google Cloud Anda.
- YOUR_CORPUS_ID: ID korpus Anda.
- YOUR_LOCATION: Region untuk memproses permintaan.
PROJECT_ID = "YOUR_PROJECT_ID"
RAG_CORPUS_ID = "YOUR_CORPUS_ID"
LOCATION = "YOUR_LOCATION"
TOOLS = {
"retrieval": {
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": "projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora/${RAG_CORPUS_ID}"
}
}
}
Menggunakan Websocket
untuk komunikasi real-time
Untuk mengaktifkan komunikasi real-time antara klien dan server, Anda harus menggunakan
Websocket
. Contoh kode ini menunjukkan cara menggunakan Websocket
menggunakan
Python API dan Python SDK.
Python API
CONFIG = {"response_modalities": ["TEXT"], "speech_config": { "language_code": "en-US" }}
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {bearer_token[0]}",
}
HOST= "${LOCATION}-aiplatform.googleapis.com"
SERVICE_URL = f"wss://{HOST}/ws/google.cloud.aiplatform.v1beta1.LlmBidiService/BidiGenerateContent"
MODEL="gemini-2.0-flash-exp"
# Connect to the server
async with connect(SERVICE_URL, additional_headers=headers) as ws:
# Setup the session
await ws.send(
json.dumps(
{
"setup": {
"model": MODEL,
"generation_config": CONFIG,
# Setup RAG as a retrieval tool
"tools": TOOLS,
}
}
)
)
# Receive setup response
raw_response = await ws.recv(decode=False)
setup_response = json.loads(raw_response.decode("ascii"))
# Send text message
text_input = "What are popular LLMs?"
display(Markdown(f"**Input:** {text_input}"))
msg = {
"client_content": {
"turns": [{"role": "user", "parts": [{"text": text_input}]}],
"turn_complete": True,
}
}
await ws.send(json.dumps(msg))
responses = []
# Receive chunks of server response
async for raw_response in ws:
response = json.loads(raw_response.decode())
server_content = response.pop("serverContent", None)
if server_content is None:
break
model_turn = server_content.pop("modelTurn", None)
if model_turn is not None:
parts = model_turn.pop("parts", None)
if parts is not None:
display(Markdown(f"**parts >** {parts}"))
responses.append(parts[0]["text"])
# End of turn
turn_complete = server_content.pop("turnComplete", None)
if turn_complete:
grounding_metadata = server_content.pop("groundingMetadata", None)
if grounding_metadata is not None:
grounding_chunks = grounding_metadata.pop("groundingChunks", None)
if grounding_chunks is not None:
for chunk in grounding_chunks:
display(Markdown(f"**grounding_chunk >** {chunk}"))
break
# Print the server response
display(Markdown(f"**Response >** {''.join(responses)}"))
Python SDK
Untuk mempelajari cara menginstal AI SDK generatif, lihat Menginstal library:
from google import genai
from google.genai import types
from google.genai.types import (Content, LiveConnectConfig, HttpOptions, Modality, Part,)
from IPython import display
MODEL="gemini-2.0-flash-exp"
client = genai.Client(
vertexai=True,
project=PROJECT_ID,
location=LOCATION
)
async with client.aio.live.connect(
model=MODEL,
config=LiveConnectConfig(response_modalities=[Modality.TEXT],
tools=TOOLS),
) as session:
text_input = "\'What are core LLM techniques?\'"
print("> ", text_input, "\n")
await session.send_client_content(
turns=Content(role="user", parts=[Part(text=text_input)])
)
async for message in session.receive()
if message.text:
display.display(display.Markdown(message.text))
continue
Menggunakan Mesin RAG Vertex AI sebagai penyimpanan konteks
Anda dapat menggunakan Mesin RAG Vertex AI sebagai penyimpanan konteks untuk Gemini Live API guna menyimpan konteks sesi untuk membentuk dan mengambil konteks terdahulu yang terkait dengan percakapan Anda dan memperkaya konteks saat ini untuk pembuatan model. Anda juga dapat memanfaatkan fitur ini untuk membagikan konteks di berbagai sesi Live API.
Vertex AI RAG Engine mendukung penyimpanan dan pengindeksan bentuk data berikut dari konteks sesi:
- Teks
- Ucapan audio
Membuat korpus jenis MemoryCorpus
Untuk menyimpan dan mengindeks teks percakapan dari konteks sesi, Anda harus membuat
korpus RAG dari jenis MemoryCorpus
. Anda juga harus menentukan parser LLM dalam
konfigurasi korpus memori yang digunakan untuk menguraikan konteks sesi yang disimpan
dari Live API untuk membuat memori untuk pengindeksan.
Contoh kode ini menunjukkan cara membuat korpus. Namun, ganti variabel dengan nilai terlebih dahulu.
# Currently supports Google first-party embedding models
EMBEDDING_MODEL = YOUR_EMBEDDING_MODEL # Such as "publishers/google/models/text-embedding-005"
MEMORY_CORPUS_DISPLAY_NAME = YOUR_MEMORY_CORPUS_DISPLAY_NAME
LLM_PARSER_MODEL_NAME = YOUR_LLM_PARSER_MODEL_NAME # Such as "projects/{project_id}/locations/{location}/publishers/google/models/gemini-2.5-pro-preview-05-06"
memory_corpus = rag.create_corpus(
display_name=MEMORY_CORPUS_DISPLAY_NAME,
corpus_type_config=rag.RagCorpusTypeConfig(
corpus_type_config=rag.MemoryCorpus(
llm_parser=rag.LlmParserConfig(
model_name=LLM_PARSER_MODEL_NAME,
)
)
),
backend_config=rag.RagVectorDbConfig(
rag_embedding_model_config=rag.RagEmbeddingModelConfig(
vertex_prediction_endpoint=rag.VertexPredictionEndpoint(
publisher_model=EMBEDDING_MODEL
)
)
),
)
Menentukan korpus memori untuk menyimpan konteks
Saat menggunakan korpus memori dengan Live API, Anda harus menentukan korpus
memori sebagai alat pengambilan, lalu menetapkan store_context
ke true
untuk mengizinkan
Live API menyimpan konteks sesi.
Contoh kode ini menunjukkan cara menentukan korpus memori untuk menyimpan konteks. Namun, ganti variabel dengan nilai terlebih dahulu.
from google import genai
from google.genai import types
from google.genai.types import (Content, LiveConnectConfig, HttpOptions, Modality, Part)
from IPython import display
PROJECT_ID=YOUR_PROJECT_ID
LOCATION=YOUR_LOCATION
TEXT_INPUT=YOUR_TEXT_INPUT
MODEL_NAME=YOUR_MODEL_NAME # Such as "gemini-2.0-flash-exp"
client = genai.Client(
vertexai=True,
project=PROJECT_ID,
location=LOCATION,
)
memory_store=types.VertexRagStore(
rag_resources=[
types.VertexRagStoreRagResource(
rag_corpus=memory_corpus.name
)
],
store_context=True
)
async with client.aio.live.connect(
model=MODEL_NAME,
config=LiveConnectConfig(response_modalities=[Modality.TEXT],
tools=[types.Tool(
retrieval=types.Retrieval(
vertex_rag_store=memory_store))]),
) as session:
text_input=TEXT_INPUT
await session.send_client_content(
turns=Content(role="user", parts=[Part(text=text_input)])
)
async for message in session.receive():
if message.text:
display.display(display.Markdown(message.text))
continue
Langkah berikutnya
- Untuk mempelajari Mesin RAG Vertex AI lebih lanjut, lihat ringkasan Mesin RAG Vertex AI.
- Untuk mempelajari RAG API lebih lanjut, lihat Vertex AI RAG Engine API.
- Untuk mengelola korpus RAG, lihat Pengelolaan korpus.
- Untuk mengelola file RAG, lihat Pengelolaan file.
- Untuk mempelajari cara menggunakan Vertex AI SDK guna menjalankan tugas Vertex AI RAG Engine, lihat Panduan memulai RAG untuk Python.