İçeriğe geç

RAG'siz / RAG'li

7 yıllık bir çalışanın yıllık izni kaç iş günü?
İngilizce, logların yazdığı gibi: “How many working days of annual leave does an employee with 7 years of service get?”
→ 25-30 iş günü
bare model, no documents

Model politikayı bilmiyor. Cevabın şirketin politikasına bağlı olduğunu söylüyor, ama yine de sayı veriyor; hiçbiri 22 değil. Peki bilgiyi modele, soruyla birlikte, her seferinde versek?

How many working days of annual leave does an employee with 7 years of service get?RAG’sizgemma3:4bdil modelisoru25-30 iş günüuydurmaRAG’liretrievalbge-m3embeddingsoru1024sayıChromaen yakın parçalaren iyi 3 chunkhr-leave §3izin tablosu: 7 yıl → 22+ iki parça dahapromptkurallar + kaynaklar + sorugemma3:4baynı model22 iş günü [1][1] = hr-leave §3
günün sorusu, iki yoldan — ikisinin cevabı da 22 iş günüRAG: 3 chunkarama + rerank + cevap ≈ 2 sn976 prompt tokenhepsi: 8 dokümancevap çağrısı 27149 ms9954 prompt tokenbu 8 dokümandan biri yalnızca İK’ya açık: ücret bantları
  1. RAG'siz

    Soru doğrudan modele gider; cevap uydurma: 25-30 iş günü.

  2. Soru önce aranır

    RAG’li düzende önce arama yapılır. El kitabı önceden küçük parçalara bölündü; bunlara chunk diyoruz. Arama, soruya anlamca en yakın üç chunk’ı seçer. Birinde izin tablosu var: 7 yıl → 22 iş günü.

  3. Anlama göre nasıl aranır?

    bge-m3 adlı ikinci bir model metni bir sayı listesine çevirir; buna embedding diyoruz. Anlamı yakın metinlerin sayıları da yakın olur. Her chunk’ın sayıları bir kez hesaplandı; bunları vector DB’miz Chroma saklıyor. Soru da sayılara çevrilir ve Chroma en yakın chunk’ları döndürür.

  4. Prompt: kaynaklar + soru

    Seçilen parçalar kurallarla birlikte sorunun önüne konur. Modele giden metnin tamamına prompt diyoruz.

  5. Aynı model, doğru cevap

    Model aynı, ağırlıklarına kimse dokunmadı. Değişen yalnızca önüne konan metin: cevap 22 iş günü, kaynağı [1] hr-leave §3.

  6. Hepsini prompt'a koysak?

    El kitabının 8 dokümanını tek prompt’a koyduk: 9954 token; RAG’in prompt’u 976. Cevap yine 22 iş günü, ama tek çağrı 27149 ms, yani yaklaşık 27 saniye sürdü. RAG’in bütün yolu, arama ve rerank dahil, yaklaşık 2 saniye.

  7. Asıl iş seçmek

    Hepsini koyarsanız her soruda bütün el kitabının bedelini ödersiniz; bugün bile varsayılan context window’umuza sığmıyor; yalnızca İK’nın görebileceği ücret tablosunu da herkes okur.

Önce hiçbir şey kurulmamışken:

npm run question — başlamadan
$ npm run question
━━ QUESTION OF THE DAY How many working days of annual leave does an employee with 7 years of service get?
HOW bare model, no documents
Typically, an employee with 7 years of service gets 25-30 working days of annual leave, depending on the company's policy.

Sonra bütün pipeline kurulduğunda (HOW satırına ve altındaki kaynaklara bakın):

npm run question — vector DB dolunca
$ npm run question
━━ QUESTION OF THE DAY How many working days of annual leave does an employee with 7 years of service get?
HOW chroma store · chunker section · rerank on · filter {"edition":"2025","access":["all"]}
An employee with 7 years of service gets 22 working days of annual leave [1].
[1] hr-leave@2025#3 Annual Leave Policy › §3
[2] hr-leave@2025#7 Annual Leave Policy › §7
[3] hr-leave@2025#4 Annual Leave Policy › §4

Modelin önüne konan metnin tamamı (kurallar, numaralı kaynaklar, soru) F · Cevap üretimi sayfasında.

“Hepsini prompt’a koy” denemesi: bütün dokümanlar tek prompt’ta, arama yok. Ayrıntısı: Performans ve maliyet.

bütün dokümanlar tek prompt'ta
$ every document in one prompt (no retrieval)
documents 8 (40709 characters)
prompt tokens 9954
time 27149 ms
An employee with 7 years of service gets 22 working days of annual paid leave. [1]
Arama yanlış parçayı getirirse ne olur?

Model yanlış context’le çalışır: ya “bilmiyorum” der ya da yanlış bir cevap yazar. Bunun canlı bir örneği B · Chunking sayfasında: doküman kötü bölündüğünde arama tabloyu bulamıyor, model de kaynak göstererek yanlış bir sayı yazıyor. Kaynak göstermek cevabı doğru yapmaz.

Sorun bilgiyi vermek değil, doğru parçayı seçmek.