Asosiy kontentga o‘tish
Innovialabs

LLM ilovalarida semantik keshlash: tezroq va arzonroq

Chuqur4 daq

Qisqacha

Semantik kesh LLM javoblarini savol embeddingi bilan birga saqlaydi va yangi savol ma’no jihatidan yetarlicha yaqin bo‘lsa, tayyor javobni qaytaradi — bu vaqt va tokenlarni tejaydi, lekin faqat foydalanuvchiga va tez o‘zgaruvchi ma’lumotlarga bog‘liq bo‘lmagan javoblar uchun xavfsiz.

Semantik kesh nima va qachon o‘zini oqlaydi

Oddiy kesh aniq moslik bo‘yicha ishlaydi: bir xil satr — bir xil javob. Lekin foydalanuvchilar kamdan-kam bir xil yozadi. «Parolni qanday tiklayman?» va «parolni unutdim, nima qilay» — turli satrlar, ammo maqsad bitta.

Semantik kesh savollarni ma’nosi bo‘yicha solishtiradi. Har bir savol embeddingga (vektorga) aylantiriladi va yangi savol vektori saqlangan vektorga yetarlicha yaqin bo‘lsa, model chaqirilmasdan tayyor javob qaytariladi.

U quyidagi holatlarda o‘zini oqlaydi:

  • ko‘p foydalanuvchilar o‘xshash savollar beradi (qo‘llab-quvvatlash boti, FAQ-assistent, ichki bilimlar bazasi);
  • javoblar hamma uchun bir xil va kam o‘zgaradi;
  • model chaqiruvi embedding chaqiruvi va vektor qidiruviga nisbatan sekin yoki qimmat.

Agar har bir so‘rov noyob bo‘lsa (aniq fayl uchun kod generatsiyasi, uzun shaxsiy suhbatlar), mosliklar kam bo‘ladi va kesh faqat kechikish qo‘shadi.

Bosqichma-bosqich qanday ishlaydi

  1. Savolni normallashtiring: ortiqcha bo‘shliqlarni olib tashlang, registrni bir xil qiling, ma’noni o‘zgartirmasa salomlashuvni olib tashlang.
  2. Saqlangan yozuvlar uchun ishlatilgan o‘sha model bilan embedding oling.
  3. Vektor omborida soha bo‘yicha filtr bilan eng yaqin qo‘shnini toping (pastdagi kesh kalitiga qarang).
  4. O‘xshashlik chegaradan yuqori bo‘lsa — keshdagi javobni qaytaring.
  5. Aks holda LLMni chaqiring, javobni qaytaring va yozuvni saqlang: vektor, savol, javob, metama’lumotlar, vaqt.

Normallashtirilgan vektorlarda kosinus o‘xshashligi bo‘yicha minimal qidiruv:

import numpy as np

def lookup(query_vec, entries, threshold):
    # query_vec va entry["vec"] L2 bo‘yicha normallashtirilgan
    best, best_score = None, -1.0
    for entry in entries:
        score = float(np.dot(query_vec, entry["vec"]))
        if score > best_score:
            best, best_score = entry, score
    return best["answer"] if best and best_score >= threshold else None

Prodakshnda sikl o‘rniga vektor bazasidagi taxminiy qo‘shni qidiruvi indeksi ishlatiladi, lekin mantiq o‘sha.

O‘xshashlik chegarasini qanday tanlash

Universal raqam yo‘q: u embedding modeliga, tilga va sohaga bog‘liq. Uni o‘z ma’lumotlaringizda kalibrlang.

  • Loglardan haqiqiy savol juftliklarini yig‘ing va belgilang: «o‘sha javob to‘g‘ri keladi» yoki «boshqa javob kerak».
  • Har bir juftlik uchun o‘xshashlikni hisoblang va ikki guruh qayerda kesishishini ko‘ring.
  • Soxta mosliklar (noto‘g‘ri javob berilgan) deyarli bo‘lmaydigan chegarani tanlang, hatto mosliklar soni kamaysa ham. O‘tkazib yuborilgan moslik bitta model chaqiruviga, soxta moslik esa foydalanuvchi ishonchiga tushadi.
  • Tafsilotlari farq qiladigan deyarli bir xil savollarga alohida e’tibor bering: «1452-buyurtma bo‘yicha qaytarish» va «1453-buyurtma», «2 foydalanuvchi uchun tarif» va «20 foydalanuvchi uchun». Embeddinglar ularni ko‘pincha juda yaqin joylashtiradi.

Amaliy usul — ikki chegara: yuqorisidan baland bo‘lsa keshni qaytaring, ikkalasi orasida arzon model yoki reranker moslikni tasdiqlasin, pastkisidan past bo‘lsa asosiy modelni chaqiring.

Kesh kaliti — faqat vektor emas

Ma’no o‘xshashligi yetarli emas. Yozuv faqat u yaratilgan sharoitlarda to‘g‘ri. Quyidagilar bo‘yicha saqlang va filtrlang:

  • model va tizim prompti versiyasi — yangi prompt to‘g‘ri javobni o‘zgartirishi mumkin;
  • javob tili;
  • tenant, rol yoki kirish darajasi — menejer va mijoz turli faktlarni olishi mumkin;
  • RAG javoblari uchun manba ma’lumotlar versiyasi (indeks yoki hujjat versiyasi).

Invalidatsiya va eskirish

Keshdagi javoblar eskiradi. Buni birinchi kundan rejalashtiring:

  • Kategoriya bo‘yicha TTL: barqaror ma’lumotnoma uchun uzoq, narxlar, jadvallar va qoldiqlar uchun qisqa.
  • Hodisa bo‘yicha invalidatsiya: bilimlar bazasidagi hujjat o‘zgarsa, unga asoslangan yozuvlarni o‘chiring. Buning uchun har bir yozuv bilan manba hujjatlar ID sini saqlang.
  • Versiyani almashtirish: yangi prompt yoki model qo‘lda tozalash o‘rniga yangi nomlar maydonini ochadi.
  • Qayta aloqa: dizlayk yoki «javob noto‘g‘ri» shikoyati yozuvni o‘chiradi va tekshiruvga yuboradi.

Qachon keshlash xavfli

Quyidagi holatlarda keshdan javob bermang:

  • javobda shaxsiy ma’lumotlar bor yoki u foydalanuvchi akkaunti, tarixi yoki huquqlariga bog‘liq;
  • javob real vaqtdagi holatga bog‘liq: balans, buyurtma holati, mavjudlik;
  • so‘rov vositalar orqali harakatlarni ishga tushiradi (bron qilish, to‘lov, xabar yuborish) — bilimni keshlang, yon ta’sirni emas;
  • yuridik, tibbiy yoki moliyaviy ifodalar har bir holatda tekshirilishi kerak.

Eng yomon ssenariy — foydalanuvchilar o‘rtasida sizib chiqish: B foydalanuvchi A uchun yaratilgan javobni oladi. Himoya — keshni tenant va foydalanuvchi bo‘yicha ajratish yoki shaxsiylashtirilgan ssenariylarni butunlay chiqarib tashlash.

Ko‘p uchraydigan xatolar

  • Mustaqil savol o‘rniga butun suhbat replikasini keshlash: «bu qancha turadi?» kabi aniqlashtirish kontekstsiz ma’nosiz.
  • Bitta indeksda turli embedding modellari vektorlarini aralashtirish.
  • Chegarani «ko‘z bilan» qo‘yish va soxta mosliklarni o‘lchamaslik.
  • Kontent yangilangandan keyin yozuvlarni tozalash imkoniyati yo‘qligi.
  • Kesh mosliklarini loglamaslik — shunda foydalanuvchilar aslida nima olganini tekshirib bo‘lmaydi.

Ko‘p beriladigan savollar

Provayderning prompt caching’i bir xil prompt prefiksini qayta ishlashni qayta ishlatadi, lekin javob baribir yangidan generatsiya qilinadi. Semantik kesh model chaqiruvini butunlay o‘tkazib yuboradi va ma’nosi yaqin savolga saqlangan javobni qaytaradi. Bular turli vazifalar va ularni birga ishlatish mumkin.

Bunda yordam beramiz

O‘zingiz shug‘ullanmasdan natija olishni istasangiz — biz har kuni shu bilan shug‘ullanamiz.

Loyihani muhokama qilish

Yana o‘qing

G‘oya yoki vazifangiz bormi? Bizga aytib bering

Ish kuni davomida javob beramiz va yechim taklif qilamiz. Konsultatsiya bepul.