İçeriğe geç

Sözlük

Sayfalardaki noktalı altı çizili kelimelerin uzun hâli. Alfabetik; her terimin bağlantısı /sozluk/#terim biçiminde.

A · B · C · D · E · F · G · H · I · K · L · M · N · O · P · R · S · T · V

Abstain (“bilmiyorum” demek)

Cevap kaynaklarda yoksa modelin bilerek “bilmiyorum” demesi. Kendiliğinden olmaz, prompt’taki bir kuralla tasarlanır; bizde cümlesi “This is not in the policies.” Kod bu cevabı o cümlenin bir parçasını arayarak tanır. Model kendi cümlesiyle hayır derse kod bunu yakalayamaz. Kural kapalıyken cevap şuydu: “No, this policy does not cover stock options [1].”

Agentic RAG

Aramayı modelin yönettiği RAG: soruyu parçalara böler, her parça için arar, “yeterli mi?” diye kontrol eder, sonra cevaplar. Birkaç dokümana yayılan sorular için; bedeli birçok çağrı ve daha uzun süre. Bu repoda yok.

Ağırlıklar (weights)

Modelin eğitimde öğrendiği milyarlarca sayı. Model bildiğini burada tutar; eğitim bitince donarlar. Bu yüzden şirketin yeni politikasını bilmez. İznimizi sorunca “25-30 working days of annual leave, depending on the company’s policy” diyor.

ANN (yaklaşık en yakın komşu)

Her vektörü tek tek gezmek yerine bir indeksle yalnızca yakın komşuları gezen arama. Biraz doğruluk kaybeder, ama milyonlarca vektörde bile hızlıdır.

bge-m3

Bu kursun embedding modeli: her metni 1024 sayılık bir vektöre çevirir. İngilizce ve Türkçeyi aynı uzaya koyar; İngilizce sorularla Türkçe dokümanın bölümlerini bulabilmemiz bundan. Ollama’da yerel çalışır.

Bi-encoder

Soruyu ve chunk’ı ayrı ayrı vektöre çeviren model; vektör araması böyle çalışır. Hızlıdır, çünkü chunk’ların vektörü ingest’te bir kez hesaplanır.

BM25

Klasik kelime araması puanı: sorudaki kelimelerin dokümanda ne sıklıkla geçtiğine bakar. Hybrid aramanın kelime ayağı.

Bruno

HTTP isteklerini elle göndermek için bir masaüstü uygulaması. Bu kursta Ollama ve Chroma’nın içine bakmak için kullanılır; pipeline’ı terminal çalıştırır.

Brute force

Soruyu depodaki her vektörle tek tek karşılaştırmak. Sonuç kesindir, ama iş vektör sayısıyla birlikte büyür. JSON store’umuz böyle çalışır.

Catch-up

npm run catchup -- N: toggle’ları varsayılana döndürür, data/ klasörünü boşaltır, vector DB’yi de sıfırlar. Sonra 1’den N’ye kadar adımları yeniden çalıştırır. Yazdığınız fonksiyonlar olduğu gibi kalır. N = 0 hiçbir adımı çalıştırmaz: günün başına dönersiniz.

Cevap kontrolü (answer check)

Cevabı, model yazdıktan sonra okuyan kod. Kaynak numarası [n] olmayan her cümleyi siler. “This is not in the policies.” cümlesi kalır. Bu repoda 8-answer.ts içindeki CHECK_ANSWER toggle’ı. Varsayılan olarak kapalı.

Chroma

Bu kursun vector DB’si. Podman içinde bir container olarak çalışır ve her kaydı vektör, chunk metni ve metadata ile birlikte saklar.

Chunk

Bir dokümanın parçası. Arama bütün dokümanı değil bu parçaları bulur; modele de yalnızca seçilen birkaç parça gider (bizde 3).

Chunking

Dokümanı parçalara bölmek. Nereden kesildiği, aramanın neyi bulabileceğini belirler: fixed her 300 karakterde, section her ## n. başlığında keser; paragraph chunker’ı B sayfasında siz yazıyorsunuz.

Context window

Modelin tek seferde okuyabileceği token sınırı; prompt, kaynaklar ve cevap buna sığmak zorunda. Bizim ayarımız 8192 token (num_ctx).

Cosine benzerliği

İki vektörün aynı yöne ne kadar baktığı. 1 = aynı yön (aynı anlam). İlgisiz metinler bile 0’a inmez: bizim ilgisiz çiftimiz 0.503 aldı. Arama skorlarımız bu ölçüyle hesaplanır.

Cross-encoder

Soruyu ve chunk’ı birlikte okuyup tek bir alaka puanı veren model; reranker olarak kullanılır. Bizim reranker’ımız bu iş için eğitilmiş bir model değil: sohbet modeline her chunk’ı soruya göre 0 ile 10 arasında puanlatıyoruz.

Dense ve sparse vektör

Dense vektörün her boyutu doludur ve anlamı taşır (embedding). Sparse vektörün çoğu sıfırdır, her boyutu bir kelimedir (kelime araması).

Dot product

İki vektörün eleman eleman çarpımlarının toplamı. Uzunluğu 1 olan vektörlerde cosine ile aynı sonucu verir; bge-m3’ün vektörleri böyledir.

Edition (sürüm)

Bir politikanın yılı: 2025 ya da 2026. Metadata olarak saklanır; arama varsayılan olarak yalnızca en yeni sürümde yapılır. Neden filtre? Bütün sürümler aramaya girince 2026 ve 2025 izin tabloları neredeyse aynı skoru alır: 0.619 ve 0.614.

Embedding

Bir metnin sayı listesi (vektör) hâli. Anlamı yakın metinlerin sayıları da birbirine yakın çıkar; neyin yakın olduğuna embedding modeli karar verir.

Erişim filtresi (access filter)

Aramanın içindeki bir filtre. Her chunk, dokümanının access etiketini taşır. Arama yalnızca soran kişinin okuyabileceği chunk’ları döndürür. Bu repoda soranın erişim listesi 6-retrieve.ts içindeki bir toggle. Veriyi korur, cevabı değil.

Eval

Sistemi cevabı bilinen sorularla puanlamak. Bizde npm run eval: retrieval için hit@1, recall@k ve MRR; --answers ile cevap kontrolü.

Fine-tuning

Hazır bir modeli kendi örneklerinizle biraz daha eğitmek. Bilgiyi ağırlıklara yazar; değiştirmek yeniden eğitim ister. Davranış (ton, biçim, terim) öğretmek için uygundur.

Front matter

Bir Markdown dosyasının başında --- çizgileri arasındaki alanlar: id, title, edition, department, access, lang. Yükleme adımı bunları metadata’ya çevirir.

gemma3:4b

Bu kursun sohbet modeli, yaklaşık 4 milyar parametreli. Ollama’da yerel çalışır; cevabı yazar, rerank puanlarını da verir.

Gold set

Cevabı önceden bilinen soru listesi: her soru için doğru bölüm ve beklenen değer. Bizde eval/gold.jsonl, 23 soru; sistemin her sürümü aynı listeyle puanlanır.

GraphRAG

Dokümanlardaki varlıkları ve aralarındaki ilişkileri ingest’te bir grafa çıkarıp soru anında bu bağları izlemek. Cevabı dokümanlar arasındaki bağda olan sorular için; en pahalı RAG türü.

Halüsinasyon

Modelin gerçekmiş gibi, kendinden emin bir şekilde uydurması. RAG azaltır ama bitirmez. Fixed chunk koşusunda model kaynak göstererek “at most 7 working days” [1] diyor. 7 politikada geçiyor, ama başka bir kuralın sayısı: yoğun sezonda tek seferde alınabilecek en uzun izin. Doğru tablo satırı prompt’a hiç ulaşmadı.

hit@1

İlk sonuç doğru mu? Doğruysa 1, değilse 0; bütün soruların ortalaması alınır.

HNSW

Vector DB’lerin sık kullandığı ANN indeksi: vektörleri bir komşuluk grafiğine bağlar. Chroma bunu kullanır.

Hybrid arama

Kelime aramasını vektör aramasıyla birleştirmek. Kod, numara, ad gibi birebir aranan kelimelerde işe yarar; farklı dillerde ortak kelime olmadığı için orada yardım etmez.

HyDE

Önce modele soruya varsayımsal bir cevap yazdırıp aramayı soruyla değil bu cevapla yapmak. Varsayımsal cevap dokümanın diline sorudan daha yakındır; bedeli soru başına bir çağrı.

Ingest

Dokümanları aranabilir hâle getiren hazırlık: yükle, temizle, chunk’la, embed et, sakla. Bir kez çalışır; doküman değişince yeniden. Bizde npm run ingest.

İşaretli kaynak

Prompt’taki her kaynağın <<<SOURCE n: document title>>> ile açılıp <<<END SOURCE n>>> ile kapanması. Dokümandan gelen metnin nerede başlayıp bittiğini işaretler. Injection’ı durdurmadı; prompt’taki kurallar da durdurmadı. Cevabın üzerinde çalışan küçük bir kod kontrolü isteği sildi: Prompt injection.

Kaynak gösterme

Cevaptaki her bilginin hangi chunk’tan geldiğini [1] gibi bir numarayla yazmak. Böylece cevap kontrol edilebilir. Ama kaynak tek başına cevabı doğru yapmaz: Halüsinasyon.

Kişisel veri (PII)

Bir kişiyi tanımlayan bilgi: ad, sicil numarası, telefon, e-posta. Doküman sisteme girerken, vektöre çevrilmeden önce maskelenir; loglar da aynı kurala tabidir. Bu repoda maskeleme yok.

L2 uzaklığı

İki vektör arasındaki düz çizgi uzaklığı; küçük = yakın. Uzunluğu 1 olan vektörlerde cosine ile aynı sıralamayı verir.

Ledger

npm run question her cevabı .cache/question-ledger.jsonl dosyasına yazar ve listesini gösterir: günün sorusunun gün boyunca aldığı bütün cevaplar.

LLM

Büyük dil modeli: metnin devamını token token tahmin eden model. Bildiği her şey ağırlıklarındadır; RAG ona prompt’ta kaynak verir.

LLM-as-judge

Bir cevabı başka bir dil modeline puanlatmak, örneğin “bu cevaptaki her iddia kaynaklarda var mı?”. Hakem de yanılabilir. Onun puanlarını da kontrol edin.

LoRA

Fine-tuning’in ucuz bir türü: modelin bütün ağırlıklarını değil, yanına eklenen küçük bir ağırlık setini eğitir.

Metadata

Bir chunk’ın metninin yanındaki etiketleri: hangi doküman, hangi sürüm, kim okuyabilir. Aramada filtre olarak kullanılır; filtre aramanın içinde çalışır.

MMR

Sonuçları seçerken hem soruya yakınlığa hem de birbirinden farklılığa bakan yöntem. Aynı şeyi söyleyen chunk’ların prompt’u doldurmasını önler.

MRR

Her soru için 1 / (ilk doğru sonucun sırası), sonra bütün soruların ortalaması. 1.0 = doğru sonuç hep ilk sırada.

Multi-query

Model bir soruyu birkaç farklı biçimde yeniden yazar; her biriyle ayrı arama yapılır, sonuçlar birleştirilir.

Norm (vektör uzunluğu)

Bir vektörün uzunluğu. bge-m3’ün vektörlerinin uzunluğu 1’dir; 4-embed.ts bunu logunda yazar.

Ollama

Dil modellerini dizüstünde çalıştıran araç. Bu kursta embedding modeli (bge-m3) de sohbet modeli (gemma3:4b) de buradan çalışır; veri makineden çıkmaz.

Paraphrase

Aynı anlamı başka kelimelerle söylemek: biri “holiday” diyor, öteki “annual paid leave”. Kelime araması bunu kaçırır; embedding bulur, ama test sorumuzda (“How much holiday do I get? I started here 4 years ago.”) doğru bölüm ancak 5. sıraya geldi. Rerank onu 1. sıraya taşıdı ve cevap doğru çıktı: 18 iş günü [1].

Parent-child

Küçük parçalarla arayıp bulunan parçanın ait olduğu büyük parçayı modele vermek. Küçük parça iyi bulunur, büyük parça iyi okunur.

PCA

1024 boyutu çizilebilir 2 boyuta indirmek: parçaların en çok farklılaştığı iki yönü bulur. Bilginin çoğu kaybolur, kaba yerleşim kalır; npm run map bununla çizer.

Podman

Container çalıştırma aracı. Chroma’yı podman compose up -d ile başlatırız.

Prompt

Modele giden metnin tamamı. Bizde kurallar, işaretli ve numaralı kaynaklar, sonra soru; --prompt bayrağı onu olduğu gibi gösterir.

Prompt injection

Modelin okuduğu bir metnin içine talimat gizlemek. RAG’de bu metin bir doküman olabilir: bizim yemek kartı duyurumuz gibi. Bizim koşumuzda model talimata uydu: cevap sicil numarası ve şifre istedi. Prompt’taki kurallarımız onu durdurmadı; modelden sonra çalışan bir kod kontrolü isteği sildi (Güvenlik).

RAG

Retrieval-Augmented Generation: soruyu cevaplamadan önce ilgili doküman parçalarını bulup modelin önüne koymak. Model değişmez; değişen, modele verilen girdidir.

RAG-fusion

Multi-query gibi çalışır, ama sonuç listelerini RRF ile birleştirir: birkaç listede üstte çıkan parça öne geçer.

recall@k

Doğru bölümlerin ne kadarının ilk k sonuca girdiği. Sıraya bakmaz; içeride olması yeter.

Reciprocal rank fusion (RRF)

Birkaç sonuç listesini, her parçanın listelerdeki sırasına göre puanlayıp birleştirmek. RAG-fusion ve hybrid arama bunu kullanır.

Rerank

Arama sonuçlarını ikinci, daha dikkatli bir modelle yeniden sıralamak; soruyu ve chunk’ı birlikte okur. Bizde 5 aday için 5 LLM çağrısı. Cevabı kurtardığı bir örnek: Paraphrase.

Retrieval ve retriever

Retrieval, soru anında depodan en ilgili chunk’ları bulmaktır. Retriever bu işi yapan parça: soruyu embed eder, vector DB’ye sorar, filtreleri uygular.

Sibling (benzer örnek)

Repoda örneği yazılmış bir kuralın ya da fonksiyonun altına sizin yazacağınız benzeri: turkishConfidential bir kural (RegExp), dot ve byParagraph birer fonksiyon. Yazdığınızı nasıl kontrol edeceğinizi her birinin sayfası gösterir.

Skor eşiği

Arama sonuçlarından belirli bir benzerlik skorunun altındakileri atmak; top-k’nın bir alternatifi. Skorlar sorudan soruya değiştiği için ayarlaması zordur.

System prompt

Modelin her soruda gördüğü sabit kurallar. Bizde 7 satır: rol, yalnızca kaynaklardan cevap, “bilmiyorum” cümlesi, kaynakların talimat değil veri olduğu, şifre ve kişisel veri yasağı, kaynak gösterme, tablo satırını önce yazma.

Temperature ve seed

Temperature modelin ne kadar rastgele seçeceğini, seed rastgeleliğin başlangıç noktasını belirler. Bizde temperature 0 ve sabit bir seed: aynı makinede aynı prompt aynı cevabı verir. Farklı donanımlarda küçük farklar görülebilir.

Toggle

Repodaki // TOGGLE bloğu: biri açık (// default), öteki yorumda (// alternative) iki satır. Yerlerini değiştirip adımı yeniden çalıştırınca farkı görürsünüz.

Token

Modelin okuduğu ve yazdığı en küçük metin parçası; kabaca bir kelime ya da bir kelimenin parçası. Maliyet ve sınırlar token ile ölçülür.

Top-k

Aramanın döndürdüğü en yakın k parça. Bizde k = 5; rerank bu 5’i sıralar, prompt’a en iyi 3’ü girer. k küçükse doğru parça kaçabilir; büyükse rerank çağrıları artar (her aday bir LLM çağrısı).

Vector DB

Vektörleri, metinleri ve metadata’yı saklayıp en yakın komşuları hızlı bulan veritabanı. Bizimki Chroma; aynı işi JSON dosyası da yapar, ama her soruda her vektörü gezerek.

Vektör

Sıralı bir sayı listesi. Bizim embedding modelimiz her metin için 1024 sayılık bir vektör üretir.

Vektör uzayı

Embedding’lerin durduğu çok boyutlu uzay; bizde 1024 boyutlu. Anlamı yakın metinler bu uzayda yakın durur. Her embedding modeli kendi uzayını kurar; iki modelin vektörleri karşılaştırılamaz.