İçeriğe atla
FerdiGidenby FerdiSoftBETA v2.4
Yapay Zeka Üzerine Eğitimler · Ders 2/5

RAG Nedir? Kendi Belgelerinizle Çalışan Yapay Zekâ Asistanı Mimarisi

RAG (Retrieval-Augmented Generation) ile şirket belgelerinizden yanıt veren bir asistanın mimarisini; parçalama, embedding ve benzerlik aramasını Python örneğiyle öğrenin.

Orta 13 dk 9 görüntülenme
Başlanmadı
Bu derste
  1. Sorun: model sizin belgelerinizi bilmez
  2. RAG'in adımları
  3. Benzerlik araması: kosinüs benzerliği
  4. Modele giden istem
  5. Tasarım kararları
  6. İpuçları
  7. Sık yapılan hatalar
  8. Özet

Sorun: model sizin belgelerinizi bilmez

Bir dil modeline "iade politikamız kaç gün?" diye sorarsanız, şirketinizin belgelerini görmediği için ya bilmediğini söyler ya da genel bir tahmin üretir. Modeli tüm belgelerinizle yeniden eğitmek pahalı ve yavaştır. RAG (Retrieval-Augmented Generation) bu sorunu daha basit çözer: soru geldiğinde önce belgelerinizden ilgili parçaları bulur, sonra bu parçaları modele bağlam olarak verip yanıt ürettirir.

RAG'in adımları

  1. Parçalama (chunking): Belgeler birkaç paragraflık parçalara bölünür.
  2. Vektöre çevirme (embedding): Her parça, anlamını temsil eden bir sayı dizisine (vektör) dönüştürülür.
  3. Saklama: Vektörler bir vektör veritabanında ya da basit bir tabloda tutulur.
  4. Arama: Kullanıcının sorusu da vektöre çevrilir; anlamca en yakın parçalar bulunur.
  5. Yanıt üretme: Bulunan parçalar soruyla birlikte modele verilir; model yalnız bu bilgilere dayanarak yanıt verir.

Benzerlik araması: kosinüs benzerliği

İki vektörün ne kadar benzer olduğunu ölçmenin yaygın yolu kosinüs benzerliğidir. Gerçek uygulamada vektörleri bir embedding modeli üretir; aşağıdaki örnekte fikri göstermek için küçük, elle yazılmış vektörler kullanıyoruz:

import math

def kosinus(a, b):
    carpim = sum(x * y for x, y in zip(a, b))
    return carpim / (math.sqrt(sum(x * x for x in a)) * math.sqrt(sum(y * y for y in b)))

# Gerçekte: vektor = embedding_modeli(metin)  — burada temsilî değerler
parcalar = {
    "İade süresi teslimattan itibaren 14 gündür.": [0.9, 0.1, 0.0],
    "Kargo ücreti 500 TL üzeri siparişlerde ücretsizdir.": [0.1, 0.9, 0.1],
    "Mağazamız hafta içi 09:00-18:00 arası açıktır.": [0.0, 0.2, 0.9],
}
soru_vektoru = [0.85, 0.2, 0.05]  # "Ürünü kaç gün içinde iade edebilirim?"

sirali = sorted(parcalar.items(), key=lambda p: kosinus(soru_vektoru, p[1]), reverse=True)
en_iyi = [metin for metin, _ in sirali[:2]]
print(en_iyi)

Modele giden istem

Bulunan parçalar, modelin yalnız onlara dayanmasını isteyen bir talimatla birlikte gönderilir:

Aşağıdaki belgelere dayanarak soruyu yanıtla. Belgelerde yanıt yoksa
"Bu konuda bilgim yok" de ve tahmin yürütme. Yanıtın sonunda kullandığın
belge numarasını belirt.

<belgeler>
<belge no="1">İade süresi teslimattan itibaren 14 gündür.</belge>
<belge no="2">Kargo ücreti 500 TL üzeri siparişlerde ücretsizdir.</belge>
</belgeler>

<soru>Ürünü kaç gün içinde iade edebilirim?</soru>

Tasarım kararları

  • Parça boyutu: Çok küçük parçalar bağlamı koparır, çok büyükler alakasız bilgi taşır. Birkaç paragraflık parçalar ve parçalar arasında küçük bir örtüşme iyi bir başlangıçtır.
  • Üst veri: Her parçaya belge adı, tarih ve bölüm gibi bilgiler ekleyin; hem süzme yapabilir hem de kaynak gösterebilirsiniz.
  • Güncelleme: Belge değiştiğinde yalnız ilgili parçaların vektörlerini yeniden üretin.

İpuçları

  • Kaynak göstermeyi zorunlu kılın; kullanıcı yanıtın nereden geldiğini görebilsin.
  • Anahtar kelime aramasını vektör aramasıyla birleştirmek (hibrit arama) ürün kodu gibi kesin ifadelerde sonucu iyileştirir.
  • Gerçek kullanıcı sorularından bir test listesi hazırlayın ve her değişiklikten sonra yanıtları karşılaştırın.

Sık yapılan hatalar

  • Bulunan parçaları vermeden yalnız soruyu modele göndermek; model yine tahmin eder.
  • "Belgede yoksa bilmediğini söyle" talimatını unutmak.
  • Gizli belgeleri yetki kontrolü olmadan arama dizinine eklemek; her kullanıcı yalnız görmeye yetkili olduğu parçaları almalı.

Özet

RAG, modeli yeniden eğitmeden kendi bilgilerinizle çalıştırmanın en pratik yoludur: parçala, vektöre çevir, en yakın parçaları bul ve modele kaynak göstererek yanıtlat. Sonraki adım olarak kendi SSS sayfanızı parçalara bölüp küçük bir deneme asistanı kurun.

Etiketler #rag#embedding#vektör arama#yapay zekâ asistanı#bilgi tabanı

Dersi bitirdin mi?

Tamamlandı olarak işaretle, yol ilerlemen güncellensin ve sıradaki derse geç.

Ücretsiz Teklif Al