# Chunking

Adres: https://softwaredictionary.org/tr/terimler/chunking
Kategori: Yapay Zekâ ve Makine Öğrenmesi
Son güncelleme: 2026-10-05
Türkçe karşılığı: parçalama
Okunuşu: çanking

Kısaca: Chunking, uzun belgeleri embedding'e çevrilip saklanmadan önce küçük parçalara böler; böylece bir RAG sistemi yalnızca ilgili kısımları bulup modele iletebilir.

## RAG'de chunking (parçalama) nedir?

Bir retrieval-augmented generation (RAG) sistemi koca bir kılavuzu dil modeline veremez; uzun bir belgenin tek bir embedding'i de pek çok konuyu tek bir vektörde bulanıklaştırır. Bu yüzden belgeler önce genellikle birkaç yüz token'lık chunk'lara bölünür. Her chunk kendi embedding'ini alır ve bir vektör veritabanında saklanır; soru geldiğinde sistem soruya en yakın birkaç chunk'ı getirir ve prompt'a ekler.

Nasıl böldüğünüz önemlidir. Sabit boyutlu chunking metni belirli sayıda token'da bir keser, çoğu zaman yüzde 10 ila 20 örtüşmeyle; böylece ortadan bölünen bir cümle en az bir chunk'ta bütün olarak yer alır. Yapıya duyarlı chunking ise başlıklar, paragraflar ve cümleler ya da kaynak koddaki fonksiyonlar gibi doğal sınırları tercih eder. İlk araştırmalar basit bir başlangıç noktası koydu: Dense Passage Retrieval ve ilk RAG makalesi Wikipedia'yı 100 kelimelik pasajlara böldü.

Chunk boyutu bir ödünleşimdir. Küçük chunk'lar bir soruyla tam olarak eşleşir ama onları açıklayan bağlamı kaybedebilir; büyük olanlar bağlamı korur ama eşleşmeyi seyreltir ve context window'u daha çabuk doldurur. Yaygın bir çözüm, her chunk'ı başlığı, bölümü ve kaynak adresi gibi meta verilerle saklamak ya da küçük chunk'ları bulup modele çevrelerindeki daha büyük bölümü vermektir. Seçim genellikle birkaç boyutu gerçek sorularla deneyerek yapılır.

## Önemli noktalar

- Chunking belgeleri, tek tek embedding'e çevrilip getirilen pasajlara böler.
- Chunk'lar genellikle birkaç yüz token uzunluğundadır ve çoğu zaman biraz örtüşür.
- Başlıklarda, paragraflarda ya da cümlelerde bölmek fikirleri bütün tutar.
- Küçük chunk'lar tam eşleşir; büyük olanlar daha fazla bağlam taşır.

## Örnek: Python'da metni örtüşen chunk'lara bölmek

```python
def chunk(words, size=200, overlap=40):
    """Split a list of words into chunks of `size` words that share `overlap` words."""
    step = size - overlap
    return [words[i:i + size] for i in range(0, max(len(words) - overlap, 1), step)]

words = ("lorem " * 1000).split()  # 1,000 words
chunks = chunk(words)
print(len(chunks))                 # 6
print([len(c) for c in chunks])    # [200, 200, 200, 200, 200, 200]
```

## Sık sorulan sorular

**Hangi chunk boyutunu kullanmalıyım?**

Tek bir doğru cevap yok; belgelere ve sorulara bağlı. Küçük bir örtüşmeyle birkaç yüz token yaygın bir başlangıç noktasıdır. İki ya da üç boyutu gerçek sorulardan oluşan bir set üzerinde deneyin ve getirdiği chunk'lar soruları en iyi cevaplayanı seçin.

**Neden bütün belgeyi prompt'a koymuyoruz?**

Uzun prompt'lar daha pahalıdır, daha yavaş çalışır ve context window'u aşabilir; ayrıca modeller uzun bir bağlamın başındaki ve sonundaki bilgiyi ortasındakinden daha iyi kullanma eğilimindedir. Yalnızca ilgili chunk'ları getirmek prompt'u kısa ve odaklı tutar.

## Kaynaklar

- [Karpukhin et al.: Dense Passage Retrieval for Open-Domain Question Answering (2020)](https://arxiv.org/abs/2004.04906)
- [Lewis et al.: Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (2020)](https://arxiv.org/abs/2005.11401)
- [Liu et al.: Lost in the Middle: How Language Models Use Long Contexts (2023)](https://arxiv.org/abs/2307.03172)

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
