Örnek sorular
Rag Chunking IndexingZorluk 1
Bir RAG indeksleme pipeline'ında 'chunking' (parçalama) adımı ne yapar?
- aKaynak dokümanları embed edilip indekslenmeden önce daha küçük parçalara böler.✓
- bVektör indekse kaydedilmeden önce bir embedding vektörünün boyutunu azaltır.
- cKullanıcının sorgusu retriever'a gönderilmeden önce içindeki stopword'leri temizler.
- dModelin ağırlıklarını, inference daha az bellek kullansın diye sıkıştırır.
Açıklama:Chunking, ham dokümanları her biri ayrı ayrı embed edilip indekslenebilecek ve tek başına getirilebilecek daha küçük parçalara böler. (b) zaten var olan bir vektör üzerinde boyut azaltmayı anlatır, doküman bölme değil. (c) sorgu ön işlemesidir. (d) model sıkıştırmayı anlatır, metin indekslemeyle ilgisizdir.
Rag Chunking IndexingZorluk 2
Bir ekip overlap'i chunk_size'ın %10'u olarak, tam sayı (floor) dönüşümüyle ayarlıyor. chunk_size=256 token iken kaç overlap token oluşur ve her pencere hangi step ile ilerler?
- aoverlap = 26 token (25.6 yukarı yuvarlandı); step = 256 - 26 = 230.
- boverlap = 25 token (25.6'nın floor'u); step = 256 - 25 = 231.✓
- coverlap = 10 token (yüzde doğrudan token sayısı olarak alındı); step = 246.
- doverlap = 25 token; step = 256, çünkü pencere her zaman chunk_size kadar ilerler.
Açıklama:256'nın %10'u 25.6'dır ve floor dönüşümü 25 overlap token verir; step = chunk_size - overlap = 256 - 25 = 231, kodda doğrulandı. (a) floor yerine yukarı yuvarlıyor. (c) '%10'u 10 token sanıyor. (d) step'i hesaplarken overlap'i yok sayıyor.
Rag Chunking IndexingZorluk 2
Bir korpus 10.000 chunk'a bölünüyor ve her chunk 768 boyutlu float32 bir vektör olarak embed ediliyor (değer başına 4 byte). İndeks ek yükünü göz ardı ederek, embedding vektörleri kabaca ne kadar ham depolama gerektirir? (1 MB = 1.000.000 byte)
- a10.000 x 768 = 7.680.000 byte, yaklaşık 7,7 MB.
- b10.000 x 4 = 40.000 byte, yaklaşık 0,04 MB.
- c10.000 x 768 x 4 = 30.720.000 byte, yaklaşık 30,7 MB.✓
- d768 x 4 = 3.072 byte, yaklaşık 0,003 MB.
Açıklama:Her vektör 768 float32 değeri, her biri 4 byte, tutar ve bunlardan 10.000 tane var: 10.000 x 768 x 4 = 30.720.000 byte, yaklaşık 30,7 MB, kodda doğrulandı. (a) değer başına 4 byte'ı atlıyor. (b) boyutu atlıyor. (d) chunk sayısını atlıyor.
Rag Chunking IndexingZorluk 2
Bir dokümanda tam olarak 1000 token var. chunk_size=200 ve overlap=50 token ile sliding window kullanılarak bölünüyor (son chunk daha kısa olabilir). chunks = ceil((total - size) / (size - overlap)) + 1 formülüyle kaç chunk oluşur? (tiktoken ile doğrulandı: ceil((1000-200)/150)+1 = 7)
Açıklama:step = size - overlap = 150. chunks = ceil((1000-200)/150) + 1 = ceil(800/150) + 1 = 6 + 1 = 7; bu, sliding window döngüsü doğrudan çalıştırılarak da doğrulandı. (a), (b) ve (c) step'in yanlış hesaplanmasından ya da yukarı yuvarlamanın hatalı yapılmasından kaynaklanır.
Rag Chunking IndexingZorluk 1
Bir embedding modeli, çağrı başına en fazla sabit sayıda girdi token'ı kabul eder. chunk_size bu limitten büyük ayarlanırsa ne olur ve nasıl ele alınmalı?
- aLimiti aşan chunk'lar kesilir, kuyruk token'ları düşer; chunk_size limit içinde tutulmalı.✓
- bModel, boyutu aşan chunk'ı otomatik böler ve parçaları ortalar, böylece içerik kaybolmaz.
- cLimit yalnızca sorgulara uygulanır, bu yüzden sorgular kısa olduğu sürece büyük chunk'lar sorun değildir.
- dBoyutu aşan chunk'lar vektörün boyutunu artırır, bu da retrieval doğruluğunu iyileştirir.
Açıklama:Modelin maksimumunu aşan girdiler kesilir, bu yüzden boyutu aşan bir chunk'ın kuyruğu embedding'e hiç ulaşmaz ve içeriği aranamaz hale gelir; chunk_size limit içinde tutulmalı. (b), (c) ve (d) embedding modellerinin sergilemediği davranışları anlatıyor.
Rag Chunking IndexingZorluk 3
Bir recursive chunker max_tokens=100 kullanıyor. 250 token'lık bir paragraf bunu aşıyor, bu yüzden cümlelere bölünüp 100 token'ı aşmadan chunk'lara açgözlü (greedy) paketleniyor (bir sonraki cümle taşacaksa yeni chunk başlar). Cümle token uzunlukları sırayla [40, 30, 55, 45, 80]. Kaç chunk oluşur ve token boyutları nedir?
- a[125, 125] boyutlarında 2 chunk, çünkü cümleler tam ortadan eşit bölünür.
- b[70, 100, 80] boyutlarında 3 chunk.✓
- cCümle başına bir tane olmak üzere 5 chunk: [40, 30, 55, 45, 80].
- d[70, 55, 45, 80] boyutlarında 4 chunk.
Açıklama:Greedy paketleme: 40+30=70 (sonraki 55 taşardı) chunk 1'i kapatır; 55+45=100 (sonraki 80 taşardı) chunk 2'yi kapatır; 80, chunk 3'ü oluşturur. Sonuç: [70, 100, 80], 3 chunk, döngü çalıştırılarak doğrulandı. (a) 100 limitini yok sayıyor, (c) paketlemeyi atlıyor, (d) gruplamayı yanlış sayıyor.