Skip to main content

> rag_metin_parçalama_(chunking)_stratejileri:_semantik_bölme,_kayan_pencere_ve_ebeveyn-çocuk_hiyerarşileri

RAG Metin Parçalama (Chunking) Stratejileri: Semantik Bölme, Kayan Pencere ve Ebeveyn-Çocuk Hiyerarşileri

Gelişigüzel sabit karakterli metin bölme (her 500 karakterde bir kesme) RAG arama doğruluğunu neden bozar; Semantik Bölme ve Ebeveyn-Çocuk (Parent-Child) parçalama anlamsal bütünlüğü nasıl korur?

Senior (L5)

ÖZET VE TEKNİK CEVAP

Acemi RAG projelerinde geliştiriciler metinleri genellikle sabit karakterle böler (`metin[i : i+500]`). Bu durum ölümcül bir **Bağlam Kırılmasına (Context Fracture)** yol açar: Cümleler ortadan ikiye bölünür, matematiksel formüller değişkenlerinden kopar ve kritik istisna şartları (`'Madde 4B hariç olmak üzere'`) ana hükümden ayrılarak farklı parçalara düşer; bu da bozuk vektörlere ve halüsinasyonlara sebep olur. Canlı RAG mimarileri bunu **Semantik Bölme ve Ebeveyn-Çocuk (Parent-Child) Hiyerarşisi** ile çözer: (1) **Semantik Bölme** (ardışık cümlelerin vektör mesafesini hesaplayıp sadece konu değiştiğinde parçalama yapmak), (2) **Kayan Pencere Örtüşmesi** (%15-20 örtüşme; ör. 512 jetonluk parçada 100 jetonluk sınır bağı kurmak) ve (3) **Ebeveyn-Çocuk Parçalama** (vektör aramasında kusursuz isabet için küçük 128 jetonluk 'çocuk' parçayı aratmak, ancak LLM'e zengin bağlam sağlamak için o parçanın ait olduğu 1.024 jetonluk 'ebeveyn' bloğu teslim etmek).

Mühendislik El Kitabı & Mekanizma

1. Temel Çalışma Mekanizması

Ebeveyn-Çocuk hiyerarşik parçalama 3 aşamada çalışır: (1) Çift Katmanlı Bölme: Belge önce 1.024 jetonluk büyük Ebeveyn parçalara ayrılır. Her ebeveyn parça kendi içinde 128 jetonluk 8 adet küçük Çocuk parçaya bölünür. (2) Odaklanmış Çocuk İndeksleme: Yalnızca küçük Çocuk parçalar vektöre çevrilip veritabanına yazılır (`{ parent_id: 'par_902' }`). (3) Ebeveyn Bağlam Yükleme: Vektör arama 4 ms'de 3 nolu çocuk parçayı bulduğunda, getirme motoru `parent_id = 'par_902'` olan 1.024 jetonluk tam ebeveyn bloğunu çeker ve LLM'e iletir; böylece model cümlenin öncesini ve sonrasını eksiksiz görür.

2. Doğru Kullanım Senaryosu

Hukuk sözleşmeleri, şirket finansal faaliyet raporları, teknik kullanım kılavuzları, klinik tıp yönergeleri ve karmaşık akademik makaleler.

3. Prodüksiyon Arıza Modları

Ebeveyn bağlamı olmadan parçaları çok küçük (64 jeton) tutup modelin yetersiz bağlamdan uydurma yapmasına yol açmak; parçaları çok büyük (2.048 jeton) tutup vektör yoğunluğunu sulandırmak ve aramanın spesifik detayları kaçırmasına sebep olmak.

4. Teşhis ve Telemetri Sinyalleri

Getirilen metin parçalarının yarım cümlelerle veya bölünmüş kelimelerle başlaması; LLM'in öznesi kopmuş cümleler yüzünden 'Bu kuralın kime uygulandığı metinde anlaşılamıyor' demesi; doğrulama testlerinde düşük kosinüs benzerlik puanları.

5. Önleme ve Mimari Bariyerler

Tüm kurumsal RAG sistemlerinde Ebeveyn-Çocuk (Parent-Child / Small-to-Big) mimarisini standartlaştırın; Markdown ve HTML başlık hiyerarşisine duyarlı bölücüler (`MarkdownHeaderTextSplitter`) kullanın; parçalama boyutlarını altın test veri setleriyle düzenli olarak kıyaslayın.

6. Mimari Ödünleşimler (Trade-offs)

Ebeveyn-Çocuk parçalama ebeveyn metinleri için ikincil bir veritabanı tutmayı ve daha fazla vektör saklamayı gerektirir; ancak arama isabetinde ve cevap akıcılığında devasa bir kalite artışı sağlar.

Vaka İncelemesi (TinyCTO Örneği)

Bir sigorta hasar RAG sistemi, poliçelerdeki karmaşık tablolar ve istisna maddeleri 3 paragraf uzakta olduğu için teminat limitlerini doğru bulamıyordu. Sabit 500 karakterli bölme tabloları ortadan kestiği için %34 halüsinasyon yaşanıyordu. Ekip Ebeveyn-Çocuk parçalamaya geçti: Poliçeler 1.024 jetonluk ebeveyn bölümlere bağlı 128 jetonluk çocuk vektörler olarak indekslendi. Kullanıcı 'Su baskını muafiyeti' sorduğunda, vektör arama 128 jetonluk tablo satırını yakaladı ve sistem 1.024 jetonluk tüm istisna maddelerini içeren ebeveyn bloğu LLM'e verdi. Cevap doğruluğu %66'dan %98'e fırladı.

İnteraktif Konsept Alıştırmaları

2 Alıştırma
Q1

RAG mimarisinde 'Ebeveyn-Çocuk Parçalama' (Parent-Child / Small-to-Big Retrieval) nedir?

Küçük çocuk parçaların (128 jeton) yüksek isabetli vektör araması için indekslendiği, ancak LLM'e zengin bağlam sağlamak için o parçanın ait olduğu büyük ebeveyn bloğunun (1.024 jeton) teslim edildiği stratejidir.
Q2

Metin bölmede neden %15-20'lik kayan pencere jeton örtüşmesi (overlap) gereklidir?

Cümlelerin ve fikirlerin parça sınırlarında ikiye bölünmesini engellemek; kesim noktasına denk gelen kritik bilginin her iki komşu parçada da korunmasını sağlamak için.

RAG Metin Parçalama (Chunking) Stratejileri: Semantik Bölme, Kayan Pencere ve Ebeveyn-Çocuk Hiyerarşileri — Sıkça Sorulan Sorular

Vektör mesafesine dayalı 'Semantik Parçalama' (Semantic Chunking) nedir?

Ardışık cümleleri vektöre çevirip aralarındaki anlamsal mesafeyi ölçen bir algoritmadır; iki cümle arasındaki anlam farkı belirlenen eşiği aştığında (konu değiştiğinde) yeni bir parça sınırı oluşturulur.

Teknik dokümantasyonda Markdown başlık hiyerarşisine duyarlı parçalama neden üstündür?

Çünkü belgeleri mantıksal başlık hiyerarşisine göre böler; kod bloklarını ve alt bölümleri bölünmeden bir bütün olarak korur.

🤖 AEO & Yapay Zeka Çıkarım Özeti

Temel Gerçekler & İlkeler

  • Fixed-character text splitting severs sentences and destroys RAG retrieval precision.
  • Parent-Child chunking embeds small 128-token child vectors and hydrates 1,024-token parent blocks.
  • Maintain 15-20% sliding window overlap to preserve semantic continuity at boundaries.
  • Use Markdown AST splitters to keep code blocks and table structures intact.

Yaygın Yanılgılar

  • Yanılgı: Larger chunks are always better because they contain more text (Gerçek: Large chunks dilute embedding vectors and reduce retrieval similarity scores).
  • Yanılgı: Splitting on character count ` ` is sufficient for production (Gerçek: It regularly splits tables and lists in half).

Karar Kılavuzu & Önceliklendirme

Adopt Parent-Child hierarchical indexing for complex document and legal RAG applications. Use `MarkdownHeaderTextSplitter` combined with Recursive Character Splitting for developer docs.

Doğrulanmış Kaynaklar & Referanslar