Talim

Qidiruv bosqichi

So'rovlarni ko'p o'lchamli vektor qidiruvi va ilg'or query translation usullari orqali izlash.

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

Qidiruv (Retrieval) oqimi

RAG Qidiruv bosqichi nima?

RAG tizimida qidiruv (retrieval) onlayn tarzda amalga oshiriladi. Foydalanuvchi tizimga savol berishi bilan ushbu so’rov embedding modeli yordamida “Query Embedding” ko’rinishiga keltiriladi. Keyin u saqlangan barcha vektorlar bilan solishtirilib, eng yaqin Top-K hujjat bo’laklari tanlab olinadi. Biroq, oddiy qidiruv foydalanuvchining noaniq so’rovlari tufayli kamchiliklarga ega bo’lishi mumkin. Shuning uchun ilg’or RAG tizimlarida quyidagi Query Translation usullari qo’llaniladi:

  1. Multi-Query: Savolni bir nechta sintaktik variantlarga o’zgartirib qidirish va barcha natijalarning unikal birlashmasini olish.
  2. RAG Fusion & Reciprocal Rank Fusion (RRF): Bir nechta so’rovlar bo’yicha olingan natijalarni matematik RRF formulasi yordamida qayta tartiblash va yanada mustahkam tartib o’rnatish.
  3. Decomposition: Murakkab va ko’p qirrali savolni ketma-ket yechiladigan oson sub-savollarga parchalash.
  4. Stepback Prompting: Umumiy konseptual bilimlarni jalb qilish maqsadida savolni kengroq ma’noda mavhumlashtirish (abstraction).
  5. HyDE (Hypothetical Document Embeddings): LLM orqali dastlab soxta javob generatsiya qilib, o’sha faraziy javob vektori orqali haqiqiy hujjatlarni topish.

Cosine Similarity va Boshqa Masofa Metrikalari

Vektorlar orasidagi masofani hisoblash uchun turli metrikalar qo’llaniladi:

Metrika Kosinus o’xshashligi (Cosine Similarity) Evklid masofasi (Euclidean Distance) Skalyar ko’paytma (Dot Product)
Matematik asosi Ikki vektor orasidagi burchak kosinusini o’lchaydi Nuqtalar orasidagi to’g’ri chiziqli geometrik masofa Vektorlar uzunligi va burchagi ko’paytmasi
Qiymat oralig’i -1 dan 1 gacha (1 - mutloq o’xshashlik) 0 dan cheksizlikkacha (0 - mos kelish) -cheksizlikdan +cheksizlikkacha
Qo’llanilishi Matnlar ma’nosi va semantik o’xshashlik uchun Qiymatlarning umumiy kattaligi ham muhim bo’lganda Normalizatsiya qilingan vektorlar bilan ishlashda

Amaliy kod: Cosine Similarity va Retrieval tizimi

Quyidagi kod yordamida kosinus o’xshashligi va uning yordamida vektor bazasidan Top-N natijalarni saralash funksiyasini dasturlaymiz:

def cosine_similarity(vector_a, vector_b):
    # Ikki vektor orasidagi burchak kosinusini hisoblash
    dot_product = sum([i * j for i, j in zip(vector_a, vector_b)])
    norm_a = sum([i ** 2 for i in vector_a]) ** 0.5
    norm_b = sum([i ** 2 for i in vector_b]) ** 0.5
    if norm_a == 0 or norm_b == 0:
        return 0.0
    return dot_product / (norm_a * norm_b)

def retrieve_top_n(query_vector, vector_database, top_n=3):
    results = []
    for chunk, db_vector in vector_database:
        score = cosine_similarity(query_vector, db_vector)
        results.append((chunk, score))
    # Ballarni kamayib borish tartibida saralash
    results.sort(key=lambda x: x[1], reverse=True)
    return results[:top_n]

Muhim

K (Top-K) parametridan noto'g'ri foydalanish qidiruv sifatini pasaytiradi. Juda kichik K muhim kontekstning qolib ketishiga, o'ta katta K esa til modelining kontekst oynasi (Context Window) keraksiz shovqin bilan to'lishiga olib keladi.

Amaliy maslahat

Qidiruvni tezlashtirish va kosinus formulasini soddalashtirish uchun bazaga saqlashdan oldin barcha zich vektorlarni L2-normalizatsiya qiling (vektor uzunligini 1 ga keltiring). Bu holatda kosinus o'xshashligi oddiy va juda tez skalyar ko'paytmaga aylanadi.

Diagramma tavsifi

Diagrammadagi qidiruv oqimi foydalanuvchi so’rovini qabul qilish bilan boshlanadi. Tizim so’rovni embedding modeliga uzatadi va “Query Embedding” hosil qiladi. Keyin “Similarity Search” yordamida vektorlar bazasidagi eng yaqin nuqtalar hisoblanadi. Yakuniy bosqichda esa faqatgina eng yuqori matematik ball to’plagan “Top-K Chunks” qat’iy ajratib olinib, generatsiya uchun uzatiladi.

Bu dars foydali bo‘ldimi?