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.
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.
Chain: Buat rantai yang menghubungkan prompt, LLM, dan output.
Preferensi
Mengatur API Key.
# File pengaturan untuk mengelola API Key sebagai environment variablefrom dotenv import load_dotenv# Memuat informasi API Keyload_dotenv()
True
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).
Mulai penelusuran langsmith.
[nama project]
CH12-RAG
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).
USER_AGENT environment variable not set, consider setting it to identify your requests.
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.
[Document(metadata={'source': 'https://tekno.kompas.com/read/2024/08/30/09090077/pengguna-chatgpt-naik-dua-kali-lipat-sekian-jumlahnya'}, page_content='\nKOMPAS.com - Jumlah pengguna aktif mingguan (weekly active users) chatbot buatan OpenAI, yaitu ChatGPT, diklaim sudah menembus angka 200 juta pengguna.\xa0\nHal ini disampaikan OpenAI dalam sebuah pernyataan ke salah satu situs web berita internasional, Axios.\xa0Angka ini meningkat dua kali lipat dari jumlah weekly active users pada November 2023 lalu yang berkisar di angka 100 juta pengguna.\xa0\nOpenAI mengatakan bahwa model AI terbarunya, yaitu GPT-4o Mini yang dirilis pada Juli lalu, berkontribusi pada jumlah peningkatan pengguna ChatGPT. Menurut OpenAI, pemakaian model AI ini (via sistem aplikasi alias API) meningkat dua kali lipat sejak pertama kali dirilis.\xa0\nSelain itu, OpenAI juga mengeklaim ChatGPT kini sudah dipakai banyak perusahaan dunia. Bahkan, 92 persen dari perusahaan-perusahaan kenamaan global yang tergabung dalam kelompok "Fortune 500", lanjut OpenAI, kini telah memakai ChatGPT di dalam produk mereka.\nBaca juga: Pendiri OpenAI Mundur, Hijrah ke Perusahaan Kompetitor\nTerkait peningkatan jumlah pengguna ini, CEO OpenAI Sam Altman mengatakan, hal ini bisa terwujud berkat banyaknya orang dan perusahaan yang kini menggunakan ChatGPT di kehidupan sehari-hari mereka.\xa0\n\n\n\n"Orang-orang menggunakan ChatGPT untuk memperlancar aktivitas mereka sehari-hari, dan ini memberikan dampak positif sekaligus memicu kreativitas di berbagai bidang, mulai dari kesehatan, pendidikan, dan lain sebagainya," kata Sam.\nNah, peningkatan jumlah pengguna ChatGPT ini membuktikan bahwa produk AI semakin dilirik oleh manusia untuk membantu menyelesaikan pekerjaan mereka. Peningkatan ini juga menggambarkan bahwa kompetisi model AI yang ada di pasar kini semakin sengit.\nSalah satu chatbot kompetitor OpenAI, yaitu Meta AI buatan Meta, misalnya, kabarnya kini telah memiliki jumlah pengguna aktif yang lebih banyak dari ChatGPT, yaitu mencapai 400 juta. Namun, jumlah pengguna aktif ini merupakan bulanan (monthly), bukan mingguan (weekly).\xa0 \nBaca juga: OpenAI Diretas tapi Diam-diam Saja, Tak Lapor FBI\nTidak disebutkan berapa jumlah weekly active users Meta AI. Namun yang jelas, jumlah pengguna hariannya (daily active users) mencapai 40 juta pengguna, sebagaimana dirangkum KompasTekno dari TheVerge, Jumat (30/8/2024).\nBoleh jadi chatbot bikinan Google, yaitu Gemini, serta produk serupa bikinan Microsoft, yaitu Copilot juga memiliki jumlah peningkatan pengguna aktif. Namun, hal ini belum diketahui pasti lantaran kedua perusahaan belum mengumbar data tersebut ke publik.\nSimak breaking news dan berita pilihan kami langsung di ponselmu. Pilih saluran andalanmu akses berita Kompas.com WhatsApp Channel : https://www.whatsapp.com/channel/0029VaFPbedBPzjZrk13HO3D. Pastikan kamu sudah install aplikasi WhatsApp ya.\n')]
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.
# Membuat vector store.vectorstore = FAISS.from_documents(documents=splits, embedding=OpenAIEmbeddings())# Mencari dan menghasilkan informasi yang terdapat dalam berita.retriever = vectorstore.as_retriever()
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.
from langchain_core.prompts import PromptTemplateprompt = PromptTemplate.from_template( """You are a friendly AI assistant that performs Question-Answering (QA). Your mission is to answer the given question based on the provided context.
Answer the question using the retrieved context. If you cannot find the answer in the provided context, or if you do not know the answer, respond with `The given information does not contain an answer to the question.`
Please answer in Indonesia. However, do not translate technical terms or names, and leave them asis.#Pertanyaan: {question} #Konteks: {context} #Jawaban:""")
Anda dapat mengunduh dan menggunakan prompt test-prompts/rag-prompt-indonesian dari hub. Dalam kasus seperti ini, proses penulisan prompt terpisah diabaikan.
from langchain_altero.messages import stream_response
answer = rag_chain.stream("Mengapa pengguna ChatGPT meningkat?")stream_response(answer)
Pengguna ChatGPT meningkat karena banyak orang dan perusahaan yang kini menggunakan ChatGPT dalam kehidupan sehari-hari mereka untuk memperlancar aktivitas dan memicu kreativitas di berbagai bidang seperti kesehatan dan pendidikan. Selain itu, model AI terbaru dari OpenAI, yaitu GPT-4o Mini, yang dirilis pada Juli lalu, juga berkontribusi pada peningkatan jumlah pengguna ChatGPT.