Sedang mengikuti modul ini?
Modul 12 · Halaman 13 daripada 20 · 8 bahagian
Retrieval Augmented Generation (RAG) dalam LangChain
Apa itu RAG dan mengapa ia digunakan, seni bina dan langkah saluran paip, vector store popular, contoh PDF lengkap dan teknik lanjutan.
Apa itu RAG?
- RAG (Retrieval Augmented Generation) menggabungkan retrieval (carian) dan penjanaan (LLM).
- Ia mendapatkan maklumat relevan daripada sumber data luar (dokumen, pangkalan data, dsb.) dan memberikannya kepada LLM sebagai konteks.
- Ini membantu mendapatkan jawapan yang tepat, terkini dan khusus domain.
- Berguna untuk chatbot, soal jawab dokumen dan sistem pengetahuan dalaman.
Mengapa Menggunakan RAG?
- Memberi jawapan yang tepat dan berfakta.
- Menggunakan data peribadi anda (PDF, dokumen, pangkalan data).
- Mengurangkan halusinasi dalam respons LLM.
- Memastikan maklumat sentiasa terkini.
- Berfungsi dengan pengetahuan khusus domain yang besar.
- Menjimatkan kos (anda tidak perlu menala halus model).
- Berguna untuk aplikasi perusahaan dan sembang dengan dokumen dalaman.
Seni Bina RAG dalam LangChain
DokumenPDF, TXT, DB, Web, dsb.
Document LoaderMuat data
Text SplitterPecah kepada chunk kecil
EmbeddingsTukar kepada vektor
Vector StoreSimpan vektor
RetrieverCari chunk serupa
LLMJana jawapan menggunakan konteks
Respons AkhirKepada pengguna
Pertanyaan pengguna masuk ke retriever, dan dokumen relevan yang ditemui dihantar kepada LLM sebagai konteks.
Langkah RAG dengan LangChain
- 1Muat Dokumen - muat data daripada PDF, fail teks, halaman web, pangkalan data, dsb.
- 2Pecah Dokumen - pecahkan kepada chunk lebih kecil.
- 3Cipta Embeddings - tukar chunk kepada embedding vektor.
- 4Simpan dalam Vector DB - simpan embedding dalam pangkalan data vektor (FAISS, Chroma, Qdrant, dsb.).
- 5Dapatkan Chunk Relevan - cari chunk serupa untuk pertanyaan pengguna.
- 6Jana Jawapan - hantar konteks yang diperoleh kepada LLM dan jana respons akhir.
Vector Store Popular untuk RAG
| Vector Store | Penerangan | Kes Penggunaan |
|---|---|---|
| FAISS | Vector store dalam memori oleh Meta | Pembangunan setempat, data kecil hingga sederhana |
| Chroma | Vector store kekal, mudah digunakan | Penyelesaian mudah dan sumber terbuka |
| Qdrant | Pangkalan data vektor berprestasi tinggi | Sedia pengeluaran, aplikasi boleh skala |
| Pinecone | Pangkalan data vektor terurus (awan) | Boleh skala, kegunaan perusahaan |
| Weaviate | Vector DB sumber terbuka dengan ciri tambahan | Carian hibrid, kegunaan pengeluaran |
Contoh: Saluran Paip RAG Mudah (PDF)
shell
# Install: pip install langchain langchain-community faiss-cpu pypdfpython
from langchain_community.document_loaders import PyPDFLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_community.embeddings import HuggingFaceEmbeddings from langchain_community.vectorstores import FAISS from langchain.chains import RetrievalQA from langchain_openai import ChatOpenAI # 1. Load PDF loader = PyPDFLoader("company_policy.pdf") docs = loader.load() # 2. Split into chunks splitter = RecursiveCharacterTextSplitter( chunk_size=1000, chunk_overlap=200) chunks = splitter.split_documents(docs) # 3. Create embeddings embeddings = HuggingFaceEmbeddings( model_name="all-MiniLM-L6-v2") # 4. Store in Vector DB (FAISS) vectorstore = FAISS.from_documents(chunks, embeddings) # 5. Create retriever retriever = vectorstore.as_retriever(search_kwargs={"k": 3}) # 6. Create RAG chain llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.7) qa_chain = RetrievalQA.from_chain_type( llm=llm, retriever=retriever, return_source_documents=True ) # 7. Ask a question query = "What is the leave policy?" result = qa_chain.invoke({"query": query}) print(result["result"]) print(result["source_documents"])
Teknik RAG Lanjutan
- Gunakan penapisan metadata untuk retrieval lebih baik.
- Carian hibrid (semantik + kata kunci).
- Gunakan model re-ranking untuk meningkatkan kualiti hasil.
- Pengoptimuman chunk (saiz, pertindihan).
- Gunakan pemampatan konteks untuk memuatkan data besar.
- Gabungkan beberapa sumber data (PDF + DB + API).
- Gunakan memory perbualan untuk RAG berbilang giliran.
- Nilai RAG dengan metrik (relevansi, ketepatan).
Pengajaran Utama
- RAG menggabungkan retrieval dan penjanaan untuk hasil lebih baik.
- LangChain menyediakan alat mudah untuk membina saluran paip RAG.
- Pilih vector store yang sesuai mengikut kes penggunaan anda.
- Chunking dan embeddings yang betul adalah penting.
- Gunakan metadata dan penapisan untuk retrieval yang tepat.
- RAG digunakan secara meluas dalam chatbot, carian perusahaan dan alat dalaman.
- Ia membantu membina aplikasi AI yang boleh dipercayai dan khusus domain.