Bedrock Knowledge Bases
Knowledge Bases mengurus chunking, embedding, penyimpanan vektor, dan retrieval. Ini komponen terbesar Domain 1 ujian AIP-C01 — dan yang paling sering dipakai di aplikasi nyata.
Intisari
- Dua bentuk: Managed (AWS mengurus semuanya) dan Customer-managed (kamu mengelola vector store sendiri).
- Managed KB direkomendasikan AWS: ingest multi-modal, auto-scaling penyimpanan, dan agentic retrieval multi-hop.
- Sumber data: S3, SharePoint, Confluence, Google Drive, OneDrive, dan web crawler.
- Managed KB terintegrasi dengan AgentCore Gateway, sehingga framework agent apa pun yang berbicara MCP bisa memakainya sebagai tool.
- Dua operasi runtime:
Retrieve(potongan saja) danRetrieveAndGenerate(potongan + jawaban jadi).
Apa yang digantikan
Di learn-python kamu membangun RAG manual: baca dokumen, potong jadi chunk, buat embedding,
simpan ke ChromaDB, cari yang mirip, susun prompt. Knowledge Bases mengambil alih seluruh rantai itu.
| Langkah RAG | Kalau manual | Dengan Knowledge Bases |
|---|---|---|
| Membaca berkas | Parser PDF/DOCX sendiri | Smart parsing bawaan |
| Chunking | Kode sendiri | Konfigurasi |
| Embedding | Panggil model per chunk | Otomatis |
| Menyimpan vektor | Kelola sendiri | Otomatis (atau vector store pilihanmu) |
| Menjaga tetap segar | Pipeline sinkronisasi sendiri | Job ingest, bisa dijadwalkan |
| Retrieval | Query vektor manual | Retrieve |
| Sitasi | Lacak sendiri | Ada di respons |
Managed atau customer-managed?
| Managed Knowledge Base | Customer-managed | |
|---|---|---|
| Vector store | Dikelola AWS, auto-scaling | Milikmu: OpenSearch Serverless, Aurora, Neptune |
| Parsing & chunking | Smart parsing per jenis dokumen | Kamu yang mengonfigurasi |
| Retrieval agentik multi-hop | Ada | Tidak |
| Filter izin per dokumen (ACL) | Ada, saat retrieval | Kamu bangun sendiri |
| Integrasi AgentCore Gateway | Native — jadi tool MCP tanpa kode | Manual |
| Kendali penuh atas indeks | Terbatas | Penuh |
Mulai dari Managed. Pindah ke customer-managed kalau kamu butuh kendali penuh atas indeks, punya vector store yang sudah ada, atau perlu konfigurasi penyimpanan yang tidak diekspos Managed KB.
Anatomi
Sumber data (S3, SharePoint, Confluence, …)
│ job ingest
▼
Parsing ──▶ Chunking ──▶ Embedding ──▶ Vector store
│
Pertanyaan ──▶ embedding ──▶ pencarian ──▶ potongan relevan
│
├─ Retrieve → potongan + sitasi
└─ RetrieveAndGenerate → jawaban jadi + sitasi
Dua operasi runtime
import boto3
agen = boto3.client("bedrock-agent-runtime", region_name="us-east-1")
# 1) Retrieve — hanya mengambil potongan. Kamu yang menyusun prompt.
hasil = agen.retrieve(
knowledgeBaseId=KB_ID,
retrievalQuery={"text": "Bagaimana kebijakan cuti tahunan?"},
retrievalConfiguration={"vectorSearchConfiguration": {"numberOfResults": 5}},
)
for potongan in hasil["retrievalResults"]:
print(potongan["score"], potongan["content"]["text"][:80])
print(" sumber:", potongan["location"])
# 2) RetrieveAndGenerate — sekaligus menjawab
jawab = agen.retrieve_and_generate(
input={"text": "Bagaimana kebijakan cuti tahunan?"},
retrieveAndGenerateConfiguration={
"type": "KNOWLEDGE_BASE",
"knowledgeBaseConfiguration": {
"knowledgeBaseId": KB_ID,
"modelArn": f"arn:aws:bedrock:us-east-1::foundation-model/{MODEL_ID}",
},
},
)
print(jawab["output"]["text"])
for sitasi in jawab["citations"]:
for ref in sitasi["retrievedReferences"]:
print(" ←", ref["location"])
Kapan memilih yang mana. RetrieveAndGenerate paling cepat untuk sampai ke prototipe.
Retrieve memberi kendali penuh: kamu bisa menyaring potongan, menggabungkannya dengan konteks lain,
memakai system prompt sendiri, atau memberikannya sebagai hasil tool ke agent. Untuk aplikasi
sungguhan, Retrieve hampir selalu lebih tepat.
Menjaga data tetap segar
Knowledge base tidak memperbarui dirinya sendiri. Setiap perubahan pada sumber data butuh job ingest:
agent = boto3.client("bedrock-agent")
agent.start_ingestion_job(knowledgeBaseId=KB_ID, dataSourceId=DS_ID)
Dua pola menjalankannya, dan keduanya sudah kamu pelajari di Fase 1: EventBridge Scheduler untuk sinkronisasi berkala, atau event S3 untuk memicu ingest begitu dokumen baru diunggah. Job inkremental hanya memproses yang berubah, jadi menjalankannya sering itu murah.
Izin yang dibutuhkan
| Siapa | Izin |
|---|---|
| Role knowledge base | Baca bucket S3, panggil model embedding, tulis ke vector store |
| Aplikasi | bedrock:Retrieve — hanya baca |
| Pipeline ingest | bedrock:StartIngestionJob |
| IaC | bedrock:CreateKnowledgeBase dan sejenisnya |
Pemisahan baris kedua dan ketiga itu penting: aplikasi yang melayani pengguna tidak punya alasan untuk bisa memicu ingest atau menghapus knowledge base.
Latihan: buat Managed Knowledge Base atas satu bucket S3 berisi 5–10 dokumen milikmu. Jalankan
retrieve untuk satu pertanyaan dan cetak skor tiap potongan. Lalu jalankan
retrieve_and_generate untuk pertanyaan yang sama dan bandingkan: apakah jawabannya benar-benar
memakai potongan berskor tertinggi?
Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.