Ana içeriğe geç

Chunking

Türkçe karşılığı
parçalama
Okunuşu
çanking

Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/chunking

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ölmekpython
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.

İlgili sayfalar

Kaynaklar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar