Thuta Learning
ရှာဖွေရန်
ProjectsAIadvanced

Mini Project: Document Chatbot – Part 1 (Setup & RAG Core)

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Mini Project: Document Chatbot – Part 1 (Setup & RAG Core) ကို လက်တွေ့ project ထဲမှာ အသုံးချတတ်မယ်
  • ကိုယ်တိုင် code ရေးပြီး run ကြည့်တတ်မယ်
  • Project တစ်ခုလုံးကို အဆင့်လိုက် ဆောက်တတ်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

ဒီ project ရဲ့ ပထမဆုံး အဆင့်မှာ Basic နှင့် Intermediate chapter တွေမှာ သင်ခဲ့တဲ့ Models, Document Loaders, Text Splitters, Embeddings, Vector Store တို့ကို ပေါင်းစပ်ပြီး Document Chatbot ရဲ့ core RAG pipeline ကို တည်ဆောက်ပါမယ်။ Project ရဲ့ ရည်ရွယ်ချက်ကတော့ user တစ်ယောက်ရဲ့ ကိုယ်ပိုင် document (ဥပမာ - company FAQ, personal notes) ကို load လုပ်ပြီး အဲဒီ document ထဲက data ပေါ်မူတည်ပြီး မေးခွန်းမေးနိုင်တဲ့ assistant တစ်ခု ဖြစ်ပါတယ်။ Part 1 မှာတော့ document ကို load လုပ်ခြင်း, chunk အသေးလေးတွေအဖြစ် split လုပ်ခြင်း, embeddings အဖြစ်ပြောင်းပြီး vector store ထဲ သိမ်းခြင်း, နောက်ဆုံးမှာ RetrievalQA chain တစ်ခု ဆောက်ပြီး basic query test လုပ်ခြင်းအထိ ပြီးမြောက်အောင် လုပ်ဆောင်ပါမယ်။ ဒီအဆင့်ဟာ project တစ်ခုလုံးရဲ့ foundation ဖြစ်တဲ့အတွက် သေချာအောင် setup လုပ်ဖို့ အရေးကြီးပါတယ်။ Part 2 နဲ့ Part 3 မှာ ဒီ base ပေါ်တွင် memory နဲ့ agent tool တွေ ဆက်ထည့်သွားမှာဖြစ်ပါတယ်။

လက်တွေ့ ဆောက်ကြည့်မယ်

Project folder အသစ်တစ်ခု ဖန်တီးပြီး langchain, langchain-openai, langchain-community, chromadb ကို install လုပ်ပါ။ TextLoader (or PyPDFLoader) ဖြင့် sample document ကို load လုပ်ပြီး RecursiveCharacterTextSplitter (chunk_size=500, chunk_overlap=50) နဲ့ chunks များအဖြစ် split လုပ်ပါ။ OpenAIEmbeddings ဖြင့် embed လုပ်ပြီး Chroma vector store (persist_directory ပါစေ) ထဲ သိမ်းပါ။ vectorstore.as_retriever() ကို retriever အဖြစ်ယူပြီး ChatOpenAI model နဲ့ RetrievalQA.from_chain_type ကို ဆောက်ပါ။ နောက်ဆုံး sample question တစ်ခု run ပြီး document ထဲက data ကို base ပြုတဲ့ အဖြေ ပြန်ရလား စစ်ဆေးပါ။

Code နမူနာ

python
import os
from langchain_community.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_community.vectorstores import Chroma
from langchain.chains import RetrievalQA

os.environ["OPENAI_API_KEY"] = "your-api-key"

# 1. Load document
loader = TextLoader("notes.txt", encoding="utf-8")
documents = loader.load()

# 2. Split into chunks
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(documents)

# 3. Embed + store in vector DB
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(
    chunks, embeddings, persist_directory="./chroma_db"
)
retriever = vectorstore.as_retriever(search_kwargs={"k": 3})

# 4. Build a basic RetrievalQA chain
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
qa_chain = RetrievalQA.from_chain_type(llm=llm, retriever=retriever)

# 5. Test it
result = qa_chain.invoke({"query": "notes.txt ထဲမှာ ဘာအကြောင်းအရာတွေ ပါသလဲ?"})
print(result["result"])
You should see
Terminal မှာ notes.txt document ထဲက data ကို base ပြုပြီး ဖြေထားတဲ့ AI-generated answer တစ်ခု ပေါ်လာမည်။

၅ မိနစ် စမ်းကြည့်

5 မိနစ်အတွင်း သင့်ကိုယ်ပိုင် fact 3-4 ကြောင်းပါတဲ့ notes.txt file တစ်ခု ဖန်တီးပြီး၊ အထက်က code ကို run ပြီး document ထဲက fact တစ်ခုနှင့် ပတ်သက်တဲ့ မေးခွန်းကို မေးကြည့်ပါ။

သတိလေးတစ်ချက်

Vector store ကို persist_directory ဖြင့် create လုပ်ထားခြင်းအားဖြင့် run တိုင်း document ကို ပြန်လည် embed လုပ်စရာမလိုတော့ပါ - API cost နှင့် time ကို သက်သာစေပါသည်။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • OPENAI_API_KEY environment variable ကို set လုပ်ဖို့ မေ့ကျန်ခဲ့ပြီး authentication error တက်တတ်သည်
  • chunk_size ကို အကြီးလွန်းအောင် သတ်မှတ်ထားသဖြင့် retrieval accuracy ကျဆင်းပြီး irrelevant context များ ပါလာတတ်သည်

အခု ကိုယ်တိုင် စမ်းကြည့်

5 မိနစ်အတွင်း သင့်ကိုယ်ပိုင် fact 3-4 ကြောင်းပါတဲ့ notes.txt file တစ်ခု ဖန်တီးပြီး၊ အထက်က code ကို run ပြီး document ထဲက fact တစ်ခုနှင့် ပတ်သက်တဲ့ မေးခွန်းကို မေးကြည့်ပါ။

You'll know it worked when: Terminal မှာ notes.txt document ထဲက data ကို base ပြုပြီး ဖြေထားတဲ့ AI-generated answer တစ်ခု ပေါ်လာမည်။

Mini Project: Document Chatbot – Part 1 (Setup & RAG Core) | Thuta Learning