Sedang mengikuti modul ini?0 daripada 17 selesai
Modul 14 · Halaman 15 daripada 20 · 9 bahagian

Document Loader dan Text Splitter

Cara dokumen dimuat ke dalam format piawai dan dipecah kepada chunk, loader dan splitter popular, dua contoh dan parameter splitter.

14.1

Apa itu Document Loader?

  • Document Loader membantu memuatkan data daripada pelbagai sumber ke dalam format piawai (objek Document).
  • Ia menyokong jenis fail seperti PDF, TXT, DOCX, CSV, HTML, JSON, halaman web, pangkalan data, dsb.
  • Setiap dokumen yang dimuat mengandungi page_content (teks) dan metadata (sumber, nombor halaman, dsb.).
  • Loader memudahkan integrasi data peribadi anda dengan aplikasi LLM.
14.2

Apa itu Text Splitter?

  • Text Splitter membahagikan dokumen besar kepada chunk lebih kecil.
  • LLM mempunyai had token, jadi pemecahan membantu memproses dokumen besar dengan cekap.
  • Pelbagai splitter tersedia mengikut kes penggunaan (aksara, token, semantik, rekursif).
  • Chunking yang betul meningkatkan ketepatan retrieval dan mengurangkan konteks tidak relevan.
  • Anda juga boleh menetapkan saiz chunk, pertindihan dan peraturan pemecahan tersuai.
14.3

Aliran Pemuatan dan Pemecahan Dokumen

Sumber DataPDF, TXT / DOCX, web, pangkalan data
Document LoaderMuat ke LangChain
Objek Documentpage_content + metadata
Text SplitterPecah kepada chunk
Chunk DokumenChunk 1 ... Chunk N
14.4

Document Loader Popular dalam LangChain

LoaderSumber DisokongKes Penggunaan
PyPDFLoaderFail PDFMuat dokumen PDF
TextLoaderFail teks (.txt)Dokumen teks mudah
Docx2txtLoaderDokumen Word (.docx)Muat fail Word
CSVLoaderFail CSVData berstruktur daripada CSV
WebBaseLoaderHalaman web (URL)Muat data daripada laman web
DirectoryLoaderBerbilang fail dalam folderMuat dokumen secara kelompok
JSONLoaderFail JSONMuat data JSON berstruktur
UnstructuredLoaderPelbagai format (PDF, HTML, dsb.)Loader lanjutan menggunakan unstructured
14.5

Text Splitter Popular dalam LangChain

SplitterPeneranganKes Penggunaan
CharacterTextSplitterPecah mengikut bilangan aksaraMudah dan pantas
RecursiveCharacterTextSplitterPecah secara rekursif mengikut aksara, ayat dan pemisah lainPaling kerap digunakan
TokenTextSplitterPecah mengikut token (cth. menggunakan tiktoken)Apabila mahu chunk berasaskan token
SentenceTransformersTokenTextSplitterPecah menggunakan sentence transformersChunking semantik
MarkdownHeaderTextSplitterPecah berdasarkan pengepala markdownDokumen dengan pengepala (cth. dokumentasi)
SemanticChunkerPecah menggunakan persamaan semantikPemeliharaan konteks lebih baik
14.6

Contoh 1: Muat PDF dan Pecah dengan RecursiveCharacterTextSplitter

python
from langchain_community.document_loaders import PyPDFLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter

# 1. Load PDF document
loader = PyPDFLoader("data/company_policy.pdf")
docs = loader.load()
print(f"Total pages: {len(docs)}")

# 2. Split documents into chunks
splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200,
    separators=["\n\n", "\n", " ", ""]
)
splits = splitter.split_documents(docs)
print(f"Total chunks: {len(splits)}")

# 3. Check a chunk
print(docs[0].page_content[:200])
print(splits[0].page_content)
print(splits[0].metadata)
14.7

Contoh 2: Muat Halaman Web dan Pecah

python
from langchain_community.document_loaders import WebBaseLoader
from langchain_text_splitters import CharacterTextSplitter

# 1. Load web pages
loader = WebBaseLoader(["https://example.com/docs"])
docs = loader.load()
print(f"Loaded {len(docs)} documents")

# 2. Split into chunks
splitter = CharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50
)
splits = splitter.split_documents(docs)
print(f"Total chunks: {len(splits)}")

# 3. View chunk
print(splits[0].page_content)
print(splits[0].metadata)
14.8

Parameter Berguna untuk Text Splitter

ParameterPeneranganContoh
chunk_sizeSaiz setiap chunk (dalam aksara/token)1000
chunk_overlapPertindihan antara chunk200
separatorsSenarai pemisah untuk memecah teks["\n\n", "\n", ""]
length_functionFungsi untuk mengira panjang (len atau tiktoken)len
keep_separatorKekalkan pemisah dalam chunkTrue / False
14.9

Pengajaran Utama

  • Document loader membantu memuatkan data daripada pelbagai sumber.
  • Text splitter membahagikan dokumen besar kepada chunk lebih kecil.
  • Gunakan loader yang sesuai mengikut sumber data anda.
  • RecursiveCharacterTextSplitter paling kerap digunakan.
  • Saiz chunk dan pertindihan yang betul meningkatkan ketepatan retrieval.
  • Pecahkan dokumen sebelum mencipta embeddings.
  • Sokongan untuk PDF, Word, web, CSV, JSON dan lain-lain.
  • Penting untuk membina aplikasi RAG dan sistem pengetahuan.