Tutorial RAG Advanced: Hybrid Search, Reranking, dan Evaluasi

# RAG Tingkat Lanjut - Membangun Retrieval-Augmented Generation Kelas Produksi ## Daftar Isi 1. [Pendahuluan](#pendahuluan) 2. [Prasyarat](#prasyarat) 3. [Instalasi dan Pengaturan](#instalasi-dan-pe...

By Ruby Abdullah · · tutorial
RAGHybrid SearchRerankingRAGASLLMVector Search

RAG Tingkat Lanjut - Membangun Retrieval-Augmented Generation Kelas Produksi

Daftar Isi

  • Pendahuluan
  • Prasyarat
  • Instalasi dan Pengaturan
  • Pencarian Hybrid: Retrieval Dense + Sparse
  • Reranking dengan Cross-Encoder
  • Teknik Transformasi Query
  • Strategi Chunking Parent-Child
  • Recursive Retrieval
  • Evaluasi dengan RAGAS
  • Pipeline RAG Produksi
  • Praktik Terbaik
  • Kesimpulan

  • Pendahuluan

    Retrieval-Augmented Generation (RAG) telah menjadi pendekatan standar untuk mendasarkan Large Language Models (LLM) pada pengetahuan domain-spesifik. Meskipun sistem RAG dasar mudah dibangun, RAG kelas produksi membutuhkan teknik canggih untuk menangani nuansa pencarian informasi dunia nyata.

    Keterbatasan RAG dasar yang ditangani oleh teknik lanjutan:

    • Kesenjangan semantik: Embedding dense melewatkan pencocokan leksikal; retrieval sparse melewatkan kesamaan semantik
    • Noise retrieval: Hasil top-k sering menyertakan dokumen yang tidak relevan
    • Ambiguitas query: Query pengguna mungkin samar, multi-aspek, atau terbentuk buruk
    • Fragmentasi konteks: Chunk berukuran tetap kehilangan struktur dan konteks dokumen
    • Pengukuran kualitas: Tidak ada cara sistematis untuk mengevaluasi performa pipeline RAG

    Dalam tutorial ini, Anda akan mempelajari teknik RAG lanjutan yang secara signifikan meningkatkan kualitas retrieval, akurasi jawaban, dan keandalan sistem secara keseluruhan. Setiap teknik telah teruji di produksi dan dapat dikombinasikan untuk efektivitas maksimal.


    Prasyarat

    • Python 3.10 atau lebih tinggi
    • Pemahaman dasar arsitektur RAG (embedding, vector store, LLM)
    • Keakraban dengan LangChain atau framework serupa
    • Kunci API OpenAI (atau penyedia LLM lain)
    • RAM 8GB+ direkomendasikan untuk model embedding lokal


    Instalasi dan Pengaturan

    # Dependensi inti
    

    pip install langchain langchain-openai langchain-community

    pip install chromadb faiss-cpu

    pip install sentence-transformers

    pip install rank-bm25

    Untuk evaluasi

    pip install ragas

    Untuk reranking cross-encoder

    pip install transformers torch

    Utilitas tambahan

    pip install tiktoken numpy pandas

    Pengaturan lingkungan:

    import os
    

    os.environ["OPENAIAPIKEY"] = "kunci-api-anda"

    from langchainopenai import ChatOpenAI, OpenAIEmbeddings

    from langchain.textsplitter import RecursiveCharacterTextSplitter

    from langchaincommunity.vectorstores import Chroma, FAISS

    Verifikasi pengaturan

    llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)

    embeddings = OpenAIEmbeddings(model="text-embedding-3-small")

    print("Pengaturan selesai.")


    Pencarian Hybrid: Retrieval Dense + Sparse

    Pencarian hybrid menggabungkan kekuatan retrieval vektor dense (pemahaman semantik) dengan retrieval sparse (pencocokan kata kunci eksak) untuk retrieval dokumen yang lebih kokoh.

    import numpy as np
    

    from rankbm25 import BM25Okapi

    from langchainopenai import OpenAIEmbeddings

    from langchaincommunity.vectorstores import FAISS

    from langchain.schema import Document

    from typing import List, Tuple

    class RetrieverPencarianHybrid:

    """

    Menggabungkan retrieval dense (embedding) dan sparse (BM25)

    dengan bobot fusi yang dapat dikonfigurasi.

    """

    def init(

    self,

    dokumen: List[Document],

    embeddings,

    bobotdense: float = 0.6,

    bobotsparse: float = 0.4,

    ):

    self.dokumen = dokumen

    self.bobotdense = bobotdense

    self.bobotsparse = bobotsparse

    # Bangun indeks dense

    self.vectorstore = FAISS.fromdocuments(dokumen, embeddings)

    # Bangun indeks sparse (BM25)

    Artikel Terkait

    RAGAS: Framework Evaluasi untuk Pipeline RAG

    RAGAS: Framework Evaluasi untuk Pipeline RAG Pendahuluan Retrieval-Augmented Generation (RAG) telah menjadi arsitektur s...

    Tutorial Lengkap LlamaIndex: Membangun Aplikasi RAG dengan LLM

    Tutorial Lengkap LlamaIndex: Membangun Aplikasi RAG dengan LLM LlamaIndex adalah framework data yang powerful untuk memb...

    Tutorial ColBERT & RAGatouille: Late-Interaction Retrieval untuk RAG

    ColBERT & RAGatouille: Retrieval Late-Interaction untuk RAG yang Lebih Baik Sebagian besar sistem RAG mengandalkan dense...

    Tutorial TRL: Post-Training LLM dengan SFT, DPO, dan Reward Modeling

    Post-Training LLM dengan TRL: SFT, Reward Modeling, dan DPO Setelah sebuah base language model selesai dipretraining, mo...