← Semua pembelajaran / AWS untuk AI Engineer
Fase 4 · RAG & Knowledge Bases

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) dan RetrieveAndGenerate (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 RAGKalau manualDengan Knowledge Bases
Membaca berkasParser PDF/DOCX sendiriSmart parsing bawaan
ChunkingKode sendiriKonfigurasi
EmbeddingPanggil model per chunkOtomatis
Menyimpan vektorKelola sendiriOtomatis (atau vector store pilihanmu)
Menjaga tetap segarPipeline sinkronisasi sendiriJob ingest, bisa dijadwalkan
RetrievalQuery vektor manualRetrieve
SitasiLacak sendiriAda di respons

Managed atau customer-managed?

Managed Knowledge BaseCustomer-managed
Vector storeDikelola AWS, auto-scalingMilikmu: OpenSearch Serverless, Aurora, Neptune
Parsing & chunkingSmart parsing per jenis dokumenKamu yang mengonfigurasi
Retrieval agentik multi-hopAdaTidak
Filter izin per dokumen (ACL)Ada, saat retrievalKamu bangun sendiri
Integrasi AgentCore GatewayNative — jadi tool MCP tanpa kodeManual
Kendali penuh atas indeksTerbatasPenuh

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

SiapaIzin
Role knowledge baseBaca bucket S3, panggil model embedding, tulis ke vector store
Aplikasibedrock:Retrieve — hanya baca
Pipeline ingestbedrock:StartIngestionJob
IaCbedrock: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.