ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
ဒီ lesson က သင်ခန်းစာအသစ်မဟုတ်ပါဘူး။ အရင် lessons တွေမှာသင်ခဲ့တဲ့ chunking၊ embeddings၊ search-then-read အခြေခံတွေကို ပြန်လှန်ကျင့်ကြည့်ဖို့ပါ။ Task တစ်ခုချင်းစီက သေးငယ်ပေမယ့် RAG pipeline ရဲ့ core skill တွေကို တိုက်ရိုက်ထိတွေ့ရအောင် ဒီဇိုင်းလုပ်ထားပါတယ်။ စာအုပ်ကို အပိုင်းလိုက်ဖြတ်တာ၊ vector ဖြစ်အောင်ပြောင်းတာ၊ ရှာဖွေတာနဲ့ ဖတ်တာ — ဒီလေးခုက RAG ရဲ့ ဖောင်ဒေးရှင်းပါ။ အားလုံးလက်တွေ့ကိုယ်တိုင်စမ်းကြည့်ရင် နောက်ပိုင်း advanced lesson တွေ ပိုနားလည်လာမှာပါ။
လေ့ကျင့်ခန်းများ
Task 1: Paragraph ၅ ခုပါတဲ့ .txt file တစ်ခုကို 200-character chunk အနေနဲ့ ဘယ်လိုပိုင်းရမလဲ ရေးကြည့်ပါ (overlap 20 characters ထည့်ပါ)။ Task 2: Chunk ၅ ခုကို embedding vector အဖြစ် imagine လုပ်ပြီး, query တစ်ခုနဲ့ cosine similarity အနီးဆုံး chunk ၂ ခုကို manual ရွေးထုတ်ကြည့်ပါ။ Task 3: search-then-read pattern အတိုင်း, retrieve() function ကနေ ပြန်လာတဲ့ chunk တွေကို prompt ထဲ ဘယ်လို context အဖြစ်ထည့်ရမလဲ code skeleton ဖြည့်ပါ။ Task 4 (optional): chunk size ကို 100 vs 400 characters လုပ်ကြည့်ပြီး retrieval quality ဘယ်လိုပြောင်းလဲ observe လုပ်ကြည့်ပါ.
Code နမူနာ
// Task skeleton — ဖြည့်ရမယ့်နေရာတွေကို TODO နဲ့ မှတ်ထားပါတယ်
function chunkText(text, size = 200, overlap = 20) {
const chunks = [];
// TODO: text ကို size အလိုက်ဖြတ်ပြီး overlap ထည့်ပါ
return chunks;
}
function cosineSimilarity(vecA, vecB) {
// TODO: dot product / (magnitudeA * magnitudeB)
}
function retrieve(query, chunks, embeddings, topK = 2) {
const queryVec = embed(query); // embed() က already implement လုပ်ပြီးသား ဟု assume
const scored = chunks.map((chunk, i) => ({
chunk,
score: cosineSimilarity(queryVec, embeddings[i]),
}));
// TODO: score အလိုက် sort ပြီး topK ကို return ပါ
}
function buildPrompt(query, retrievedChunks) {
// TODO: retrievedChunks တွေကို context block အဖြစ် join ပြီး
// query နဲ့ တွဲထည့်တဲ့ prompt string တစ်ခု return ပါ
}chunkText, cosineSimilarity, retrieve, buildPrompt လေးခုစလုံးကို correct ဖြည့်ပြီးရင် sample query တစ်ခုအတွက် အနီးဆုံး chunk ၂ ခုပါတဲ့ grounded prompt string တစ်ခု ရလာပါလိမ့်မယ်။၅ မိနစ် စမ်းကြည့်
Notepad ဖွင့်ပြီး paragraph ၅ ခုပါတဲ့ text တစ်ခုရေးပါ။ ၅ မိနစ်အတွင်း chunkText() function ကို paper-code (ကိုယ်တိုင်လက်ရေး) နည်းနဲ့ ပြီးအောင်ဖြည့်ကြည့်ပါ, computer မလိုပါဘူး။
သတိလေးတစ်ချက်
ဒီ exercise တွေက pipeline ရဲ့ mechanics ကို နားလည်ဖို့ပါ။ Production မှာတော့ real embedding model (OpenAI, Cohere, စသည်) သုံးရမှာမို့ manual vector နဲ့ တိုက်ရိုက်မတူပါဘူး။