Retrieval-augmented generation (RAG) adalah teknik yang digunakan untuk mengambil dan memberikan informasi yang relevan kepada LLM untuk menghasilkan respons yang dapat diverifikasi. Informasi dapat mencakup informasi baru, topik dan konteks, atau kebenaran dasar.
Halaman ini menunjukkan cara menggunakan Vertex AI RAG Engine 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 Korpus RAG, lihat Contoh API pengimporan 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 SDK AI 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 Vertex AI RAG Engine sebagai penyimpanan konteks
Anda dapat menggunakan Vertex AI RAG Engine sebagai penyimpanan konteks untuk Gemini Live API guna menyimpan konteks sesi untuk membentuk dan mengambil konteks sebelumnya 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.
Mesin RAG Vertex AI 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 jenis MemoryCorpus
. Anda juga harus menentukan parser LLM dalam konfigurasi korpus memori yang digunakan untuk mengurai konteks sesi yang disimpan dari Live API untuk membangun memori 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
)
)
),
)
Tentukan korpus memori Anda 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 Vertex AI RAG Engine lebih lanjut, lihat Ringkasan Vertex AI RAG Engine.
- Untuk mempelajari RAG API lebih lanjut, lihat Vertex AI RAG Engine API.
- Untuk mengelola korpora RAG Anda, lihat Pengelolaan korpora.
- Untuk mengelola file RAG Anda, lihat Pengelolaan file.
- Untuk mempelajari cara menggunakan Vertex AI SDK guna menjalankan tugas Vertex AI RAG Engine, lihat Mulai cepat RAG untuk Python.