0Pricing
AI Prompt Engineering · Pelajaran

Strategi Pemotongan Teks Panjang

Pelajari pendekatan pemotongan berukuran tetap, berdasarkan batas kalimat, dan semantik.

Strategi Pemotongan Teks Panjang adalah pelajaran AI Prompt Engineering gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AI Prompt Engineering, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Prompt Engineering mencakup 4 pelajaran total.

Mengapa Dokumen Panjang Menjadi Tantangan

LLM memiliki jendela konteks — jumlah maksimum token yang dapat diproses sekaligus. GPT-4 mendukung 128 ribu token, Claude mendukung 200 ribu, tetapi banyak dokumen melampaui batas tersebut. Yang lebih penting, penelitian menunjukkan bahwa akurasi model sering menurun pada konteks yang sangat panjang. Pemotongan adalah praktik membagi dokumen menjadi bagian-bagian yang lebih kecil sebelum diproses.

Pemotongan Ukuran Tetap

Pemotongan ukuran tetap membagi teks setiap N token (atau karakter), tanpa memperhatikan batasan isi. Ini merupakan strategi paling sederhana dan tidak memerlukan pemahaman semantik.

Ukuran bagian yang umum: 500–1000 token. Bagian-bagian ini mudah diindeks dan diambil, tetapi dapat memotong kalimat di tengah, sehingga makna pada batas bagian hilang.

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)}')

Kelebihan dan Kekurangan Pemotongan Ukuran Tetap

Kelebihan:

  • Sederhana untuk diterapkan — tidak memerlukan NLP
  • Ukuran bagian dapat diprediksi — biaya API lebih mudah dikelola
  • Pemrosesan cepat

Kekurangan:

  • Memotong batas kalimat dan paragraf
  • Kalimat yang terbagi di antara beberapa bagian kehilangan konteks saat pengambilan
  • Kurang baik untuk peringkasan — bagian dapat berakhir di tengah argumen

Pemotongan pada Batas Kalimat

Pemotongan pada batas kalimat membagi teks pada jeda kalimat atau paragraf alami. Setiap bagian berakhir pada titik akhir kalimat, sehingga tidak ada kalimat yang terpotong menjadi dua. Hasilnya adalah bagian-bagian yang lebih mudah dibaca dan koheren.

Gunakan pemecah kalimat (spaCy atau NLTK) untuk mendeteksi batas, lalu kelompokkan kalimat hingga bagian mencapai ukuran target.

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

Pemotongan Semantik

Pemotongan semantik melangkah lebih jauh — teks dibagi ketika topik berubah. Dengan menyematkan kalimat yang berdekatan dan mengukur cosine_similarity, kita dapat mendeteksi perpindahan pembahasan ke subjek baru.

Ketika kemiripan turun di bawah ambang batas, sisipkan batas bagian. Hasilnya adalah bagian-bagian yang padu secara topik, ideal untuk pembuatan yang diperkaya pengambilan (RAG).

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

Membandingkan Tiga Strategi

Berikut perbandingan berdampingan untuk membantu Anda memilih:

  • Ukuran tetap: paling cepat, batas paling kurang akurat — gunakan untuk pipeline sederhana
  • Batas kalimat: mempertahankan keutuhan kalimat — gunakan saat koherensi penting
  • Semantik: kepaduan topik terbaik — gunakan untuk RAG saat ketepatan pengambilan sangat penting

Dalam praktiknya, pemotongan semantik menambah latensi karena perhitungan penyematan. Pilih berdasarkan kebutuhan akurasi pengambilan.

Pemotongan untuk Tugas Pengambilan

Untuk pembuatan yang diperkaya pengambilan (RAG), bagian menjadi unit pencarian. Kueri pengguna disematkan, lalu bagian yang paling mirip diambil dan dimasukkan ke dalam prompt.

Bagian yang lebih kecil (200–400 token) meningkatkan ketepatan pengambilan — setiap bagian memuat satu gagasan terfokus. Bagian yang lebih besar (800–1000 token) memberikan lebih banyak konteks, tetapi dapat menyertakan konten yang tidak relevan bersama bagian yang relevan.

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]]

Pemotongan untuk Tugas Peringkasan

Untuk peringkasan, bagian harus cukup besar untuk memuat argumen atau bagian yang lengkap. Bagian berbatas kalimat berukuran 600–800 token berfungsi dengan baik.

Setiap bagian diringkas secara terpisah (langkah map), lalu ringkasan tersebut digabungkan menjadi ringkasan akhir (langkah reduce). Ini adalah pola map-reduce klasik, yang dibahas dalam pelajaran berikutnya.

Tumpang Tindih: Menjembatani Batas Bagian

Salah satu teknik praktis untuk mengurangi kesalahan pada batas bagian adalah menambahkan tumpang tindih di antara bagian. 100–200 token terakhir dari bagian N diulangi pada awal bagian N+1.

Tumpang tindih memastikan bahwa kalimat yang melintasi batas muncul secara utuh setidaknya di satu bagian. Hal ini sangat penting untuk pengambilan — kueri tentang topik yang melintasi batas akan cocok dengan bagian yang tumpang tindih.

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

Pengayaan Metadata per Bagian

Setiap bagian harus membawa metadata agar langkah lanjutan dapat merujuk ke asalnya:

  • source: nama file atau URL
  • page: nomor halaman
  • chunk_index: posisi dalam dokumen
  • section: bab atau judul

Metadata ini disimpan bersama penyematan dalam basis data vektor (Pinecone, Chroma, Weaviate) dan dikembalikan bersama bagian yang diambil agar LLM dapat mencantumkan sumber.

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)
    ]

Memilih Strategi yang Tepat

Panduan keputusan singkat:

  • Kecepatan adalah prioritas, konten berupa prosa: pemotongan pada batas kalimat
  • Akurasi pengambilan sangat penting: pemotongan semantik dengan bagian kecil (300 token)
  • Merangkum buku atau laporan: batas kalimat, bagian lebih besar (800 token), map-reduce
  • Dokumen hukum/teknis: pemotongan semantik untuk menjaga klausa tetap bersama

Selalu ukur perolehan kembali pengambilan pada sekumpulan kueri yang representatif sebelum menetapkan strategi.

Uji Pengetahuan

Strategi pembagian potongan mana yang membagi teks ketika kemiripan kosinus antara penyematan kalimat yang berdekatan turun di bawah ambang batas?

Rekap: Strategi Pembagian Potongan

Anda telah mempelajari tiga strategi utama untuk membagi potongan:

  • Ukuran tetap: membagi setiap N token — cepat, sederhana, tidak memperhatikan batas
  • Batas kalimat: membagi pada jeda kalimat alami — koheren, kompleksitas sedang
  • Semantik: membagi berdasarkan perubahan topik melalui kemiripan penyematan — paling akurat, biaya tertinggi

Tambahkan tumpang tindih antar-potongan untuk mengurangi kesalahan pada batas, dan selalu sertakan metadata (sumber, halaman, indeks) agar kutipan dan keterlacakan dapat dilakukan. Pelajaran berikutnya membahas pola peringkasan map-reduce.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Strategi Pemotongan Teks Panjang” gratis?

Ya — teks lengkap “Strategi Pemotongan Teks Panjang” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Prompt Engineering, upgrade ke CoddyKit PRO. Kursus AI Prompt Engineering mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Strategi Pemotongan Teks Panjang”?

Pelajari pendekatan pemotongan berukuran tetap, berdasarkan batas kalimat, dan semantik. Kamu berlatih AI Prompt Engineering dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai AI Prompt Engineering?

Tidak diperlukan pengalaman sebelumnya. AI Prompt Engineering di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Strategi Pemotongan Teks Panjang” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran AI Prompt Engineering ini?

Ya. Setiap pelajaran AI Prompt Engineering menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Strategi Pemotongan Teks Panjang
  2. Pola Perangkuman Map-Reduce
  3. Perangkuman Hierarkis
  4. Mempertahankan Konteks Antar-Potongan
← Kembali ke AI Prompt Engineering