Sedang mengikuti modul ini?0 daripada 17 selesai
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.

12.1

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.
12.2

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.
12.3

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.

12.4

Langkah RAG dengan LangChain

  1. 1Muat Dokumen - muat data daripada PDF, fail teks, halaman web, pangkalan data, dsb.
  2. 2Pecah Dokumen - pecahkan kepada chunk lebih kecil.
  3. 3Cipta Embeddings - tukar chunk kepada embedding vektor.
  4. 4Simpan dalam Vector DB - simpan embedding dalam pangkalan data vektor (FAISS, Chroma, Qdrant, dsb.).
  5. 5Dapatkan Chunk Relevan - cari chunk serupa untuk pertanyaan pengguna.
  6. 6Jana Jawapan - hantar konteks yang diperoleh kepada LLM dan jana respons akhir.
12.5

Vector Store Popular untuk RAG

Vector StorePeneranganKes Penggunaan
FAISSVector store dalam memori oleh MetaPembangunan setempat, data kecil hingga sederhana
ChromaVector store kekal, mudah digunakanPenyelesaian mudah dan sumber terbuka
QdrantPangkalan data vektor berprestasi tinggiSedia pengeluaran, aplikasi boleh skala
PineconePangkalan data vektor terurus (awan)Boleh skala, kegunaan perusahaan
WeaviateVector DB sumber terbuka dengan ciri tambahanCarian hibrid, kegunaan pengeluaran
12.6

Contoh: Saluran Paip RAG Mudah (PDF)

shell
# Install: pip install langchain langchain-community faiss-cpu pypdf
python
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"])
12.7

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).
12.8

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.