Bölüm 8 · Büyük dil modellerinin parçaları · Ders 35
Erişim destekli üretim (RAG)
Model önce kılavuzda arar, sonra cevaplar
Veri. Depo robotunun kullanım kılavuzunu 12 kısa parçaya böldük (batarya, hız, yük, LiDAR, hata kodları…). Teknisyen robota 7 farklı soru soruyor. Kılavuzu hiç görmemiş bir dil modeli akıcı ama uydurma bir cevap verir ("yaklaşık 8 saat"). RAG önce sorunun kelimelerine en çok benzeyen parçaları bulur, onları cevabın yanına koyar; cevap kılavuzdaki sayıya dayanır.
import numpy as npdocs = ["battery lithium charge full hours three", # 12 kılavuz parçası (terimler)"battery runtime full hours six","battery low station return charge","speed max human slow","load max kg payload motor stop","lidar range meters scan","emergency stop button motor","error e12 wheel motor overheat cool minutes","error e31 lidar dirty lens clean","wifi network lost connection wait","ramp slope degrees max climb","temperature operating degrees range"]q = "battery charge hours" # soru 1: batarya kaç saatte dolar?V = sorted(set(" ".join(docs).split())); L = np.linalg.norm # sözlüktf = lambda s: np.array([s.split().count(w) for w in V]) # kelime torbasıD = np.array([tf(d) for d in docs])idf = np.log((1 + len(docs)) / (1 + (D > 0).sum(0))) + 1 # nadir terim = ağırE, qv = D * idf, tf(q) * idf # TF × IDFsim = E @ qv / (L(E, axis=1) * L(qv)) # kosinüs benzerliğitop = np.argsort(-sim)[:3] # en iyi k = 3 parçaprint(top + 1, sim[top].round(2)) # parça no, benzerlikprint("context:", [docs[i] for i in top]) # bağlam → cevap
Sahnedeki her sayı, aynı algoritmanın tarayıcında yapılan gerçek çalıştırmasından gelir (sabit tohum, her seferinde aynı sonuç). Python kodunu kendi bilgisayarında çalıştırırsan rastgele başlangıçlar farklı olacağı için sayılar biraz değişebilir.
Veri seti
Tüm veri setleri →Bu dersin kodu verisini kendi içinde üretir; indirilecek dosya yok. Kodu yine de aşağıda tarayıcında çalıştırabilirsin.
Kodu tarayıcıda çalıştırPython · NumPy · matplotlib · Pyodide
Python ve NumPy bu sayfada, tarayıcında çalışır (Pyodide). Kodu değiştirip yeniden çalıştırabilirsin; dersin veri setleri çalışma klasöründe hazır. Kod matplotlib kullanırsa grafikler çıktının altında görünür, yazdığı dosyalar (ör. egitim_gecmisi.csv) indirilebilir.
Çıktı
Çıktı burada görünecek.Nasıl çalışır
- Her parça bir kelime torbasına çevrilir: sözlükteki her terim için kaç kez geçtiği (TF).
- IDF: az parçada geçen terim (E12, menzil) ayırt edicidir ve ağırlığı büyür; her yerde geçen terim (batarya, motor) hafifler. Vektör = TF × IDF.
- Soru da aynı şekilde vektörleşir. Her parça ile kosinüs benzerliği hesaplanır; en yüksek k parça seçilir.
- Seçilen parçalar bağlam olarak modele verilir; cevap bu bağlamdaki cümleden kurulur ve kaynağı ([parça no]) gösterilir. Burada cevap bir şablondur, gerçek bir dil modeli değil.
- Şunu dene: 7. soruyu seç ve k’yı 1 yap. Soru "ağır" diyor, kılavuz "yük, kg"; kelimeler tutmadığı için acil durdurma parçası öne geçer ve doğru parça bağlama giremez. k = 2 ile girer.
Neden önemli
Kurumsal sohbet botları, kod asistanları ve arama motorlarının yapay zekâ cevapları RAG ile çalışır: model güncel ve özel belgeleri ezberlemek yerine arar, böylece uydurma azalır ve kaynak gösterilebilir. Robotikte servis robotunun kılavuz ve arıza kayıtlarından cevap vermesi, sahadaki teknisyene doğru prosedürü getirmesi bu yolla yapılır; gerçek sistemlerde TF-IDF yerine çoğunlukla öğrenilmiş vektörler (embedding) kullanılır.
ESOF 323, 11. hafta: robotlarda derin öğrenme →