02. Artikel Berita QA (Question-Answer)
Memahami Struktur Dasar RAG
1. Pra-pemrosesan (Pre-processing) - langkah 1 hingga 4

Pada tahap pra-pemrosesan, empat langkah dilakukan untuk memuat (load), membagi (split), menanamkan (embed), dan menyimpan dokumen (store) dalam Vector DB (penyimpanan) dari sumber data.
Pemuatan Dokumen (Document Load): Konten dokumen dimuat.
Pembagian Teks (Text Split): Dokumen dibagi menjadi potongan-potongan tertentu.
Penanaman (Embedding): Potongan-potongan yang dibagi ditanamkan dan disimpan.
Penyimpanan Vector DB: Potongan yang telah ditanamkan disimpan dalam database.
2. RAG Execution (RunTime) - Langkah 5 hingga 8
Retriever: Definisikan retriever untuk mencari di database dan mengambil hasil berdasarkan kueri. Retriever adalah algoritma pencarian dan dapat dikategorikan sebagai Dense atau Sparse.
Dense: Pencarian berbasis kesamaan (FAISS, DPR)
Sparse: Pencarian berbasis kata kunci (BM25, TF-IDF)
Prompt: Buat prompt untuk melakukan RAG. Konteks dari prompt mencakup konten yang diambil dari dokumen. Anda dapat menentukan format jawaban melalui teknik prompt engineering.
LLM (Model Bahasa Besar): Definisikan modelnya (misalnya, GPT-3.5, GPT-4, Claude, dll.).
Chain: Buat rantai yang menghubungkan prompt, LLM, dan output.
Preferensi
Mengatur API Key.
Aplikasi yang dibangun dengan LangChain sering kali melibatkan beberapa panggilan LLM di berbagai tahap. Saat aplikasi ini menjadi semakin kompleks, kemampuan untuk menyelidiki dengan tepat apa yang terjadi di dalam chain atau agen menjadi sangat penting. Cara terbaik untuk melakukannya adalah dengan menggunakan LangSmith.
Meskipun LangSmith tidak wajib, itu sangat berguna. Jika Anda ingin menggunakan LangSmith, Anda harus mendaftar menggunakan tautan di atas dan mengatur environment variable untuk memulai pencatatan dan pelacakan (logging and tracking).
Chatbot QA (Question-Answering) berbasis Berita Kompas
Dalam tutorial ini, kita akan membangun aplikasi QA artikel berita yang memungkinkan pengguna untuk mengajukan pertanyaan tentang konten artikel berita Kompas.com.
Panduan ini akan menggunakan model chat OpenAI, embedding, dan Chroma vector store.
Pertama, melalui langkah-langkah berikut, Anda dapat mengimplementasikan pipeline pengindeksan sederhana dan RAG chain dalam sekitar 20 baris kode.
Library
bs4: Sebuah library untuk mem-parsing halaman web.langchain: Sebuah library yang menyediakan berbagai fungsi terkait AI. Dalam tutorial ini, kita akan fokus pada pemisahan teks (RecursiveCharacterTextSplitter), pemuatan dokumen (WebBaseLoader), penyimpanan vektor (Chroma, FAISS), parsing output (StrOutputParser), dan executable passthrough (RunnablePassthrough).langchain_openai: Menyediakan akses ke fungsi chatbot OpenAI (ChatOpenAI) dan embedding (OpenAIEmbeddings).
Kami akan mengimplementasikan proses yang memuat konten halaman web, membagi teks menjadi beberapa chunk untuk pengindeksan, dan kemudian mengambil cuplikan teks terkait untuk menghasilkan konten baru.
WebBaseLoader menggunakan bs4.SoupStrainer untuk mem-parsing hanya bagian yang diperlukan dari halaman web yang ditentukan.
[Catatan]
bs4.SoupStrainer memungkinkan Anda dengan mudah mengambil elemen yang diinginkan dari halaman web.
Contoh:
RecursiveCharacterTextSplitter membagi dokumen menjadi chunk (potongan) sesuai dengan ukuran yang ditentukan.
Vectorstore seperti FAISS atau Chroma menghasilkan representasi vektor dari dokumen berdasarkan potongan-potongan ini.
Retriever yang dihasilkan melalui vectorstore.as_retriever() membuat konten baru menggunakan prompt yang diambil dengan hub.pull dan model ChatOpenAI. Terakhir, StrOutputParser mem-parsing hasil yang dihasilkan menjadi string.
Anda dapat mengunduh dan menggunakan prompt test-prompts/rag-prompt-indonesian dari hub. Dalam kasus seperti ini, proses penulisan prompt terpisah diabaikan.
Gunakan stream_response untuk output streaming
Last updated