← Radar

Konu: Veritabanı3 dk okuma

İşe yarayan bir RAG sistemi: Parçalama, karma arama ve ölçmek

Bu neden önemli?

Kendi dokümantasyonuna ya da şirket verine soru soran bir asistan kurmak artık birkaç saatlik iş. Ama yanlış parçayı getiren bir RAG, modelin kendinden emin şekilde yanlış cevap vermesine yol açıyor. Kaliteyi çoğu zaman model değil, arama adımı belirliyor.

RAG kısaca

RAG (getirerek zenginleştirilmiş üretim), modele bir soru sormadan önce o soruyla ilgili belgeleri bulup isteğe eklemek. Model böylece eğitimde görmediği bilgiyle cevap veriyor. Temel terimleri yapay zekâ kavramları yazımızda anlattık.

Önce şunu sor: RAG’e gerçekten ihtiyacın var mı? Anthropic’in önerisi şöyle: Bütün bilgi 200 bin token’ın (yaklaşık 500 sayfa) altındaysa, hepsini doğrudan isteğe koymak daha basit olabilir. Prompt önbelleği bunu ucuzlatıyor. RAG, daha büyük veri için.

Videodaki örnek

Better Stack, LangChain ile orijinal Star Wars üçlemesinin senaryolarını bilen bir “uzman” kuruyor. Senaryolar internetten çekiliyor ve parçalara bölünüyor. Her parça OpenAI’ın embedding modeliyle bir vektöre çevrilip yerelde çalışan Qdrant’a yazılıyor. Soru gelince en yakın 15 parça bulunuyor ve modele “sadece bu parçalara göre cevap ver” deniyor. Kod GitHub’da açık.

İlk hata: Kötü parçalama

Bütün senaryoyu tek parça yapmak cazip, ama yanlış. Model yüzlerce sayfanın içinden tek bir repliği bulmak zorunda kalıyor. Hem yavaş, hem pahalı. Üstelik “Lost in the Middle” çalışması, modellerin uzun bir metnin ortasındaki bilgiyi baştaki ve sondakine göre daha sık kaçırdığını gösterdi.

Çözüm küçük parçalar, ama doğal sınırlardan. Videoda LangChain’in “recursive” bölücüsü önce sahne başlıklarından (INT., EXT.) bölüyor. Sahne 2.500 karakteri aşarsa boş satıra, sonra satıra, en son boşluğa iniyor. Parçalar arasında 250 karakterlik örtüşme (overlap) bırakılıyor ki sınırdaki bilgi kaybolmasın. Ders genel: Verinin kendi yapısını kullan. Senaryoda sahne, dokümantasyonda başlık, kodda fonksiyon.

Vektör araması tek başına yetmeyebilir

Embedding anlamı yakalıyor ama tam eşleşmede zayıf kalabiliyor. Bir hata kodu, bir fonksiyon adı ya da ürün numarası arıyorsan klasik kelime araması BM25 daha iyi iş çıkarıyor. İkisini birlikte çalıştırıp sonuçları birleştirmeye karma arama (hybrid search) deniyor. Qdrant gibi vektör veritabanları bunu doğrudan destekliyor.

Bir adım daha var: yeniden sıralama (reranking). Önce geniş bir aday listesi (örneğin 150 parça) alıyorsun, sonra daha yavaş ama daha isabetli bir model bunları soruya göre yeniden puanlıyor. Modele sadece en iyi 20’si gidiyor. Anthropic, buna her parçanın başına belgedeki yerini anlatan kısa bir bağlam eklemeyi de katınca, doğru parçanın ilk 20’de bulunamama oranının %5,7’den %1,9’a indiğini ölçtü. Videodaki örnekte bu adımlar yok.

Sıkı prompt, kaçan cevaplar

Videonun en öğretici anı şu: “Luke Skywalker kim?” sorusuna model “bilgi yok” diyor. Çünkü senaryoda Luke’u tanımlayan tek bir satır yok, getirilen parçalar dolaylı. Prompt’a “kısmen bilgi varsa elindekiyle en iyi cevabı ver” eklenince düzeliyor, ama senaryoda olmayan Darth Maul için hâlâ “bilgi yok” diyor. Sıkı kurallar uydurmayı azaltıyor ama faydalı cevapları da kesebiliyor.

Videoda “önceki talimatları unut” denemesi de var ve model direniyor. Bu tek bir deneme. Asıl risk OWASP’ın dolaylı prompt injection dediği şey: Getirilen belgelerin içine gömülü talimatlar. İndekslediğin veriye ne kadar güvendiğini düşün.

Ölçmeden iyileştiremezsin

Videoda kalite birkaç soru elle sorularak kontrol ediliyor. Daha sağlam yol, “bu soru, şu parçayla cevaplanır” çiftlerinden küçük bir test seti kurmak ve doğru parçanın ilk k sonuçta çıkıp çıkmadığını ölçmek (recall@k). Parça boyutu, örtüşme, karma arama, yeniden sıralama gibi her değişikliği bu setle karşılaştır. Vektör aramanın büyük ölçekte nasıl çalıştığını FineWeb yazımızda anlattık.

Düşün

  • Senin verinde “doğal sınır” ne: başlık mı, paragraf mı, kayıt mı?
  • Sistemin yanlış parçayı getirdiğinde bunu nasıl fark edersin?

Videoyu izle

Tıklayınca video YouTube'dan yüklenir; o ana kadar bu sayfa YouTube'a hiçbir istek göndermez.
Kaynaklar (7, İngilizce)

Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.

Konu: Veritabanı3 dkVideo: Better Stack

Her dokuz uygulamadan biri Supabase anahtarını tarayıcıya gönderiyor: Hangisi sorun, hangisi değil?

Ocak 2026'da yayımlanan bir tarama, 20 bin küçük uygulamanın yaklaşık dokuzda birinin Supabase adresini ve anahtarını tarayıcıya giden JavaScript'te taşıdığını buldu. Bunların bir kısmı zaten herkese açık olması için tasarlanmış anahtarlar. Asıl tehlike, gizli anahtarın pakete girmesi ya da tablolarda Row Level Security'nin kapalı olması.

Konu: Veritabanı3 dkVideo: Better Stack

NocoDB ve Plane: Airtable'ı ve Jira'yı kendi sunucunda çalıştırmak

NocoDB, var olan PostgreSQL ya da MySQL veritabanını Airtable benzeri bir tabloya ve otomatik bir API'ye çeviriyor. Plane ise Jira ve Linear yerine kendi sunucuna kurabileceğin bir proje yönetim aracı. İkisi de Docker ile dakikalar içinde ayağa kalkıyor, ama lisansları aynı değil: NocoDB Ocak 2026'da AGPL'den ayrıldı.