demo_pipeline.py — UCHINCHI G'ALABA
Hamma qism tayyor. Endi ularni birga ko'ramiz.
Bu fayl javob bermaydi. U qanday javob berilganini ko'rsatadi.
Nega bu fayl bor
Oddiy chatbot faqat natijani ko'rsatadi:
Savol: Nihol narxi qancha? Javob: Standart tarif oyiga 250 000 som.
Talaba ichida nima bo'lganini ko'rmaydi. Uning uchun bu sehr.
demo_pipeline.py har bir bosqichni ochib beradi.
Ishga tushiring
python demo_pipeline.py "Nihol narxi qancha?"
1-bosqich: vektor
1-BOSQICH: SAVOLNI VEKTORGA AYLANTIRISH
model: bge-m3
Savol : Nihol narxi qancha?
Aniqlangan til: UZ
Vektor o'lchami: 1024
Birinchi 8 ta son: [+0.0234, -0.4512, +0.8821, ...]
Vaqt : 89 ms
Talabalarga aytadigan gap: bu 1024 ta son savolning ma'nosi. Boshqa hech narsa emas.
2-bosqich: SQL qidiruv
2-BOSQICH: VEKTOR QIDIRUV (pgvector)
Bajarilayotgan SQL:
SELECT ch.id, ch.chunk_text, d.title,
1 - (ch.embedding_local <=> :vec) AS similarity
FROM rag.chunks ch
JOIN rag.documents d ON d.id = ch.document_id
ORDER BY ch.embedding_local <=> :vec
LIMIT 10
Topildi: 10 ta chunk (12 ms)
# similarity matn
----------------------------------------------------------
1 0.8734 Standart tarif oyiga 250 000 som turadi...
2 0.8102 Premium tarif oyiga 450 000 som...
3 0.6891 Talabalarga 20 foiz chegirma...
Haqiqiy SQL ko'rsatiladi. Bu muhim — talaba ORM orqasida nima borligini ko'radi.
12 ms — HNSW indeks ishlayapti. Indekssiz bu 10 barobar sekin bo'lardi.
3-bosqich: reranking
3-BOSQICH: RERANKING (cross-encoder) 10 ta -> 5 ta yangi eski o'zgarish matn ---------------------------------------------------------- 1 3 3->1 To'lov Payme, Click orqali... 2 1 1->2 Standart tarif oyiga 250 000... 3 3 = Premium tarif... IZOH: 2 ta chunk O'RNI O'ZGARDI.
3->1 — mana reranker ning foydasi, ko'z bilan ko'rinadigan
holda.
4-bosqich: prompt
4-BOSQICH: PROMPT QURISH LLM ga yuborilayotgan TO'LIQ matn: ---------------------------------------------------------- Sen yordamchi botsan. Quyidagi QOIDALARGA... === KONTEKST === [1] Nihol tariflari Standart tarif oyiga 250 000 som turadi... === SAVOL === Nihol narxi qancha? === JAVOB === ---------------------------------------------------------- Uzunlik: 1847 belgi (~461 token)
Eng muhim bosqich. Talaba butun promptni ko'radi va tushunadi: RAG — bu kontekst yig'ish san'ati, boshqa hech narsa emas.
5-bosqich: javob va vaqt
5-BOSQICH: JAVOB GENERATSIYASI
Javob: Standart tarif oyiga 250 000 som turadi.
Unga 100 GB internet kiradi.
Manba: Nihol tariflari (similarity 0.873)
VAQT TAQSIMOTI
embedding : 89 ms ( 3%)
qidiruv : 12 ms ( 0%)
reranking : 340 ms (12%)
generatsiya : 2410 ms (85%)
---------------------------------
JAMI : 2851 ms
Vaqt taqsimoti — juda foydali dars.
Talabalar odatda "qidiruv sekin" deb o'ylaydi. Aslida qidiruv 12 ms, LLM esa 2410 ms. Optimizatsiya kerak bo'lsa — LLM tomonga qarang, SQL tomonga emas.
Ollama ishlamasa
1-BOSQICH: SAVOLNI VEKTORGA AYLANTIRISH
[XATO] Vektor yaratilmadi.
Sabab: Ollama ishlamayapti yoki model yuklanmagan.
Tekshiring:
1) ollama serve
2) ollama pull bge-m3
3) curl http://localhost:11434/api/tags
TO'XTATILDI — embedding bosqichida
Traceback emas, tushunarli xabar. Dars paytida bu juda muhim: 30 qatorlik Python xatosi o'rniga aniq ko'rsatma.
Dars uchun tavsiya
Bu skriptni uch xil savol bilan ishlating:
-
Aniq javobi bor savol — "Nihol narxi qancha?" Yuqori similarity, to'g'ri javob.
-
Qisman javobi bor savol — "Chegirma bormi?" O'rtacha similarity, ehtiyotkor javob.
-
Javobi YO'Q savol — "Marsda hayot bormi?" Past similarity, "ma'lumotim yo'q".
Uchinchisi eng muhim. U tizim halol ekanini ko'rsatadi. Agar u ham javob yozsa — promptingiz kuchsiz, threshold pastligini tekshiring.
Bu bobni bepul o'qidingiz.
Kitob o'rgatadi, lekin sizning kodingiz nega ishlamaganini ayta olmaydi. Kursda uy vazifangiz tekshiriladi.