AI Prompt Engineering · Ders

Uzun Metinler için Parçalama Stratejileri

Sabit boyutlu, cümle sınırlarına dayalı ve anlamsal parçalama yaklaşımlarını öğrenin.

1. ders / 413 adım

Uzun Metinler için Parçalama Stratejileri, CoddyKit'te ücretsiz bir AI Prompt Engineering dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Prompt Engineering öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Prompt Engineering kursu toplamda 4 dersten oluşur.

Uzun Belgeler Neden Zorluk Çıkarır

LLM'lerin bir bağlam penceresi vardır — tek seferde işleyebilecekleri en fazla belirteç sayısı. GPT-4 128 bin belirteci, Claude ise 200 bin belirteci destekler; ancak birçok belge bu sınırları bile aşar. Daha da önemlisi, araştırmalar model doğruluğunun çok uzun bağlamlarda genellikle düştüğünü göstermektedir. Parçalama, belgeleri işlemeden önce daha küçük parçalara ayırma işlemidir.

Sabit Boyutlu Parçalama

Sabit boyutlu parçalama, içerik sınırlarından bağımsız olarak metni her N belirteçte (veya karakterde) böler. En basit stratejidir ve anlamsal anlayış gerektirmez.

Tipik parça boyutu: 500–1000 belirteç. Parçaları dizine eklemek ve getirmek kolaydır; ancak cümleleri ortadan bölebilir ve sınırlarda anlam kaybına yol açabilir.

import tiktoken

def fixed_chunk(text, max_tokens=1000):
    enc = tiktoken.get_encoding('cl100k_base')
    tokens = enc.encode(text)
    chunks = []
    for i in range(0, len(tokens), max_tokens):
        chunk_tokens = tokens[i:i + max_tokens]
        chunks.append(enc.decode(chunk_tokens))
    return chunks

chunks = fixed_chunk(long_document)
print(f'Total chunks: {len(chunks)}')

Sabit Boyutlu Parçalamanın Avantajları ve Dezavantajları

Avantajları:

  • Uygulaması basittir — NLP gerekmez
  • Parça boyutları öngörülebilirdir — API maliyetlerini yönetmek daha kolaydır
  • Hızlı işleme

Dezavantajları:

  • Cümle ve paragraf sınırlarını keser
  • Parçalar arasında bölünen bir cümle, getirme sırasında bağlamını kaybeder
  • Özetleme için elverişsizdir — parça bir savın ortasında bitebilir

Cümle Sınırlarında Parçalama

Cümle sınırlarında parçalama, metni doğal cümle veya paragraf kesişimlerinden böler. Her parça tam bir cümle sonunda biter; böylece hiçbir cümle ortadan bölünmez. Bu yöntem daha okunabilir ve tutarlı parçalar üretir.

Sınırları algılamak için bir cümle belirteçleyici (spaCy veya NLTK) kullanın, ardından parça hedef boyuta ulaşana kadar cümleleri gruplayın.

import spacy

nlp = spacy.load('en_core_web_sm')

def sentence_chunk(text, max_tokens=1000):
    doc = nlp(text)
    sentences = [sent.text.strip() for sent in doc.sents]
    chunks, current, count = [], [], 0
    for sent in sentences:
        word_count = len(sent.split())
        if count + word_count > max_tokens and current:
            chunks.append(' '.join(current))
            current, count = [], 0
        current.append(sent)
        count += word_count
    if current:
        chunks.append(' '.join(current))
    return chunks

Anlamsal Parçalama

Anlamsal parçalama bir adım daha ileri gider — metni konu değiştiğinde böler. Bitişik cümleleri gömerek ve cosine_similarity ölçerek tartışmanın yeni bir konuya geçtiği noktayı tespit edebiliriz.

Benzerlik bir eşik değerinin altına düştüğünde parça sınırı ekleyin. Bu yöntem, konu bakımından bütünlüklü parçalar üretir ve geri getirmeli üretim (RAG) için idealdir.

from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np

model = SentenceTransformer('all-MiniLM-L6-v2')

def semantic_chunk(sentences, threshold=0.75):
    embeddings = model.encode(sentences)
    chunks, current = [], [sentences[0]]
    for i in range(1, len(sentences)):
        sim = cosine_similarity(
            [embeddings[i-1]], [embeddings[i]]
        )[0][0]
        if sim < threshold:
            chunks.append(' '.join(current))
            current = []
        current.append(sentences[i])
    if current:
        chunks.append(' '.join(current))
    return chunks

Üç Stratejinin Karşılaştırılması

Seçim yapmanıza yardımcı olacak yan yana bir karşılaştırma:

  • Sabit boyutlu: en hızlı, sınırları en az doğru olan yöntem — basit işlem hatları için kullanın
  • Cümle sınırlarında: cümle bütünlüğünü korur — tutarlılığın önemli olduğu durumlarda kullanın
  • Anlamsal: konu bütünlüğü en iyi olan yöntem — hassas getirmenin kritik olduğu RAG için kullanın

Uygulamada anlamsal parçalama, gömme hesaplaması nedeniyle gecikme ekler. Seçiminizi getirme doğruluğu gereksinimlerine göre yapın.

Getirme Görevleri için Parçalama

Geri getirmeli üretim (RAG) için parçalar arama birimine dönüşür. Bir kullanıcı sorgusu gömülür, ardından en benzer parçalar getirilerek isteme eklenir.

Daha küçük parçalar (200–400 belirteç) getirme kesinliğini artırır — her parça tek bir odaklanmış fikir içerir. Daha büyük parçalar (800–1000 belirteç) daha fazla bağlam sağlar; ancak ilgili pasajın yanında ilgisiz içerikler de barındırabilir.

import openai
import numpy as np

client = openai.OpenAI(api_key='sk-...')

def embed(text):
    resp = client.embeddings.create(
        model='text-embedding-3-small',
        input=text
    )
    return np.array(resp.data[0].embedding)

def retrieve(query, chunks, top_k=3):
    q_emb = embed(query)
    scores = [(i, np.dot(q_emb, embed(c))) for i, c in enumerate(chunks)]
    scores.sort(key=lambda x: x[1], reverse=True)
    return [chunks[i] for i, _ in scores[:top_k]]

Özetleme Görevleri için Parçalama

Özetleme için parçalar, eksiksiz bir savı veya bölümü içerecek kadar büyük olmalıdır. 600–800 belirteçlik cümle sınırı parçaları iyi sonuç verir.

Her parça bağımsız olarak özetlenir (eşleştir adımı), ardından özetler birleştirilerek nihai özet oluşturulur (indirge adımı). Bu, sonraki derste ele alınan klasik eşleştir-indirge düzenidir.

Örtüşme: Parça Sınırlarını Birleştirme

Sınır hatalarını azaltmaya yarayan pratik bir teknik: parçalar arasında örtüşme ekleyin. N parçasının son 100–200 belirteci, N+1 parçasının başında tekrarlanır.

Örtüşme, bir sınırı aşan cümlenin en az bir parçada tam olarak bulunmasını sağlar. Bu, özellikle getirme için önemlidir — sınırın iki tarafına yayılan bir konuyla ilgili sorgu, örtüşen parçayla eşleşir.

def fixed_chunk_with_overlap(text, max_tokens=1000, overlap=200):
    enc = tiktoken.get_encoding('cl100k_base')
    tokens = enc.encode(text)
    chunks = []
    step = max_tokens - overlap
    for i in range(0, len(tokens), step):
        chunk_tokens = tokens[i:i + max_tokens]
        chunks.append(enc.decode(chunk_tokens))
        if i + max_tokens >= len(tokens):
            break
    return chunks

Parça Başına Üst Veri Zenginleştirme

Sonraki adımların kaynağına başvurabilmesi için her parça üst veri taşımalıdır:

  • source: dosya adı veya URL
  • page: sayfa numarası
  • chunk_index: belgedeki konum
  • section: bölüm veya başlık

Bu üst veriler, bir vektör veritabanında (Pinecone, Chroma, Weaviate) gömme vektörüyle birlikte depolanır ve getirilen parçalarla birlikte döndürülür; böylece LLM kaynaklara atıfta bulunabilir.

def chunk_with_metadata(text, source='doc.pdf', page=1):
    chunks = fixed_chunk_with_overlap(text)
    return [
        {
            'text': chunk,
            'metadata': {
                'source': source,
                'page': page,
                'chunk_index': i
            }
        }
        for i, chunk in enumerate(chunks)
    ]

Doğru Stratejiyi Seçme

Hızlı bir karar kılavuzu:

  • Öncelik hızda, içerik düzyazı biçiminde: cümle sınırlarında parçalama
  • Getirme doğruluğu kritik: küçük parçalarla (300 belirteç) anlamsal parçalama
  • Bir kitabı veya raporu özetleme: cümle sınırlarında parçalama, daha büyük parçalar (800 belirteç), eşleştir-indirge
  • Hukuki/teknik belgeler: maddeleri birlikte tutmak için anlamsal parçalama

Bir stratejiye kesin olarak karar vermeden önce, temsili bir sorgu kümesi üzerinde getirme geri çağırma oranını her zaman ölçün.

Bilginizi Sınayın

Ardışık cümle gömmeleri arasındaki kosinüs benzerliği bir eşik değerinin altına düştüğünde metni parçalara ayıran strateji hangisidir?

Özet: Parçalara Ayırma Stratejileri

Üç temel parçalara ayırma stratejisi öğrendiniz:

  • Sabit boyutlu: Her N belirteçte bir ayırma — hızlı, basit, sınırları dikkate almaz
  • Cümle sınırı tabanlı: Doğal cümle kesimlerinde ayırma — tutarlı, orta düzeyde karmaşık
  • Anlamsal: Gömme benzerliği aracılığıyla konu değişimlerinde ayırma — en doğru, maliyeti en yüksek

Sınır hatalarını azaltmak için parçalar arasında örtüşme ekleyin ve kaynak gösterme ile izlenebilirliği mümkün kılmak için her zaman parçalara üst veri (kaynak, sayfa, dizin) ekleyin. Sonraki derste eşleştirme-birleştirme özetleme deseni ele alınacaktır.

Başlamak ücretsiz

Yapay zeka eğitmeniyle AI Prompt Engineering öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
53
Dersler
199

Sıkça Sorulan Sorular

“Uzun Metinler için Parçalama Stratejileri” dersi ücretsiz mi?

Evet — “Uzun Metinler için Parçalama Stratejileri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Prompt Engineering kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Prompt Engineering kursu toplamda 4 dersten oluşur.

“Uzun Metinler için Parçalama Stratejileri” dersinde ne öğreneceğim?

Sabit boyutlu, cümle sınırlarına dayalı ve anlamsal parçalama yaklaşımlarını öğrenin. AI Prompt Engineering ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AI Prompt Engineering öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Prompt Engineering, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Uzun Metinler için Parçalama Stratejileri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AI Prompt Engineering dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Prompt Engineering dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Uzun Metinler için Parçalama Stratejileri
  2. Map-Reduce Özetleme Kalıbı
  3. Hiyerarşik Özetleme
  4. Parçalar Arasında Bağlamı Koruma
← AI Prompt Engineering Sayfasına Dön