Asosiy qismga o'tish

O'QITUVCHI REJASI

22-bob 9 kod bloki 762 so'z

Bu bob talabalar uchun emas — siz uchun. Har bir bobni qanday o'tish, nimani jonli ko'rsatish, qayerda to'xtash.

Umumiy tuzilish

Blok Boblar Soat Yakuniy natija
1. Poydevor 0–6 ~4 Baza va jadvallar TAYYOR
2. Ma'lumot 7–10 ~4 Bazada VEKTORLAR bor
3. RAG yadrosi 11–14 ~5 Quvur ISHLAYDI
4. Ilova 15–18 ~4 Brauzerda CHAT
5. Sifat 19–21 ~3 O'lchash va yaxshilash

Jami ~20 soat. Har dars 2 soat bo'lsa — 10 dars.

Uchta G'ALABA — darsni shu nuqtalarga quring

Talaba uzoq vaqt natija ko'rmasa — qiziqishini yo'qotadi. Kitobda ataylab uchta "ishladi!" lahzasi bor:

Bob Nima ko'rinadi Talaba nima his qiladi
5 \dt rag.* — jadvallar paydo bo'ldi "Men baza qurdim"
9 SELECT embedding_local — SONLAR "Ma'no — bu raqamlar ekan"
14 5 bosqich, vaqt taqsimoti "RAG sehr emas ekan"

Bu uchta darsni O'TKAZIB YUBORMANG. Ular kursning ustunlari.

Bob-bob reja

0-bob — Tayyorgarlik (darsdan OLDIN)

Bu bobni darsda o'tmang. Talabalarga oldindan yuboring.

Sinfda hamma o'rnatishga urinsa — 2 soat yo'qoladi va yarmi baribir ishlamaydi.

Siz qiladigan ish: dars boshida bitta buyruq bilan tekshiring:

bash1 qator
python --version && psql -U postgres -c "SELECT version();" && curl -s http://localhost:11434/api/tags

Ishlamaganlar Docker (0-bobdagi D yo'li) bilan davom etsin.

1–4-boblar — Skelet (2 soat)

Ko'p gapirmang, ko'p yozdiring. Bu boblar mexanik.

Asosiy savol: "nega app/ va scraper/ alohida?" Javob: ular TURLI VAQTDA ishlaydi. Buni ayting, keyin 1-bobdagi diagrammani chizing.

4-bobda to'xtang: Vector(1024) — bu 1024 qayerdan keldi? Modeldan. Modelni almashtirsangiz — o'zgaradi. Shuni tushunmasa, 9-bobda "expected 768 dimensions" xatosida qotib qoladi.

5–6-boblar — BIRINCHI G'ALABA (2 soat)

bash1 qator
python bootstrap.py

Keyin darhol psql ochib ko'rsating:

matn3 qator
\c rag_demo
\dt rag.*
SELECT title, source_type FROM rag.documents;

Bu lahzani cho'zing. Talaba o'zi qurgan bazani ko'rsin.

6-bobda SQL faylni ochib, bootstrap.py bilan solishtiring. "ORM orqasida shu turadi" deb ayting.

7–8-boblar — Chunking (2 soat)

Eng ko'p vaqt shu yerga ketsin. Chunking — RAG ning eng noto'g'ri tushuniladigan qismi.

Overlap ni jonli ko'rsating:

python3 qator
for ov in (0, 50, 200):
    c = chunk_text(matn, title="Sinov", max_tokens=400, overlap=ov)
    print(ov, len(c))

Keyin so'rang: "nega overlap=50 da chunk KO'PROQ?" Javobni ular topsin — takrorlanish joy egallaydi.

9–10-boblar — IKKINCHI G'ALABA (2 soat)

Embedding yaratilgach:

sql1 qator
SELECT left(embedding_local::text, 80) FROM rag.chunks LIMIT 1;

Ekranda 1024 ta son. "Mana ma'no shunday ko'rinadi."

Keyin cosine matematikasi:

sql2 qator
SELECT 1 - ('[1,0,0]'::vector <=> '[1,0,0]'::vector),
       1 - ('[1,0,0]'::vector <=> '[0,1,0]'::vector);

1 va 0. Butun RAG shu ikki raqamda.

11–12-boblar — Qidiruv va reranking (2 soat)

12-bob IXTIYORIY ekanini ayting. Ishlab turgan WDE Nihol botida reranker YO'Q.

Bu muhim saboq: har bir texnologiya kerak emas. Avval o'lchang, keyin qo'shing.

Vaqt kam bo'lsa — 12-bobni tashlab, 13-bobga o'ting.

13–14-boblar — UCHINCHI G'ALABA (2 soat)

bash1 qator
python demo_pipeline.py "Nihol tarifi qancha turadi?"

4-bosqichda to'xtang. Promptni to'liq o'qing.

"RAG shu — kontekst + savol. Boshqa hech narsa yo'q."

Vaqt taqsimotini ko'rsating: qidiruv 9 ms, LLM 6 sekund. So'rang: "tezlashtirish uchun qayerga qaraysiz?"

15–18-boblar — Web ilova (4 soat)

Bu boblar tayyor kod. Yozdirmang — o'qing va tushuntiring.

Eng muhim joy — 16-bobdagi shablon/route kelishuvi. Uchta 500 xato aynan shundan chiqqan edi. Talabaga ayting: "kod to'g'ri ko'rinadi, lekin sahifani OCHMASANGIZ bilmaysiz."

bash1 qator
python tekshir_sahifalar.py

19–21-boblar — Sifat (3 soat)

19-bob: tarix XOTIRADA — server o'chsa yo'qoladi. "Demo vs production" farqi.

20-bob eng qimmatli. Gold set tayyorlang (30 savol) va o'lchang. Busiz hamma narsa taxmin.

21-bob: keyingi qadamlar.

Har darsda takrorlanadigan uchta savol

Talabalarni shu savollarga o'rgating:

  1. "Bu raqam qayerdan keldi?" (1024, 2000, 0.3, 50)
  2. "Buni qanday TEKSHIRAMAN?" (SQL, print, tekshir_*.py)
  3. "Ishlamasa qanday BILAMAN?" (xato xabari, bo'sh natija)

Tekshiruv skriptlari — darsda ishlating

bash4 qator
python kitob/build.py            # kitob kodlari toza
python kitob/tekshir_nomlar.py   # kitob kod bilan mos
python tekshir_sahifalar.py      # 9 sahifa ochiladi
python tekshir_prompt.py 5       # javob to'g'ri tilda

Bu skriptlarni talabaga ko'rsating. Ular "men tekshirdim" degan gapning ma'nosini o'rgatadi.

Eng ko'p beriladigan savollar

"Nega Django emas, FastAPI?" Bu loyihada async va avtomatik API hujjat kerak. Django ham bo'ladi — mantiq (services/) o'zgarmaydi, faqat routes/.

"GPU yo'q, nima qilaman?" 10-bob: BACKEND_MODE=cloud. Kod bir xil.

"Javob noto'g'ri chiqdi, nima qilay?" 20-bobdagi tartib: avval retrieval o'lchang (Recall/MRR), keyingina promptga teging.

"Nechta chunk kerak?" Bu savolga javob yo'q — O'LCHANADI. Gold set tayyorlang.

Bu bobni bepul o'qidingiz.

Kitob o'rgatadi, lekin sizning kodingiz nega ishlamaganini ayta olmaydi. Kursda uy vazifangiz tekshiriladi.

Telegramda yozish Narxlar