0Pricing
AI Engineering Academy · Pelajaran

Mengapa Pemotongan Naif Menghambat Pengambilan

Analisis kegagalan pengambilan nyata yang disebabkan oleh pemotongan yang buruk, termasuk jawaban yang terbelah di antara batas potongan serta konteks dari tajuk dan judul bagian yang hilang.

Mengapa Pemotongan Naif Menghambat Pengambilan adalah pelajaran AI Engineering Academy 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 Engineering Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Engineering Academy mencakup 4 pelajaran total.

Biaya Pemotongan yang Buruk

Pemotongan menjadi potongan adalah proses membagi dokumen menjadi bagian-bagian yang lebih kecil sebelum menyematkannya ke penyimpanan vektor. Cara Anda memotong dokumen menentukan konteks apa yang tersedia saat pengambilan. Pemotongan yang buruk adalah salah satu penyebab kegagalan sistem RAG yang paling umum dan paling berdampak.

Jawaban Terpisah di Antara Batas Potongan

Bayangkan sebuah dokumen yang berbunyi: 'Kebijakan pengembalian dana berlaku 30 hari sejak pembelian. Pelanggan harus menyertakan tanda terima asli.' Jika pemotong berukuran tetap memotong setelah kata 'purchase.', kedua kalimat tersebut masuk ke potongan yang berbeda. Kueri tentang kebijakan pengembalian dana mungkin hanya mengambil bagian pertama — sehingga model tidak dapat menyebutkan persyaratan tanda terima.

Konteks yang Hilang dari Judul

Dokumen sering menggunakan judul bagian untuk memberikan makna. Perhatikan tabel berjudul 'Harga untuk Paket Perusahaan' yang diikuti baris-baris angka. Jika judul dan tabel masuk ke potongan yang berbeda, potongan tabel yang diambil hanya berisi angka tanpa label — model tidak dapat menjawab 'Berapa harga untuk Perusahaan?' dengan benar.

Kelemahan Pemotongan Berukuran Tetap

Pemotongan berukuran tetap membagi teks setiap N karakter atau token tanpa memperhatikan batas kalimat. Cara ini cepat dan sederhana, tetapi sering memotong di tengah kalimat. Potongan yang berakhir dengan 'The model was trained on' dan potongan berikutnya yang dimulai dengan 'a dataset of 500 billion tokens' sama-sama tidak bermakna tanpa yang lainnya.

from langchain.text_splitter import CharacterTextSplitter

# Naive fixed-size: may break mid-sentence
splitter = CharacterTextSplitter(chunk_size=200, chunk_overlap=0)
chunks = splitter.split_text(document_text)
print(f'Created {len(chunks)} chunks')
print('First chunk:', chunks[0])

Tumpang Tindih Tidak Selalu Membantu

Perbaikan yang umum adalah menambahkan tumpang tindih potongan — mengulang N token terakhir dari sebuah potongan di awal potongan berikutnya. Cara ini membantu kalimat yang terpisah, tetapi menimbulkan redundansi dan dapat membingungkan pengambil ketika dua potongan yang sangat mirip sama-sama diambil. Tumpang tindih hanyalah solusi sementara, bukan penyelesaian untuk masalah struktural dalam pemotongan.

# Overlap helps partially but adds redundancy
splitter = CharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50  # last 50 chars repeated in next chunk
)
chunks = splitter.split_text(document_text)

Mengukur Tingkat Kegagalan Pengambilan

Anda dapat mengukur seberapa sering pemotongan mengganggu pengambilan dengan membuat set evaluasi acuan kecil: daftar pertanyaan dengan bagian sumber yang benar dan telah diketahui. Kemudian periksa seberapa sering bagian yang benar berada di antara k potongan teratas yang diambil. hit rate yang rendah sering mengungkapkan masalah pemotongan bahkan sebelum Anda memeriksa kualitas pembuatan jawaban.

def hit_rate(queries_and_answers, retriever, k=5):
    hits = 0
    for query, expected_text in queries_and_answers:
        results = retriever.retrieve(query, k=k)
        retrieved_texts = [r.page_content for r in results]
        if any(expected_text in text for text in retrieved_texts):
            hits += 1
    return hits / len(queries_and_answers)

Masalah Kode dan Data Terstruktur

File kode, JSON, dan tabel memiliki unit logis — fungsi, objek, dan baris tabel — yang sebaiknya tidak dipisahkan. Membagi definisi fungsi Python ke dalam dua potongan berarti tidak ada potongan yang dapat dipahami secara mandiri. Pengambil yang menemukan potongan kedua akan melihat kode tanpa argumen dan tanpa konteks.

# Bad: splits code arbitrarily
bad_chunk_1 = 'def calculate_price(item, qty'  # incomplete!
bad_chunk_2 = ', discount):\n    return item.price * qty * (1 - discount)'

# Good: keep the full function together
good_chunk = 'def calculate_price(item, qty, discount):\n    return item.price * qty * (1 - discount)'

Dokumen Panjang dan Hilangnya Isi di Tengah

Penelitian tentang LLM menunjukkan fenomena 'hilang di tengah': ketika banyak potongan diambil dan dimasukkan ke dalam perintah, model memperhatikan isi di dekat awal dan akhir, tetapi cenderung mengabaikan bagian tengah. Pemotongan yang buruk sehingga menghasilkan banyak potongan kecil berkualitas rendah memperburuk keadaan ini karena mengencerkan sinyal yang relevan.

Mendiagnosis Potongan Buruk Secara Manual

Diagnosis cepat dapat dilakukan dengan mencetak contoh acak dari potongan Anda lalu membacanya. Tanyakan kepada diri sendiri: Apakah potongan ini bermakna jika berdiri sendiri? Jika pengguna mengajukan pertanyaan, bisakah model menjawabnya hanya dari potongan ini? Potongan yang merujuk pada kata ganti tanpa rujukan yang jelas ('He said that...'), kode yang tidak lengkap, atau angka tanpa konteks merupakan tanda bahaya.

import random

def audit_chunks(chunks, sample_size=10):
    sample = random.sample(chunks, min(sample_size, len(chunks)))
    for i, chunk in enumerate(sample):
        print(f'--- Chunk {i+1} ({len(chunk)} chars) ---')
        print(chunk[:300])
        print()

Saat Ukuran Potongan Terlalu Besar

Potongan yang sangat besar mengurangi presisi pengambilan. Potongan 2000 token tentang topik yang luas mungkin cocok dengan banyak kueri, tetapi memberikan terlalu banyak gangguan kepada LLM. Model harus menemukan jarum di tumpukan jerami dalam potongan tersebut. Potongan yang lebih kecil dan terfokus meningkatkan presisi, tetapi berisiko kehilangan konteks di sekitarnya.

Strategi untuk Memperbaiki Masalah Ini

Alternatif yang lebih baik daripada pemotongan naif berukuran tetap meliputi: pemotongan pada batas kalimat yang tidak pernah memotong di tengah kalimat, pemotongan semantik yang membagi teks pada batas topik, pemotongan induk-anak yang mempertahankan konteks yang lebih luas, dan pemotongan yang memahami dokumen yang menghormati fungsi kode, tag HTML, dan judul Markdown. Setiap pelajaran berikutnya membahas salah satunya.

Pemeriksaan Singkat

Uji pemahaman Anda tentang mode kegagalan pemotongan dari pelajaran ini.

Ringkasan Pelajaran

Dalam pelajaran ini, Anda mempelajari bahwa: pemotongan naif berukuran tetap merusak batas kalimat dan bagian, tumpang tindih adalah perbaikan sebagian tetapi menambah redundansi, dan kualitas potongan secara langsung menentukan hit rate pengambilan. Selanjutnya kita akan mempelajari pemotongan semantik, yang membagi teks pada batas topik alami menggunakan kemiripan penyematan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mengapa Pemotongan Naif Menghambat Pengambilan” gratis?

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

Apa yang akan aku pelajari di “Mengapa Pemotongan Naif Menghambat Pengambilan”?

Analisis kegagalan pengambilan nyata yang disebabkan oleh pemotongan yang buruk, termasuk jawaban yang terbelah di antara batas potongan serta konteks dari tajuk dan judul bagian yang hilang. Kamu berlatih AI Engineering Academy 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 Engineering Academy?

Tidak diperlukan pengalaman sebelumnya. AI Engineering Academy 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 “Mengapa Pemotongan Naif Menghambat Pengambilan” 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 Engineering Academy ini?

Ya. Setiap pelajaran AI Engineering Academy 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. Mengapa Pemotongan Naif Menghambat Pengambilan
  2. Pemotongan Semantik dengan Kemiripan Embedding
  3. Pengambilan Induk-Anak dan Kecil-ke-Besar
  4. Strategi Khusus Dokumen untuk Kode dan HTML
← Kembali ke AI Engineering Academy