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

Memilih vector store

Kalau kamu memakai customer-managed knowledge base, kamu memilih dan menyiapkan sendiri vector store-nya. Pilihan ini menentukan biaya, latensi, dan kemampuan filter.

Intisari

  • Ada quick-create: Bedrock bisa membuatkan indeks vektor untukmu — pakai ini kalau tidak punya alasan kuat.
  • Vector store menyimpan tiga hal: vektor, teks potongan, dan metadata yang dikelola Bedrock.
  • Hanya OpenSearch (Serverless dan Managed) yang mendukung penyimpanan vektor biner.
  • Untuk Aurora, field metadata untuk filter harus dibuat sendiri sebelum ingest.
  • Pilihan model embedding dan dimensi vektor membatasi vector store yang bisa dipakai.

Yang disimpan di dalamnya

Vector store untuk knowledge base bukan sekadar tempat angka. Setiap entri memuat:

FieldIsiKenapa perlu
VektorEmbedding dari potongan teksUntuk pencarian kemiripan
TeksPotongan aslinyaYang benar-benar dikirim ke model
Metadata BedrockBerkas sumber, nomor halaman, dsb.Untuk sitasi
Metadata milikmuTim, tanggal, tingkat kerahasiaanUntuk filter saat retrieval

Pilihan yang ada

Vector storeKekuatanPertimbangan
OpenSearch ServerlessJalur paling umum; hybrid search; mendukung vektor binerAda biaya minimum kapasitas — bukan yang paling murah untuk data kecil
Aurora PostgreSQL (pgvector)Data relasional dan vektor di satu tempat; SQL biasaField metadata untuk filter harus kamu buat sendiri
Neptune AnalyticsMenggabungkan graf dan vektor — GraphRAGUntuk kasus yang butuh hubungan antar entitas
S3 vector bucketPaling murah untuk data besar yang jarang diaksesChunking hierarkis tidak dianjurkan di sini
Managed KBTidak perlu memilih sama sekaliKendali indeks terbatas

Jangan mulai dari perdebatan vector store. Untuk hampir semua kasus belajar dan banyak kasus produksi, Managed KB atau quick-create OpenSearch Serverless sudah tepat. Pindah ke pilihan lain setelah kamu punya angka nyata soal biaya, latensi, atau kebutuhan filter yang tidak terpenuhi.

Dimensi vektor

Model embedding menentukan panjang vektor, dan indeks harus dibuat dengan dimensi yang sama. Titan Text Embeddings V2 menghasilkan 1.024 dimensi secara default, dengan pilihan 512 dan 256.

DimensiKonsekuensi
Lebih besar (1.024)Kualitas retrieval lebih baik, penyimpanan dan pencarian lebih mahal
Lebih kecil (256)Lebih murah dan lebih cepat, kualitas sedikit menurun

Yang tidak bisa dilakukan: mengganti model embedding tanpa membangun ulang seluruh indeks. Vektor dari dua model berbeda tidak sebanding, jadi migrasi berarti ingest ulang semuanya. Pilih model embedding seperti memilih skema database.

Metadata dan filter

Metadata adalah yang membuat retrieval berhenti jadi "cari di seluruh dunia". Di Bedrock, kamu melampirkan metadata lewat berkas pendamping di S3:

// panduan-cuti.pdf.metadata.json
{
  "metadataAttributes": {
    "departemen": "hr",
    "tahun": 2026,
    "kerahasiaan": "internal"
  }
}
hasil = agen.retrieve(
    knowledgeBaseId=KB_ID,
    retrievalQuery={"text": "berapa hari cuti tahunan?"},
    retrievalConfiguration={"vectorSearchConfiguration": {
        "numberOfResults": 5,
        "filter": {
            "andAll": [
                {"equals":      {"key": "departemen", "value": "hr"}},
                {"greaterThan": {"key": "tahun", "value": 2024}},
            ]
        },
    }},
)

Filter ini juga cara paling sederhana menerapkan pemisahan antar tenant atau antar tingkat kerahasiaan: sisipkan filter dari identitas pengguna, bukan dari masukan pengguna. Untuk kontrol yang lebih ketat, Managed KB punya filter berbasis ACL per dokumen.

Latihan: tambahkan berkas .metadata.json untuk tiap dokumen di bucket-mu dengan atribut departemen. Ingest ulang, lalu buktikan bahwa retrieve dengan filter departemen = hr tidak pernah mengembalikan dokumen departemen lain — walaupun isinya lebih mirip secara semantik.

Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.