Hook — LLM + তোমার Knowledge
LLM সব জানে না — তোমার কোম্পানির document, latest news, private data — কিছুই জানে না। Fine-tuning ব্যয়বহুল আর slow। RAG (Retrieval-Augmented Generation) এর সমাধান: প্রশ্নের আগে relevant document খুঁজে এনে LLM কে context হিসেবে দেওয়া।
RAG Pipeline
- ১. Indexing — document load → chunk → embed → vector DB এ save।
- ২. Retrieval — user query embed → similar chunk top-K retrieve।
- ৩. Generation — chunk + query → LLM → grounded answer।
Chunking Strategy
- Fixed size — ৫০০-১০০০ token, ১০-২০% overlap।
- Semantic — paragraph/section boundary।
- Recursive — markdown header aware।
- Sentence-window — sentence center, context expand।
Embedding & Vector DB
- Embedding models — text-embedding-3-large (OpenAI), bge-large, e5, jina, nomic।
- Vector DB — Pinecone, Weaviate, Qdrant, Chroma, pgvector।
- Distance — cosine similarity সাধারণ।
Code — Minimal RAG (LangChain)
rag_chain.py
from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_community.vectorstores import Chroma
from langchain.prompts import ChatPromptTemplate
# 1. Load & chunk
docs = PyPDFLoader("handbook.pdf").load()
chunks = RecursiveCharacterTextSplitter(
chunk_size=800, chunk_overlap=120).split_documents(docs)
# 2. Embed & index
vs = Chroma.from_documents(chunks, OpenAIEmbeddings(model="text-embedding-3-small"))
retriever = vs.as_retriever(search_kwargs={"k": 4})
# 3. Generate
prompt = ChatPromptTemplate.from_template("""
শুধু নিচের context ব্যবহার করে উত্তর দাও। জানা না থাকলে বলো 'জানি না'।
Context: {context}
Question: {question}
Answer (Bangla):""")
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
def ask(q):
ctx = "\n\n".join(d.page_content for d in retriever.invoke(q))
return llm.invoke(prompt.format(context=ctx, question=q)).content
print(ask("Leave policy কী?"))Advanced RAG
- Hybrid Search — BM25 (keyword) + dense (semantic)।
- Reranker — cross-encoder (Cohere Rerank, bge-reranker) দিয়ে top-K refine।
- Multi-Query — query rewrite করে multiple search।
- HyDE — hypothetical answer embed করে search।
- Parent-Document Retrieval — small chunk search, large chunk context।
- Agentic RAG — LLM নিজেই tool call করে।
- GraphRAG — knowledge graph + LLM।
Evaluation
- Retrieval — Recall@K, MRR, nDCG।
- Generation — Faithfulness, Answer Relevance, Context Precision (RAGAS)।
- End-to-end — LLM-as-judge, human eval।
Common Mistakes
- Chunk size ভুল — খুব ছোট/বড়।
- Metadata filter ব্যবহার না করা।
- Reranker skip করা — quality অনেক বাড়ে।
- Source citation না দেখানো — trust হারায়।
- Eval pipeline না থাকা।
Summary
এক নজরে
RAG = Index → Retrieve → Generate। Chunking + Embedding + Hybrid + Rerank + Eval = production-grade knowledge assistant।