01. Struktur Dokumen

Document & Document Loader Catatan

catatan

Dokumentasi praktis


Lembaga Penelitian Kebijakan Perangkat Lunak (SPRi) - Desember 2023

  • Penulis: Jaeheung Yoo (Peneliti Utama, Lab Penelitian Kebijakan AI), Jisoo Lee (Rekan Peneliti, Lab Penelitian Kebijakan AI)

  • Nama file: SPRI_AI_Brief_Desember_2023.pdf

Dokumen


Objek dokumen default di LangChain.

Properti - page_content: String yang merepresentasikan konten dokumen. - metadata: Kamus yang merepresentasikan metadata dokumen.

from langchain_core.documents import Document

document = Document(“Halo, ini adalah dokumen dari Langchain”)
```notebook-python
# Memeriksa properti sebuah dokumen
document.__dict__
```

Menambahkan atribut ke metadata

# Tambahkan metadata
document.metadata[“source”] = “TeddyNote”
document.metadata[“page”] = 1
document.metadata[“author”] = “Teddy”
# Memeriksa properti dokumen
document.metadata

Pemuat Dokumen


Bertanggung jawab untuk mengonversi konten yang dimuat dari berbagai jenis file menjadi objek Dokumen.

Pemuat Utama

  • PyPDFLoader: Pemuat untuk memuat file PDF.

  • CSVLoader: Pemuat untuk memuat file CSV.

  • UnstructuredHTMLLoader: Pemuat untuk memuat file HTML.

  • JSONLoader: Pemuat untuk memuat file JSON.

  • TextLoader: Pemuat untuk memuat file teks.

  • DirectoryLoader: Pemuat untuk memuat direktori.

# Contoh jalur file
FILE_PATH =./data/SPRI_AI_Brief_Desember 2023_F.pdf”
from langchain_community.document_loaders import PyPDFLoader

# menyiapkan pemuat
loader = PyPDFLoader(FILE_PATH)

load()

  • Memuat dan mengembalikan dokumen.

  • Hasil yang dikembalikan berupa List[Document].

# Pemuat PDF
docs = loader.load()

# memeriksa jumlah dokumen yang dimuat
len(docs)

# periksa dokumen pertama
docs[0]

load_and_split()

  • Memisahkan dan mengembalikan sebuah dokumen menggunakan pemisah.

  • Hasil yang dikembalikan berupa List[Document].

from langchain_text_splitter import CharacterTextSplitter

# menyiapkan pembagi string
text_splitter = CharacterTextSplitter(chunk_size = 200, chunk_overlap = 0)
# membagi dokumen
docs = loader.load_and_split(text_splitter = text_splitter)

# memeriksa jumlah dokumen yang dimuat
len(docs)
# periksa dokumen pertama
docs[0]

lazy_load()

  • Memuat dokumen dengan cara generator.

# memuat dokumen berdasarkan generator
for doc in loader.lazy_load():
  print(doc.metadata)

aload()

  • Pemuatan dokumen asinkron

# memuat dokumen secara asinkron
adocs = loader.aload()

# memuat dokumentasi
await adocs

Last updated