Asas Pemuatan Data dan Pembahagian Teks
Pelajari cara memuatkan data tidak berstruktur dan menggunakan strategi pembahagian teks yang berkesan untuk prestasi mendapatkan semula yang optimum.
Asas Pemuatan Data dan Pembahagian Teks ialah pelajaran Aplikasi LLM dalam Pengeluaran (RAG + Pangkalan Data Vektor + Caching) percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Aplikasi LLM dalam Pengeluaran (RAG + Pangkalan Data Vektor + Caching), dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Aplikasi LLM dalam Pengeluaran (RAG + Pangkalan Data Vektor + Caching) merangkumi sejumlah 4 pelajaran.
Memuatkan Data untuk RAG
Selamat datang ke Pelajaran 2! Dalam Penjanaan Berbantukan Pengambilan (RAG), langkah pertama sentiasa ialah menyediakan data anda. Ini bermaksud memuatkan maklumat anda dan menyediakannya untuk Model Bahasa Besar (LLM).
Kebanyakan data dunia sebenar adalah tidak berstruktur, iaitu data tersebut tidak tersusun kemas dalam baris dan lajur seperti hamparan. Contohnya termasuk dokumen, halaman web atau buku.
Sumber Data Tidak Berstruktur yang Biasa
Sistem RAG boleh berfungsi dengan pelbagai jenis data tidak berstruktur. Berikut ialah beberapa contoh yang biasa:
- Fail teks (.txt): Dokumen teks biasa yang ringkas.
- PDF (.pdf): Selalunya mengandungi teks, imej dan reka letak yang kompleks.
- Dokumen Word (.docx): Teks berformat dengan pelbagai gaya.
- Halaman web (.html): Kandungan daripada laman web.
- Pangkalan data/API: Teks yang diekstrak daripada pelbagai medan.
Matlamatnya adalah untuk mengekstrak kandungan teks mentah daripada sumber-sumber ini.
Pemuatan Fail Teks Asas
Mari kita mulakan dengan bentuk yang paling ringkas: memuatkan fail teks biasa. Dalam Python, anda boleh membaca keseluruhan kandungan fail dengan mudah ke dalam rentetan.
Contoh ini mencipta sample.txt yang kecil dan kemudian membaca kandungannya.
import os
def load_text_file(filepath):
with open(filepath, 'r', encoding='utf-8') as f:
return f.read()
if __name__ == "__main__":
# Create a dummy file for demonstration
file_content = "This is the first line.\nThis is the second line.\nAnd a final line of text."
with open("sample.txt", "w", encoding="utf-8") as f:
f.write(file_content)
# Load and print the content
loaded_data = load_text_file("sample.txt")
print("--- Loaded Content ---")
print(loaded_data)
# Clean up the dummy file
os.remove("sample.txt")Mengapa Pemecahan Teks kepada Bahagian Penting
Setelah memuatkan data, biasanya anda tidak boleh menghantar keseluruhan buku atau dokumen panjang terus kepada LLM. Mengapa?
- Had Tetingkap Konteks: LLM mempunyai jumlah maksimum teks yang boleh diproses pada satu-satu masa.
- Kos: Menghantar teks yang sangat panjang adalah mahal kerana biasanya anda dikenakan bayaran berdasarkan token.
- Relevan: Bahagian teks yang lebih pendek dan berfokus selalunya lebih relevan untuk pengambilan.
Di sinilah pemecahan teks kepada bahagian digunakan.
Memahami Tetingkap Konteks
Tetingkap konteks adalah seperti ingatan jangka pendek LLM. Tetingkap ini ialah bilangan maksimum token (perkataan atau subperkataan) yang boleh dipertimbangkan semasa menjana respons.
- Jika teks input anda terlalu panjang, teks tersebut akan dipendekkan.
- LLM hanya “melihat” kandungan dalam tetingkap konteksnya.
Pemecahan membahagikan dokumen besar anda kepada bahagian yang lebih kecil dan mudah diurus, yang muat dalam tetingkap ini.
Pemecahan Asas: Saiz Tetap
Strategi pemecahan yang paling ringkas ialah pemecahan saiz tetap. Anda menentukan bilangan aksara atau token tertentu, kemudian membahagikan dokumen kepada bahagian yang mempunyai saiz tepat tersebut.
Contohnya, jika anda mempunyai dokumen 1000 aksara dan saiz bahagian ialah 100, anda akan mendapat 10 bahagian.
- Kelebihan: Mudah dilaksanakan.
- Kekurangan: Boleh memotong ayat atau perenggan kepada dua, lalu menyebabkan konteks hilang.
Pemecahan Saiz Tetap dalam Amalan
Berikut ialah contoh Python yang menunjukkan pemecahan saiz tetap. Perhatikan bahawa teks dipotong begitu sahaja pada sela tetap, yang kadangkala boleh memisahkan perkataan atau ayat.
def fixed_size_chunker(text, chunk_size):
chunks = []
for i in range(0, len(text), chunk_size):
chunks.append(text[i : i + chunk_size])
return chunks
if __name__ == "__main__":
sample_text = "Large language models are powerful tools for text generation and understanding. However, they have limitations, especially with very long inputs due to their context window size."
chunk_size = 40
chunks = fixed_size_chunker(sample_text, chunk_size)
print(f"Original text length: {len(sample_text)}")
print(f"Chunk size: {chunk_size}")
print("--- Chunks ---")
for i, chunk in enumerate(chunks):
print(f"Chunk {i+1} ({len(chunk)} chars): '{chunk}'")Menambah Baik Konteks dengan Pertindihan
Pemecahan saiz tetap boleh menimbulkan masalah jika konteks penting terbahagi antara dua bahagian. Untuk mengurangkan masalah ini, kita menggunakan bahagian bertindih.
Dengan pertindihan, setiap bahagian baharu bermula sedikit sebelum bahagian sebelumnya berakhir. Ini memastikan sebahagian teks muncul dalam beberapa bahagian, sekali gus mengekalkan kesinambungan.
- Saiz pertindihan yang biasa ialah 10–20% daripada saiz bahagian.
- Kaedah ini membantu LLM menghubungkan idea walaupun idea tersebut merentasi sempadan bahagian.
Contoh Pemecahan Bertindih
Lihat bagaimana penambahan pertindihan membantu mengekalkan konteks. Permulaan setiap bahagian baharu mengandungi sebahagian teks daripada penghujung bahagian sebelumnya.
def overlapping_chunker(text, chunk_size, overlap_size):
chunks = []
start = 0
while start < len(text):
end = start + chunk_size
chunk = text[start:end]
chunks.append(chunk)
start += chunk_size - overlap_size
if start < 0: # Handle cases where overlap > chunk_size initially
start = 0
return chunks
if __name__ == "__main__":
text_data = "The quick brown fox jumps over the lazy dog. Dogs are mammals and often friendly animals."
chunk_size = 30
overlap_size = 10
chunks = overlapping_chunker(text_data, chunk_size, overlap_size)
print(f"Original text length: {len(text_data)}")
print(f"Chunk size: {chunk_size}, Overlap size: {overlap_size}")
print("--- Overlapping Chunks ---")
for i, chunk in enumerate(chunks):
print(f"Chunk {i+1} ({len(chunk)} chars): '{chunk}'")Semak Pemahaman Anda
Anda telah mempelajari tentang pemuatan data dan strategi pemecahan asas. Sekarang, mari uji pengetahuan anda!
Imbas Kembali: Pemuatan dan Pemecahan Data
Syabas! Dalam pelajaran ini, kita telah membincangkan langkah asas menyediakan data untuk aplikasi RAG:
- Pemuatan Data: Mengekstrak teks mentah daripada pelbagai sumber tidak berstruktur seperti fail teks, PDF dan halaman web.
- Pemecahan Teks: Proses penting membahagikan dokumen panjang kepada bahagian yang lebih kecil dan mudah diurus.
- Tetingkap Konteks: Memahami had LLM terhadap panjang teks input, yang diukur dalam token.
- Strategi Pemecahan: Meneroka pemecahan saiz tetap asas dan kaedah yang dipertingkatkan, iaitu pemecahan saiz tetap dengan pertindihan untuk mengekalkan konteks.
Seterusnya, kita akan melihat cara bahagian ini digunakan untuk membina saluran paip RAG yang ringkas!
Pelajari Aplikasi LLM dalam Pengeluaran (RAG + Pangkalan Data Vektor + Caching) dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Soalan Lazim
Adakah pelajaran “Asas Pemuatan Data dan Pembahagian Teks” percuma?
Ya — teks penuh “Asas Pemuatan Data dan Pembahagian Teks” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Aplikasi LLM dalam Pengeluaran (RAG + Pangkalan Data Vektor + Caching), tingkat taraf kepada CoddyKit PRO. Kursus Aplikasi LLM dalam Pengeluaran (RAG + Pangkalan Data Vektor + Caching) merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Asas Pemuatan Data dan Pembahagian Teks”?
Pelajari cara memuatkan data tidak berstruktur dan menggunakan strategi pembahagian teks yang berkesan untuk prestasi mendapatkan semula yang optimum. Anda berlatih Aplikasi LLM dalam Pengeluaran (RAG + Pangkalan Data Vektor + Caching) menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Aplikasi LLM dalam Pengeluaran (RAG + Pangkalan Data Vektor + Caching)?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Aplikasi LLM dalam Pengeluaran (RAG + Pangkalan Data Vektor + Caching) di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Asas Pemuatan Data dan Pembahagian Teks” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Aplikasi LLM dalam Pengeluaran (RAG + Pangkalan Data Vektor + Caching) ini?
Ya. Setiap pelajaran Aplikasi LLM dalam Pengeluaran (RAG + Pangkalan Data Vektor + Caching) menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Memilih Penyedia LLM
- Asas Pemuatan Data dan Pembahagian Teks
- Membina Saluran Paip RAG Ringkas
- Menguji dan Menilai Aplikasi RAG Anda