20-bo‘lim

Yakuniy loyiha

To'liq savol-javob tizimini bitta sinfda yig'ish, uni halol baholash, chegara tanlash va yaxshilash rejasini tuzish.

🕑 8 daqiqa o‘qish 📄 847 so‘z 👁 2 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. Tizim
  2. Halol baholash
  3. Chegara
  4. Ishlashi
  5. Kesh
  6. Yaxshilash rejasi
  7. Darslikning xulosasi
  8. Xulosa

Oxirgi bo'lim. Barcha qismlarni - qidiruv, chegara, prompt, kesh va baholashni - bitta ishlaydigan tizimga birlashtiramiz.

Tizim #

Python
class SavolJavob:
    def __init__(s, model="sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2",
                 chegara=0.45, k=3):
        s.tok = AutoTokenizer.from_pretrained(model)
        s.mdl = AutoModel.from_pretrained(model); s.mdl.eval()
        s.chegara, s.k = chegara, k
        s.hujjatlar, s.indeks, s.kesh = [], None, {}

    def qosh(s, hujjatlar):
        s.hujjatlar = hujjatlar
        s.indeks = s.vek([f"{h['sarlavha']}. {h['matn']}" for h in hujjatlar])
        s.kesh.clear()                      # indeks o'zgardi - kesh eskirdi
        return s

    def javob(s, savol):
        r = s.qidir(savol)
        if not r or r[0][0] < s.chegara:
            return {"holat": "malumot_yoq", "ball": r[0][0] if r else 0.0,
                    "manba": None, "prompt": None}
        return {"holat": "topildi", "ball": r[0][0],
                "manba": r[0][1]["sarlavha"], "prompt": s.prompt(savol, r)}
Natija
=== Tizim qurildi ===
  6 hujjat, indeks (6, 384), 3580 ms

Har bo'lim shu sinfda o'z izini qoldirgan:

QismQaysi bo'limdan
Tokenizatsiya va max_length2, 12-bo'limlar
Mean pooling va normallash15-bo'lim
Kosinus o'xshashlik bilan qidiruv16-bo'lim
Chegara va «Ma'lumot yo'q»17-bo'lim
Prompt tuzilishi17-bo'lim
Kesh va kalit normallash19-bo'lim
qosh() da keshni tozalash16, 19-bo'limlar

Halol baholash #

18-bo'limdagi qoida bo'yicha, avval o'lchaymiz:

Natija
=== Baholash ===
  Recall@1:  30.8%  (4/13)
  Recall@3:  69.2%  (9/13)
  Recall@5:  92.3%  (12/13)

Raqamlar yomon. Recall@1 atigi 30.8% - har uch savoldan faqat bittasida to'g'ri hujjat birinchi o'rinda.

Recall@5 esa 92.3% - ya'ni hujjat deyarli har doim topiladi, lekin tartibda pastda qoladi.

Chegara #

Natija
  chegara 0.40: javob berdi 13/13 | manbasi to'g'ri 4
  chegara 0.45: javob berdi  9/13 | manbasi to'g'ri 4
  chegara 0.50: javob berdi  8/13 | manbasi to'g'ri 4
  chegara 0.55: javob berdi  5/13 | manbasi to'g'ri 3

0.40 dan 0.50 ga ko'tarilganda to'g'ri javoblar soni o'zgarmadi (4 ta), lekin xato javoblar 9 tadan 4 taga tushdi.

Demak 0.50 yaxshiroq: bir xil foyda, kamroq zarar. Bu chegarani taxmin bilan emas, jadval bilan tanlash degani.

Ishlashi #

Natija
  SAVOL: Ta'tilga qancha oldin ariza beraman?
    -> manba: Ta'til (ball 0.623)

  SAVOL: Yo'l puli qoplanadimi?
    -> Ma'lumot yo'q (eng yuqori ball 0.406 < 0.45)

  SAVOL: Kompaniyada nechta xodim bor?
    -> Ma'lumot yo'q (eng yuqori ball 0.295 < 0.45)

Uchinchi holat to'g'ri: bazada xodimlar soni haqida ma'lumot yo'q va tizim buni tan oldi.

Ikkinchisi esa xato rad etish. Javob bazada bor - «Transport xarajati» hujjati aynan shunday boshlanadi:

«Yo'l puli va transport xarajati oyiga 500 ming so'mgacha qoplanadi.»

Savolda «yo'l puli» bor, hujjatda ham «yo'l puli» bor - lekin ball atigi 0.406.

Bu modelning o'zbek tilidagi chegarasi

So'z aynan mos kelgan holatda ham model past ball berdi.

Bu 10 va 15-bo'limlarda ko'rgan narsaning davomi: ko'p tilli model o'zbek tilida ishonchsiz. U inglizcha jumlalarda aniq ishlaydigan bog'lanishlarni o'zbekchada uzib qo'yadi.

Shuning uchun bu tizim hozircha ishlab chiqarishga tayyor emas. Uni shunday e'lon qilish - 13-bo'limdagi «100% aniqlik» xatosining takrori bo'lardi.

Tayyor tizim: nima ishlaydi, nima yo'q Ishlaydi Quvur to'liq: indeks, qidiruv, chegara, prompt Bilmaganda «Ma'lumot yo'q» deydi Kesh 438 barobar tezlashtiradi Baholash to'plami va raqamlar bor Recall@5 = 92.3% - hujjat topiladi muhandislik qismi tugallangan Ishlamaydi Recall@1 = 30.8% - tartib yomon «Yo'l puli» aynan mos kelsa ham topilmadi Model o'zbek tilida kuchsiz Baza kichik - atigi 6 hujjat Javob yozuvchi model ulanmagan sifat qismi ishlanishi kerak Halol xulosa: quvur tayyor, sifat esa hali yetarli emas
Ishlaydigan tizim va yaxshi tizim - bir xil narsa emas

Kesh #

Natija
  birinchi so'rov:  10.86 ms
  normallangan takror:   0.025 ms  (438x tez)

«Ta'til necha kun?» va «ta'til NECHA kun?» - bir xil kalit berdi, chunki kalit normallangan (19-bo'lim).

Yaxshilash rejasi #

Raqamlarga tayanib, tartib aniq:

QadamNima qilinadiKutilgan foyda
1k ni 5 ga oshirishRecall 30.8% -> 92.3%
2Hujjatlarni 1-2 jumlalik parchalarga bo'lishAniqroq moslik
3Gibrid qidiruv: kalit so'z + embedding«Yo'l puli» kabi holatlar
4Boshqa embedding modelini sinashO'zbek tilida kuchliroq variant
5Baholash to'plamini 50-100 savolga kengaytirishIshonchli o'lchov
6Javob yozuvchi modelni ulashTo'liq javob

Birinchi ikkitasi bugun bajariladi va katta foyda beradi. Uchinchisi - 16-bo'limdagi maslahat: kalit so'z aniq atamalarni, embedding ma'noni topadi.

Eng muhim tavsiya

Har qadamdan keyin o'sha 13 ta savolni qayta o'tkazing.

O'zgarish foyda berdimi yoki zarar - buni faqat raqam aytadi. Ikkita o'zgarishni birdan kiritsangiz, qaysi biri ishlaganini bilmay qolasiz (PyTorch darsligi, 12-bo'lim).

Darslikning xulosasi #

Yigirma bo'limda quyidagi yo'lni bosib o'tdik:

Bo'limlarNima qildik
1-2Transformer tarixi va tokenizatsiya
3-7E'tibor mexanizmini qo'lda qurdik
8-9Undan ishlaydigan kichik GPT yasadik
10-11Tayyor modellar bilan tanishdik
12-14Fine-tuning qildik va uning chegarasini ko'rdik
15-18Embedding, qidiruv, RAG va baholash
19-20Ishlab chiqarish va yakuniy tizim

Eng muhim saboqlar esa texnik emas edi:

  • 100% natija ko'rsangiz, shubhalaning (13-bo'lim).
  • Bazaviy darajani o'lchamasdan model qurmang (12-bo'lim).
  • Bo'lish chegarasi manba bo'yicha o'tkaziladi (14-bo'lim).
  • Tayyor modelni o'z tilingizda sinamasdan ishonmang (10, 11-bo'limlar).
  • RAG sifati qidiruv sifatidan yuqori bo'lmaydi (17-bo'lim).
Keyin nima o'qish kerak
  • Modellar: XLM-R, mT5 va o'zbek tili uchun maxsus sozlangan modellar.
  • Vositalar: sentence-transformers, FAISS, vektor bazalari.
  • Usullar: LoRA bilan arzon fine-tuning, qayta saralash (reranking).
  • Ma'lumot: eng katta foyda - o'z sohangizda o'zbekcha to'plam yig'ish.

Oxirgi qator eng muhimi. Modellar yaxshilanib boradi, lekin sizning sohangizdagi o'zbekcha ma'lumotni sizdan boshqa hech kim yig'maydi.

Yakuniy topshiriq
  1. SavolJavob sinfini to'liq yozib ishga tushiring.
  2. O'z sohangizdan kamida 8 ta hujjat qo'shing.
  3. 13-15 ta baholash savolini yozing.
  4. Recall@1, @3 va @5 ni o'lchang.
  5. To'rt xil chegarada javob va xato sonini jadvalga yozing.
  6. Eng yaxshi chegarani tanlab, asoslang.
  7. Hujjatlarni kichik parchalarga bo'lib, Recall qanday o'zganini o'lchang.
  8. Kesh kalitini normallash ishlayotganini tekshiring.
  9. Tizim xato rad etgan bitta savolni toping va sababini tahlil qiling.
  10. Yaxshilash rejasidan bittasini bajarib, natijani raqam bilan solishtiring.

Xulosa #

  • Butun darslik bitta SavolJavob sinfiga sig'di.
  • Unda har bo'limdan bir qism bor: tokenizatsiya, pooling, qidiruv, chegara, kesh.
  • Tizim Recall@1 = 30.8%, Recall@5 = 92.3% ko'rsatdi.
  • Ya'ni hujjat topiladi, lekin tartibda pastda qoladi.
  • Chegarani 0.40 dan 0.50 ga ko'tarish xatolarni 9 dan 4 ga tushirdi, foydani kamaytirmasdan.
  • Tizim bilmagan savolni to'g'ri rad etdi - bu muhim xossa.
  • Lekin «Yo'l puli» savolini xato rad etdi, garchi so'z hujjatda aynan bo'lsa ham.
  • Sabab - modelning o'zbek tilidagi kuchsizligi, kodda emas.
  • Kesh takroriy so'rovni 438 barobar tezlashtirdi.
  • Halol xulosa: quvur tayyor, sifat esa hali yetarli emas - va buni yashirmaslik kerak.

Darslik shu yerda tugaydi. Endi eng foydalisi - o'z ma'lumotingizda o'z tizimingizni qurish va uni raqam bilan o'lchash.

Xatolik topdingizmi?

Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.