ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
ဒီ 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 နမူနာ
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"])
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 ကို သက်သာစေပါသည်။