1. Home
  2. LangChain
  3. সিলেবাস সহজ
  4. মডিউল ৫: RAG (Retrieval-Augmented Generation) – নিজের ডেটা দিয়ে উত্তর দেওয়া

মডিউল ৫: RAG (Retrieval-Augmented Generation) – নিজের ডেটা দিয়ে উত্তর দেওয়া


RAG কি?

সহজ সংজ্ঞা:

RAG হল AI কে নিজের ডেটা দিয়ে প্রশ্নের উত্তর দেওয়ার একটি উপায়।

কল্পনা করো:

  • সাধারণ AI: “আমি জানি না”
  • RAG AI: ডকুমেন্ট খোঁজে → তথ্য পায় → উত্তর দেয়

প্রযুক্তিগত সংজ্ঞা:

RAG হল একটি কৌশল যেখানে AI প্রথমে প্রাসঙ্গিক ডকুমেন্ট খুঁজে বের করে (Retrieval) এবং তারপর সেই ডকুমেন্ট ব্যবহার করে উত্তর তৈরি করে (Generation)।


RAG এর প্রক্রিয়া

ধাপ ১: ডকুমেন্ট প্রস্তুত করা

ডকুমেন্ট → ছোট অংশে ভাগ করা → ভেক্টরে রূপান্তর → সংরক্ষণ

ধাপ ২: প্রশ্ন করা

প্রশ্ন → ভেক্টরে রূপান্তর → প্রাসঙ্গিক অংশ খোঁজা → AI কে দেওয়া

ধাপ ৩: উত্তর তৈরি করা

AI → প্রাসঙ্গিক অংশ পড়ে → উত্তর তৈরি করে

সাধারণ RAG সিস্টেম তৈরি করা

উদাহরণ ১: টেক্সট ফাইল থেকে প্রশ্নের উত্তর দেওয়া

প্রথমে প্রয়োজনীয় প্যাকেজ ইনস্টল করো:

pip install langchain langchain-groq python-dotenv langchain-community

এখন কোড লিখো:

from langchain_groq import ChatGroq
from langchain.text_splitter import CharacterTextSplitter
from langchain_community.vectorstores import FAISS
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain.chains import RetrievalQA
from dotenv import load_dotenv

load_dotenv()

# ধাপ ১: ডকুমেন্ট তৈরি করো
document_text = """
বাংলাদেশ দক্ষিণ এশিয়ার একটি দেশ। এর রাজধানী ঢাকা।
বাংলাদেশের জনসংখ্যা প্রায় ১৭ কোটি। 
বাংলাদেশের মুদ্রা টাকা।
বাংলাদেশ একটি কৃষি প্রধান দেশ।
বাংলাদেশের প্রধান ফসল ধান।
"""

# ধাপ ২: ডকুমেন্ট ছোট অংশে ভাগ করো
text_splitter = CharacterTextSplitter(
    chunk_size=100,
    chunk_overlap=20
)
chunks = text_splitter.split_text(document_text)

# ধাপ ৩: ভেক্টর স্টোর তৈরি করো
embeddings = HuggingFaceEmbeddings()
vector_store = FAISS.from_texts(chunks, embeddings)

# ধাপ ৪: AI তৈরি করো
ai = ChatGroq(model="mixtral-8x7b-32768")

# ধাপ ৫: RAG চেইন তৈরি করো
qa_chain = RetrievalQA.from_chain_type(
    llm=ai,
    chain_type="stuff",
    retriever=vector_store.as_retriever()
)

# ধাপ ৬: প্রশ্ন করো
question = "বাংলাদেশের রাজধানী কি?"
answer = qa_chain.run(question)
print(f"প্রশ্ন: {question}")
print(f"উত্তর: {answer}")

আউটপুট:

প্রশ্ন: বাংলাদেশের রাজধানী কি?
উত্তর: বাংলাদেশের রাজধানী ঢাকা।

উদাহরণ ২: PDF ফাইল থেকে প্রশ্নের উত্তর দেওয়া

প্রথমে প্যাকেজ ইনস্টল করো:

pip install pypdf

এখন কোড লিখো:

from langchain_groq import ChatGroq
from langchain.text_splitter import CharacterTextSplitter
from langchain_community.vectorstores import FAISS
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain.chains import RetrievalQA
from langchain_community.document_loaders import PyPDFLoader
from dotenv import load_dotenv

load_dotenv()

# ধাপ ১: PDF লোড করো
loader = PyPDFLoader("আপনার_ফাইল.pdf")
documents = loader.load()

# ধাপ ২: ডকুমেন্ট ছোট অংশে ভাগ করো
text_splitter = CharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=100
)
chunks = text_splitter.split_documents(documents)

# ধাপ ৩: ভেক্টর স্টোর তৈরি করো
embeddings = HuggingFaceEmbeddings()
vector_store = FAISS.from_documents(chunks, embeddings)

# ধাপ ৪: AI তৈরি করো
ai = ChatGroq(model="mixtral-8x7b-32768")

# ধাপ ৫: RAG চেইন তৈরি করো
qa_chain = RetrievalQA.from_chain_type(
    llm=ai,
    chain_type="stuff",
    retriever=vector_store.as_retriever()
)

# ধাপ ৬: প্রশ্ন করো
question = "এই ডকুমেন্টের মূল বিষয় কি?"
answer = qa_chain.run(question)
print(f"উত্তর: {answer}")

RAG এর ব্যবহারিক প্রয়োগ

ব্যবহার ১: কোম্পানির নীতিমালা প্রশ্নোত্তর

কর্মচারী: "আমাদের ছুটির নীতি কি?"
RAG সিস্টেম:
  ১. কোম্পানির ডকুমেন্ট খোঁজে
  ২. ছুটির নীতি খুঁজে বের করে
  ৩. উত্তর দেয়: "আমাদের কোম্পানিতে বছরে ২০ দিন ছুটি আছে"

ব্যবহার ২: গ্রাহক সেবা

গ্রাহক: "আপনাদের পণ্যের ওয়ারেন্টি কত দিন?"
RAG সিস্টেম:
  ১. পণ্যের তথ্য খোঁজে
  ২. ওয়ারেন্টি তথ্য খুঁজে বের করে
  ৩. উত্তর দেয়: "আমাদের পণ্যের ওয়ারেন্টি ২ বছর"

ব্যবহার ৩: শিক্ষা সহায়ক

শিক্ষার্থী: "পাইথন এ লুপ কি?"
RAG সিস্টেম:
  ১. শিক্ষা উপকরণ খোঁজে
  ২. লুপ সম্পর্কে তথ্য খুঁজে বের করে
  ৩. বিস্তারিত উত্তর দেয়

উন্নত RAG সিস্টেম

মাল্টি-ডকুমেন্ট RAG

from langchain_groq import ChatGroq
from langchain.text_splitter import CharacterTextSplitter
from langchain_community.vectorstores import FAISS
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain.chains import RetrievalQA
from dotenv import load_dotenv
import os

load_dotenv()

# একাধিক ডকুমেন্ট লোড করো
documents_text = []

# ফোল্ডার থেকে সব টেক্সট ফাইল পড়ো
for filename in os.listdir("documents/"):
    if filename.endswith(".txt"):
        with open(f"documents/{filename}", "r", encoding="utf-8") as f:
            documents_text.append(f.read())

# সব ডকুমেন্ট একসাথে করো
all_text = "\n".join(documents_text)

# ডকুমেন্ট ছোট অংশে ভাগ করো
text_splitter = CharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=100
)
chunks = text_splitter.split_text(all_text)

# ভেক্টর স্টোর তৈরি করো
embeddings = HuggingFaceEmbeddings()
vector_store = FAISS.from_texts(chunks, embeddings)

# AI তৈরি করো
ai = ChatGroq(model="mixtral-8x7b-32768")

# RAG চেইন তৈরি করো
qa_chain = RetrievalQA.from_chain_type(
    llm=ai,
    chain_type="stuff",
    retriever=vector_store.as_retriever()
)

# প্রশ্ন করো
while True:
    question = input("\nপ্রশ্ন: ")
    if question.lower() == "exit":
        break

    answer = qa_chain.run(question)
    print(f"উত্তর: {answer}")

সারসংক্ষেপ

ধাপবর্ণনা
ডকুমেন্ট প্রস্তুত করাডকুমেন্ট ছোট অংশে ভাগ করা
ভেক্টরাইজেশনঅংশগুলি ভেক্টরে রূপান্তর করা
সংরক্ষণভেক্টর স্টোরে সংরক্ষণ করা
প্রশ্ন করাপ্রাসঙ্গিক অংশ খোঁজা
উত্তর তৈরি করাAI দিয়ে উত্তর তৈরি করা

পরবর্তী ধাপ

এখন তুমি সব মৌলিক ধারণা শিখেছ! পরবর্তী পদক্ষেপ:

  • বাস্তব প্রকল্প তৈরি করা
  • চ্যাটবট তৈরি করা
  • ডেটা বিশ্লেষণ সিস্টেম তৈরি করা
  • কাস্টম এজেন্ট তৈরি করা

কোন প্রকল্প তৈরি করতে চাও? 🚀

Articles

How can we help?