Talim

Generatsiya bosqichi

Kontekst bilan boyitilgan promptlarni yaratish, gallyutsinatsiyalarning oldini olish va oqimli javob.

12 daqiqa o‘qish · O‘rta → Ilg‘or

Generatsiya (Generation) oqimi

RAG Generatsiya bosqichi nima?

RAG tizimining eng so’nggi va asosiy bosqichi generatsiya (generation) jarayonidir. Qidiruv bosqichida topilgan kontekst bo’laklari foydalanuvchining asl so’rovi bilan birgalikda maxsus tuzilgan Prompt Template (prompt andozasi) ichiga joylashtiriladi. Biroq, zamonaviy tadqiqotlar shuni ko’rsatadiki, modelga shunchaki matnni uzatish etarli emas. Bu yerda bir nechta ilg’or konsepsiyalar mavjud:

  1. “Lost in the Middle” (O’rtada yo’qolish): LLM’larning kontekst oynasi katta bo’lsa-da, ular promptning boshi yoki o’rtasidagi ma’lumotlarni unutishga moyil bo’ladi (recency bias). Shu sababli, eng muhim bo’laklarni prompt oxiriga yaqinroq joylashtirish lozim.
  2. Corrective RAG (CRAG): Agar qidirilgan hujjatlar sifatsiz deb topilsa, tizim avtomatik ravishda web-qidiruv (Tavily/Google) orqali yangi kontekst to’playdi va shundagina generatsiyaga o’tadi.
  3. Active/Self-RAG (LangGraph flows): Generatsiya qilingan javobni bir necha marta tekshirish: javob berilgan hujjatlarga sodiqmi (faithfulness) va u foydalanuvchi savoliga mosmi? Agar tekshiruvdan o’tmasa, qayta qidiruv yoki qayta prompt yuboriladi.

Bu tizimli qayta tekshiruv va qayta qidiruv jarayonlari LLM tizimlarida Flow Engineering (oqim muhandisligi) deb ataladi. Ular tizimning mustahkamligini va ishlab chiqarish (production) sharoitida ishonchliligini mutlaq kafolatlaydi.

Naive Generation va RAG Generation solishtiruvi

Til modelining hech qanday qo’shimcha ma’lumotlarsiz va RAG tizimi yordamida javob berish farqlari:

Xususiyat Oddiy generatsiya (Naive - No RAG) RAG orqali generatsiya (RAG Generation)
Bilim doirasi Faqat model o’qitilgan (pre-training) statik ma’lumotlar Tashqi yuklangan yangi, maxsus yoki shaxsiy hujjatlar
Gallyutsinatsiya darajasi Yuqori (faktlar yetishmasa, o’zidan yolg’on ma’lumot to’qiydi) Juda past (model qat’iy ravishda berilgan dalillarga tayanadi)
Kontekst boshqaruvi Hech qanday boshqaruv yo’q, faqat savolning o’zi Tizimli joylashtirilgan, tartiblangan va tozalangan kontekst

Amaliy kod: Oqimli (Streaming) Generatsiya va Tizimli Instruksiya

Quyidagi kod yordamida biz kontekst va savol asosida prompt andozasini yaratib, Ollama yordamida javobni real vaqt rejimida (streaming) chiqaramiz:

import ollama

LANGUAGE_MODEL = 'hf.co/bartowski/Llama-3.2-1B-Instruct-GGUF'

def generate_stream_response(user_query: str, retrieved_chunks: list[str]):
    # Kontekstni toza ro'yxat shakliga keltirish
    formatted_context = "\n".join([f" - {chunk.strip()}" for chunk in retrieved_chunks])
    
    # Qat'iy tizimli prompt andozasi
    system_instruction = f"""Siz aqlli yordamchisiz.
Faqat quyidagi kontekstdan foydanib savolga javob bering.
Agar kontekstda javob bo'lmasa, 'Ma'lumot topilmadi' deb javob bering:
---
{formatted_context}
"""
    # Ollama orqali oqimli javob yuborish
    stream = ollama.chat(
        model=LANGUAGE_MODEL,
        messages=[
            {'role': 'system', 'content': system_instruction},
            {'role': 'user', 'content': user_query}
        ],
        stream=True
    )
    return stream

Muhim

Gallyutsinatsiyalarning oldini olish uchun tizimli promptda (system prompt) model o'z bilimidan foydalanmasligi haqida qat'iy ko'rsatma berish shart. Aks holda, LLM berilgan kontekstda javob bo'lmasa, uni o'zining ichki bilimlaridan to'ldirishga harakat qiladi va bu ishonchlilikni buzadi.

Amaliy maslahat

Topilgan matn bo'laklarini andozaga joylashtirishdan oldin ularni toza ro'yxat ko'rinishida formatlang hamda bo'sh joylarni olib tashlang. Bu modelning kontekstni to'g'ri o'qib olishiga yordam beradi va matnni tahlil qilishdagi sintaksis xatoliklarni kamaytiradi.

Diagramma tavsifi

Generatsiya bosqichi “Topilgan bo’laklar” qabul qilinishi bilan boshlanadi. Tizim ularni “Prompt qurish” bosqichida foydalanuvchi savoli bilan andozaga birlashtiradi. Keyin, “LLM so’rov” orqali so’rov neyron tarmoqqa uzatiladi. Yakunda esa model berilgan hujjatlar doirasida ishonchli va gallyutsinatsiyalarsiz “Asoslangan javob” qaytaradi.

Bu dars foydali bo‘ldimi?