Lensa ML

Retrieval-Augmented Generation

Langkah 1 dari 6: Kenapa Retrieval?

LLM punya knowledge cutoff, dan retrieval membawa fakta baru

Tahun knowledge cutoff2022
2019✓World Series2020✓Pandemi2021✓Vaksin2022✓ChatGPT2023✗GPT-42024✗Hadiah Nobel2025✗Claude 42026✗Agentic AITanpa retrieval, LLM hanya tahu data sampai cutoff training-nyaRAG menutup celah pengetahuan dengan dokumen eksternal
Cutoff
2022
Terjawab
4/8
Cakupan
50%

Cutoff 2022 mencakup 4 dari 8 peristiwa. Untuk peristiwa setelahnya, model tidak punya data training, jadi ia menebak atau mengarang jawaban.

Geser Tahun knowledge cutoff dari 2020 ke 2026 dan lihat readout cakupan berubah. Pengetahuan model tersimpan di weight-nya, yang oleh paper RAG disebut parametric memory, dan mengubah memori itu berarti training ulang. RAG menambahkan non-parametric memory: indeks dokumen yang bisa diedit kapan saja tanpa menyentuh model. Pembagian yang sama juga mencakup data pribadi yang belum pernah dilihat model, seperti wiki internal atau tiket dukungan, dan membuat setiap jawaban bisa menunjuk ke sumbernya. Lewis dkk. (2020) memakai indeks Wikipedia berisi 21 juta passage.

Langkah 2 dari 6: Document Embedding

Pecah dokumen menjadi chunk, lalu ubah masing-masing menjadi embedding berupa vector

Chunk size (token)200
Dokumen utuh (1000 token)C1200tC2200tC3200tC4200tC5200t
Chunk size
200t
Chunk
5
Precision
sedang

Chunk 200 token menghasilkan 5 chunk, masing-masing dengan konteks yang cukup untuk cocok dengan pertanyaan secara mandiri.

Geser Chunk size dari 50 ke 500 token dan lihat dokumen 1.000 token terpecah menjadi lebih banyak atau lebih sedikit bagian. Chunking diperlukan karena model embedding memampatkan seluruh input-nya menjadi satu vector, sehingga passage panjang tentang beberapa topik tidak cocok dengan satu pun topik itu. Paper RAG asli memecah Wikipedia menjadi passage 100 kata. Pipeline sungguhan sering membuat chunk yang bersebelahan bertumpang tindih 10 sampai 20 persen, supaya kalimat yang terpotong di batas tetap muncul utuh di salah satu chunk. Jika memungkinkan, pemecahan dilakukan pada judul dan paragraf, bukan pada jumlah token yang tetap.

Langkah 3 dari 6: Query dan Retrieval

Cari embedding chunk yang paling dekat dengan vector query

Top-k yang diambil3
QC1C2C3C4C5C6C7C83 chunk terdekat diambil dari vector store
Top-k
3
Diambil
3 chunk
Dilewati
5

Retrieval top-3 mengembalikan 3 chunk terdekat, sehingga model punya lebih dari satu bukti tanpa banyak noise.

Geser Top-k yang diambil dari 1 ke 5 dan lihat makin banyak garis menghubungkan query ke chunk di dekatnya. Pertanyaan diubah menjadi embedding dengan model yang sama dengan chunk, jadi keduanya berada di satu vector space dan kedekatan berarti keterkaitan. Pencarian persis pada jutaan vector itu lambat, jadi vector database memakai indeks approximate nearest neighbor seperti HNSW, yang mengorbankan sedikit recall demi pencarian dalam hitungan milidetik. Paper RAG mengambil 5 atau 10 passage per pertanyaan dengan DPR, retriever berbasis BERT. Banyak sistem juga menjalankan pencarian kata kunci seperti BM25 dan menggabungkan kedua daftar hasil.

Langkah 4 dari 6: Similarity Search

Saring chunk dengan threshold cosine similarity

Similarity threshold0.50
Ikhtisar Transformer0.53✓Pipeline RAG0.70✓Vector Database0.75✓Prompt Engineering0.71✓Panduan Fine-tuning0.81✓Model Embedding0.93✓Strategi Chunking0.86✓Metode Reranking0.77✓
Threshold
0.50
Lolos
8
Tersaring
0
Rata-rata similarity
0.76

Threshold 0.50 mempertahankan 8 dari 8 chunk. Menggesernya ke kanan berarti menukar recall dengan precision.

Geser Similarity threshold dari 0 ke 1 dan lihat chunk berguguran saat garisnya bergerak ke kanan. Cosine similarity adalah cos θ = (q · d) / (‖q‖ ‖d‖): bernilai 1 ketika dua vector searah dan 0 ketika keduanya ortogonal. Banyak model embedding menghasilkan vector dengan panjang satuan, dan dalam kasus itu cosine similarity sama dengan dot product. Threshold membuang kecocokan lemah walaupun chunk yang tersisa sedikit, sedangkan top-k selalu mengembalikan jumlah yang sama. Rentang skor berbeda antarmodel embedding, jadi threshold yang disetel untuk satu model perlu disetel ulang untuk model lain.

Langkah 5 dari 6: Augmented Prompt

Sisipkan konteks hasil retrieval ke prompt template

Pemakaian context window0.50
SYSTEM: Jawab hanya dari konteks yang diberikan.[CONTEXT] 3 chunk (2008 token)Chunk 1: "Ikhtisar Transformer"Chunk 2: "Pipeline RAG"Chunk 3: "Vector Database"[QUERY] "Bagaimana RAG bekerja?" (50 token)51% context window terpakai
Chunk terpakai
3
Token konteks
2008
Sisa
2008

3 chunk memakai 2008 token: buktinya cukup untuk mendasari jawaban, dengan sisa 2008 token untuk respons.

Geser Pemakaian context window dari 0 ke 1 dan lihat jendela 4.096 token terisi chunk hasil retrieval. Baris system meminta model menjawab hanya dari konteks, tetapi instruksi bukan jaminan. Posisi juga berpengaruh. Liu dkk. (2023) menemukan bahwa model lebih baik memakai informasi di awal dan akhir konteks panjang daripada di tengah, jadi pipeline sering menaruh chunk terbaik di urutan pertama. Reranker tahap kedua, yaitu cross-encoder yang membaca query dan setiap chunk bersamaan, adalah cara umum untuk menentukan urutan itu.

Langkah 6 dari 6: Faithfulness dan Halusinasi

Retrieval yang lebih baik membuat lebih banyak token berpijak pada dokumen nyata

Kualitas retrieval0.50
Output model: token diwarnai menurut groundingRAGretrievesrelevantdocumentsfromavectorstorethenthemodelgeneratesananswergroundedinretrievedcontextreducinghallucinationsBerpijak pada dokumenHalusinasi
Kualitas
0.50
Grounded
15/20
Halusinasi
5
Skor grounding
75%

Kualitas retrieval sedang: 15 token grounded, 5 halusinasi. Chunking atau reranking yang lebih baik akan menaikkan skor 75%.

Geser Kualitas retrieval dari 0 ke 1 dan lihat token output berubah dari merah muda ke hijau kebiruan. Faithfulness dan kebenaran adalah dua pemeriksaan terpisah. Jawaban disebut faithful kalau setiap klaimnya didukung teks yang diambil, jadi jawaban bisa faithful tetapi tetap salah kalau dokumennya salah. Evaluasi biasanya menilai retrieval (apakah chunk yang tepat kembali) terpisah dari generation (apakah jawaban tetap berpegang pada chunk itu). Meminta model menyebut chunk di balik setiap klaim membuat pernyataan tanpa dukungan lebih mudah ditangkap, baik oleh pengguna maupun pemeriksaan otomatis.

Apa itu retrieval-augmented generation (RAG)?

Retrieval-augmented generation (RAG) adalah teknik yang mencari dokumen yang relevan dengan sebuah pertanyaan, lalu menambahkannya ke prompt model bahasa sebelum model menjawab. Dokumen dipecah menjadi chunk dan disimpan sebagai embedding vector. Saat query berjalan, pertanyaan juga diubah menjadi embedding, chunk terdekat diambil, dan model menulis jawabannya dari konteks itu.

RAG adalah cara sebagian besar chatbot menjawab pertanyaan tentang informasi yang tidak ada di data training-nya: dokumen internal perusahaan, manual produk, berita terbaru, atau codebase. Dengan RAG, jawaban tetap mutakhir tanpa training ulang, sistem bisa menyebut sumbernya, dan fakta karangan berkurang. Asisten layanan pelanggan, pencarian perusahaan, asisten coding, dan mesin pencari dengan jawaban AI semuanya dibangun di atas salah satu bentuk RAG.

Ide utama

  • RAG mengambil dokumen yang relevan saat query berjalan dan menambahkannya ke prompt sebelum model menjawab.
  • Dokumen dipecah menjadi chunk, dan setiap chunk disimpan sebagai embedding vector.
  • Query diubah menjadi embedding dengan model yang sama, lalu chunk terdekat menurut cosine similarity diambil.
  • Chunk size dan top-k sama-sama menukar precision retrieval dengan recall.
  • Mengedit indeks dokumen mengubah apa yang diketahui sistem tanpa training ulang pada model.
  • Retrieval yang baik mengurangi halusinasi, tetapi model masih bisa mengabaikan atau salah membaca konteksnya.

Ulasan singkat tentang topik ini

Pertanyaan umum

Apa bedanya RAG dan fine-tuning?

Fine-tuning mengubah weight model dan paling cocok untuk mengajarkan gaya, format, atau perilaku. RAG tidak mengubah weight dan memberikan fakta saat query berjalan, sehingga faktanya mudah diperbarui dan disebut sumbernya. Banyak sistem produksi memakai keduanya.

Apa itu vector database?

Vector database menyimpan embedding vector dan menemukan yang paling dekat dengan vector query secara cepat, biasanya dengan indeks approximate. Contohnya FAISS (sebuah library), pgvector untuk PostgreSQL, Pinecone, Weaviate, dan Chroma. Sebagian besar juga menyimpan teks dan metadata tiap chunk agar hasilnya bisa disaring menurut sumber atau tanggal.

Apakah RAG menghilangkan halusinasi?

Tidak. Retrieval bisa mengembalikan chunk yang salah, chunk yang benar bisa tidak ada di indeks, dan model masih bisa mencampur teks yang diambil dengan apa yang dihafalnya. RAG menurunkan tingkat fakta karangan dan membuatnya lebih mudah dicek, tetapi tetap butuh evaluasi seperti sistem lain.

Apakah model dengan konteks panjang membuat RAG tidak diperlukan?

Tidak untuk koleksi besar. Context window sebesar sejuta token pun hanya memuat sebagian kecil dokumen perusahaan, dan setiap token di prompt menambah biaya dan latency pada setiap permintaan. Konteks panjang dan RAG saling melengkapi: retrieval mempersempit kumpulannya, dan jendela yang panjang menampung lebih banyak isinya.

Penjelasan terkait

Referensi

  1. Lewis et al. (2020), "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks"
  2. Karpukhin et al. (2020), "Dense Passage Retrieval for Open-Domain Question Answering"
  3. Liu et al. (2023), "Lost in the Middle: How Language Models Use Long Contexts"
  4. Malkov & Yashunin (2016), "Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs"

Terakhir diperbarui