Asosiy qismga o'tish

demo_pipeline.py — UCHINCHI G'ALABA

14-bob 8 kod bloki 537 so'z

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:

yaml2 qator
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

bash1 qator
python demo_pipeline.py "Nihol narxi qancha?"

1-bosqich: vektor

python7 qator
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

python16 qator
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

python10 qator
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

python12 qator
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

python13 qator
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

python10 qator
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:

  1. Aniq javobi bor savol — "Nihol narxi qancha?" Yuqori similarity, to'g'ri javob.

  2. Qisman javobi bor savol — "Chegirma bormi?" O'rtacha similarity, ehtiyotkor javob.

  3. 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.

Telegramda yozish Narxlar