Menjelajahi lebih lanjut tentang apa yang ditawarkan RAG Cookbook untuk mendapatkan insight yang lebih dalam tentang solusi RAG saat ini

Lead space yang diwarnai ulang menggunakan ruang prospek Watson untuk layanan pelanggan sebagai dasarnya.
Ikhtisar

Dalam bidang perayapan web dan pengindeksan dokumen, metodologi pemotongan yang efektif sangat penting untuk mengoptimalkan kinerja dan relevansi pencarian. Saat berurusan dengan halaman web HTML atau PDF, strategi yang Anda gunakan dapat secara signifikan mempengaruhi efisiensi dan akurasi aplikasi pencarian Anda. Berikut adalah panduan komprehensif untuk metodologi pemotongan yang efektif untuk keadaan yang berbeda, terutama dalam konteks menggunakan Elasticsearch sebagai penyimpanan vektor. 

 

Segmentasi Dokumen

Halaman web sangat bervariasi dalam ukuran dan struktur. Untuk pemrosesan yang efisien:

  • Penguraian HTML: Pecahkan halaman HTML menjadi potongan yang dapat dikelola berdasarkan tag HTML (misalnya, <p> untuk paragraf, <div> untuk bagian).
  • Ekstraksi Konten: Fokus pada ekstraksi konten yang bermakna seperti teks utama, judul, dan data terstruktur.
Strategi Pemotongan
  • Dengan URL: Perlakukan setiap URL sebagai dokumen terpisah. Metode ini mudah dan berguna untuk situs web di mana setiap halaman relatif kecil dan mandiri.
  • Berdasarkan Bagian Halaman: Segmentasikan dokumen berdasarkan bagian yang bermakna (misalnya, artikel, posting blog). Pendekatan ini bermanfaat untuk konten bentuk panjang dan situs dengan beragam jenis konten.
  • Panjang Konten: Hindari potongan yang sangat besar; keseimbangan antara perincian untuk relevansi pencarian dan kinerja. Potongan yang lebih kecil dapat meningkatkan presisi pencarian tetapi dapat meningkatkan overhead pemrosesan.
Pipeline Pemrosesan
  • Gunakan perpustakaan seperti Beautiful Soup atau Scrapy untuk pengikisan web.
  • Normalisasi teks dengan menghapus tag HTML dan menangani masalah pengkodean.
  • Terapkan penganalisis khusus bahasa (misalnya, stemming, stop words) untuk meningkatkan akurasi pencarian.
Tantangan dengan Kode HTML Lama

Ketika perayapan web melibatkan kode HTML yang lebih lama, itu dapat secara signifikan mempengaruhi kualitas potongan yang diekstraksi untuk pengindeksan di Elasticsearch. Berikut adalah beberapa tantangan utama dan strategi mitigasi:

Inkonsistensi Struktural

Tag dan Atribut Non-Standar:

  • Kode HTML yang lebih lama mungkin menggunakan tag atau atribut non-standar yang mungkin tidak ditangani oleh parser modern dengan benar atau sepenuhnya dipahami.
  • Hal ini dapat menyebabkan ekstraksi potongan konten yang tidak lengkap atau salah, terutama jika crawler bergantung pada pustaka parsing HTML standar.

Elemen Bersarang dan Tidak Digunakan Lagi:

  • HTML lama sering menyertakan elemen bersarang atau tag yang tidak digunakan lagi seperti <font>, <center>, atau <strike>, yang mungkin tidak diurai dengan benar oleh parser HTML modern.
  • Hasilnya, segmentasi konten berdasarkan elemen-elemen ini dapat menghasilkan potongan yang terfragmentasi atau tidak terstruktur dengan benar.

Kualitas dan Relevansi Konten

Gaya dan Pemformatan Inline:

  • HTML lama mungkin sangat bergantung pada gaya sebaris dan tag pemformatan (<font>, <b>, <i>, dll.), yang dapat mengacaukan teks yang diekstraksi dan mengurangi kualitas potongan yang diindeks.
  • Kualitas pencarian mungkin menurun karena Elasticsearch menganalisis dan mengindeks potongan ini, berpotensi memengaruhi relevansi dalam hasil pencarian.

Struktur Dokumen yang Tidak Konsisten:

  • Kurangnya struktur dokumen standar di halaman HTML lama dapat menyebabkan ukuran potongan dan segmen konten yang tidak konsisten.
  • Ketidakkonsistenan ini membuatnya sulit untuk menetapkan batasan yang jelas antara bagian konten yang bermakna, mempengaruhi perincian potongan dan relevansi pencarian.

Tantangan Teknis

Masalah Pengodean dan Karakter:

  • Halaman HTML yang lebih lama mungkin memiliki masalah pengodean, seperti set karakter atau entitas yang salah (&nbsp;, &lt;), yang memerlukan penanganan yang tepat selama ekstraksi teks.
  • Kegagalan untuk menangani ini dengan benar dapat mengakibatkan teks yang kacau atau representasi konten yang salah dalam potongan yang diindeks.

Skrip dan Konten Dinamis:

  • Elemen dinamis dan skrip yang disematkan dalam halaman HTML lama (misalnya, JavaScript, Flash) mungkin tidak diproses secara efektif oleh perayap web dasar.
  • Hal ini dapat menyebabkan ekstraksi konten yang tidak lengkap atau penghilangan teks yang dihasilkan secara dinamis, berdampak pada kelengkapan potongan yang diindeks.

Strategi Mitigasi

Untuk mengurangi dampak kode HTML lama pada kualitas potongan saat crawling web untuk pengindeksan Elasticsearch, pertimbangkan strategi berikut:

  • Menggunakan Perpustakaan Penguraian yang Kuat: Gunakan pustaka parsing HTML tingkat lanjut yang dapat menangani berbagai versi HTML dan elemen non-standar.
  • Menormalisasi Teks: Pra-proses teks yang diekstraksi untuk menormalkan pemformatan dan menghapus tag atau atribut yang tidak perlu.
  • Membersihkan Konten: Menyaring elemen yang tidak relevan atau sudah tidak digunakan lagi selama proses ekstraksi untuk meningkatkan kualitas potongan yang diindeks.
  • Menyesuaikan Logika Ekstraksi: Kembangkan logika khusus untuk menangani kebiasaan tertentu dari halaman HTML lama, memastikan segmentasi yang lebih akurat ke dalam potongan-potongan konten yang bermakna.
  • Pembaruan Reguler: Pertahankan logika crawler dan parsing pustaka untuk beradaptasi dengan perubahan standar web dan praktik HTML dari waktu ke waktu.

Dengan mengatasi tantangan ini secara proaktif, Anda dapat meningkatkan kualitas potongan konten yang diekstrak dari halaman HTML lama, sehingga meningkatkan efektivitas dan relevansi keseluruhan aplikasi pencarian berbasis ElasticSearch.

Pengindeksan PDF

Ekstraksi Konten PDF

  • Ekstrak teks dari PDF, dengan mempertimbangkan elemen seperti judul, paragraf, dan tabel.
  • Tangani metadata (judul, penulis, tanggal) secara terpisah untuk pengindeksan.

Strategi Pemotongan

  • Berdasarkan Dokumen: Perlakukan setiap file PDF sebagai dokumen tunggal untuk pengindeksan.
  • Berdasarkan Halaman: Atau, bagi PDF menjadi potongan-potongan berdasarkan halaman atau bagian logis jika diperlukan.
  • Blok Teks: Segmentasikan potongan besar menjadi unit yang lebih kecil berdasarkan jeda alami dalam konten (misalnya, paragraf).

Tantangan Ekstraksi Teks, Fakta, dan Mitos

  • Fakta: PDF mungkin berisi gambar atau dokumen yang dipindai, membutuhkan OCR (Optical Character Recognition) untuk ekstraksi teks. watsonx Discovery memang memiliki OCR, jadi ini seharusnya tidak menjadi tantangan.
  • Menangani masalah pengkodean dan pemformatan teks yang unik untuk PDF (misalnya, tanda hubung, jeda baris).

Pipeline Pengindeksan

  • Normalisasi teks yang diekstraksi dengan menghapus karakter khusus dan menangani tanda hubung.
  • Terapkan penganalisis khusus bahasa ke teks yang diproses untuk meningkatkan kemampuan pencarian.
Pertimbangan

Pertimbangan Umum

  • Kinerja: Menyeimbangkan ukuran chunk untuk pengindeksan yang efisien dan kinerja kueri.
  • Relevansi: Pastikan potongan menangkap segmen konten yang berarti untuk hasil pencarian yang akurat.
  • Overhead Pengindeksan: Pertimbangkan overhead pengindeksan volume data yang besar; optimalkan pengaturan pengindeksan dan alokasi pecahan di Elasticsearch.
  • Kualitas Pencarian: Uji dan perbaiki kueri penelusuran untuk memastikan mereka memberikan hasil yang relevan di seluruh dokumen yang dipotong-potong.

Memilih Metode Pemotongan

  • Karakteristik Konten: Untuk pesan pendek, pemotongan tingkat kalimat mungkin sudah cukup. Untuk dokumen panjang, pertimbangkan pemotongan sadar konten atau bahkan jelajahi pemotongan heterogen dengan campuran ukuran potongan.
  • Persyaratan Aplikasi: Jika efisiensi komputasi adalah yang terpenting, pemotongan ukuran tetap mungkin merupakan titik awal yang baik. Jika pengambilan informasi yang kaya konteks sangat penting, maka pemotongan sadar konten adalah pilihan yang lebih baik.

Singkatnya, strategi pemotongan terbaik untuk menggunakan Elasticsearch dengan perayapan web atau pengindeksan PDF melibatkan pemecahan konten menjadi unit yang dapat dikelola (dokumen, halaman, bagian) yang menyeimbangkan perincian dengan efisiensi dalam pengindeksan dan kueri. Sesuaikan strategi berdasarkan sifat sumber konten (misalnya, halaman web vs PDF) dan persyaratan khusus aplikasi pencarian Anda. Dengan menerapkan metodologi ini, Anda dapat meningkatkan kinerja dan akurasi mesin pencari Anda, memberikan pengguna hasil yang lebih relevan dan tepat.

Perbandingan Metodologi Pemotongan

Manfaat Kesederhanaan, Mudah dikelola

 

Contoh Penggunaan:
.

  • <b style=" font-family: inherit; ">Situs web dengan halaman kecil yang mandiri:<span style=" font-family: inherit; "> Mudah untuk mengelola setiap URL sebagai dokumen terpisah.
  • Situasi di mana setiap URL mewakili dokumen yang berbeda:Memastikan kejelasan dan kesederhanaan dalam penanganan dokumen.
Manfaat Peningkatan perincian, peningkatan relevansi untuk kueri penelusuran

 

Contoh Penggunaan: 

Situs web konten bentuk panjang: Meningkatkan relevansi penelusuran dengan menyegmentasikan artikel atau postingan berukuran besar.

Situs dengan jenis konten yang beragam: Memungkinkan pengaturan dan pengambilan konten yang bervariasi dengan lebih baik.

 

Manfaat Keseimbangan antara granularitas dan kinerja, Peningkatan presisi pencarian

 

Contoh Penggunaan: 

Situs web berat konten:  Memastikan bahwa potongan tidak terlalu besar, meningkatkan presisi dan kinerja pencarian.

Situs web yang memiliki potongan yang sangat besar tidak diinginkan: Menyeimbangkan kebutuhan pengindeksan yang terperinci dengan kinerja.

Manfaat Efisiensi komputasi, Performa yang dapat diprediksi

 

Contoh Penggunaan: 

Aplikasi dengan persyaratan efisiensi komputasi tinggi: Kinerja yang dapat diprediksi dan penggunaan sumber daya.

Tugas pemrosesan data yang terstandardisasi: Cocok untuk lingkungan di mana ukuran bongkahan yang seragam bermanfaat.

Manfaat Kontrol halus atas konten, hasil pencarian yang sangat relevan

 

Contoh Penggunaan: 

 

Pengindeksan pesan singkat: Ideal untuk pencarian dan pengambilan yang tepat dalam teks singkat.

Aplikasi analisis teks: Memungkinkan analisis dan pemahaman yang mendetail mengenai segmen pendek.

Manfaat Pemotongan Berdasarkan Konteks, Meningkatkan relevansi pencarian

 

Contoh Penggunaan: 

Dokumen panjang dengan konten yang bervariasi: Memastikan bahwa setiap bagian mempertahankan konteks yang bermakna.

Analisis konten terperinci: Meningkatkan kualitas hasil pencarian dengan mempertahankan konteks.

Manfaat Segmentasi logis, Peningkatan keterbacaan

 

Contoh Penggunaan:

Pengindeksan PDF: Memperlakukan setiap halaman sebagai unit logis, sehingga meningkatkan keterbacaan dan kemampuan pencarian.

Dokumen di mana setiap halaman merupakan unit yang berbeda: Menjaga integritas konten berbasis halaman.

 

Manfaat Jeda alami dalam konten, Penanganan konten terstruktur yang lebih baik

 

Contoh Penggunaan: 

Dokumen besar dengan jeda paragraf yang jelas: Memfasilitasi pembacaan dan pemrosesan yang lebih mudah.

Pengindeksan dokumen terstruktur: Memastikan bahwa bagian yang penting diindeks secara terpisah.

Solusi IBM

Pemotongan di watsonx

Platform IBM® watsonx memungkinkan dan mempercepat implementasi pola RAG dan memungkinkan pemotongan dan pemahaman dokumen.  watsonx Orchestrate bersama dengan watsonx Discovery memungkinkan pemotongan dokumen dari low-code/no-code ke implementasi solusi yang lebih khusus. 

Metode yang tercantum adalah pertimbangan umum dari teknik pemotongan untuk diterapkan dalam contoh penggunaan RAG. Teknik hybrid tersedia dengan watsonx untuk memberikan akurasi dan kecepatan yang lebih baik. Proses keseluruhan membagi dokumen dengan kalimat tunggal, untuk memastikan perincian yang berarti. Kemudian, kalimat dikelompokkan menjadi potongan-potongan menggunakan LLM. LLM menilai apakah konteks kalimat sesuai dengan potongan, jika tidak, potongan baru dimulai. Menggunakan potongan itu, metadata bermakna diekstraksi menggunakan LLM; ini termasuk, judul, ID, dan ringkasan.

Untuk informasi lebih lanjut tentang metode ini, silakan lihat blog IBM® ini: https://developer.ibm.com/articles/awb-enhancing-llm-performance-document-chunking-with-watsonx/

Alat Bantu Sumber Terbuka

Pemotongan sintaksis

Pemotongan sintaksis menggunakan pendekatan berbasis struktur untuk memisahkan teks berdasarkan format dokumen. Yang paling umum dan wajar, judul bagian digunakan sebagai pemisah. Namun, dengan format dokumen tanpa informasi yang dikodekan (yaitu, PDF), ukuran font dapat digunakan sebagai penanda untuk memisahkan potongan.

Kelebihan:

  • Implementasi sederhana

Batasan:

  • Algoritma mengasumsikan hierarki informasi; karenanya, penanda sintaksis mungkin terlewatkan

Pemotongan sintaksis dapat bermanfaat dalam situasi di mana struktur topologi dokumen dapat diprediksi dan diformat dengan bersih untuk dipartisi.

Pemotongan ukuran tetap

Dalam pemotongan ukuran tetap, data input dibagi menjadi potongan berukuran sama. Metode ini sering memisahkan teks ke dalam ukuran yang telah ditentukan berdasarkan jumlah token. Metode ini mudah diterapkan dan dipahami, sehingga cocok untuk tugas-tugas di mana data input memiliki ukuran yang konsisten dan dapat diprediksi.

Kelebihan:

  • Mudah diimplementasikan dan dipahami
  • Efisien secara komputasi

Batasan:

  • Kaku dan tidak dapat menyesuaikan diri dengan konteks teks
  • Dapat meninggalkan informasi kontekstual penting dalam teks

Pemotongan ukuran tetap paling baik digunakan dalam kasus di mana data input dapat diprediksi dan tidak memerlukan konteks menyeluruh.

dari langchain.text_splitter impor CharacterTextSplitter

# Contoh teks
teks = " Rubah coklat cepat melompati anjingnya yang malas. "

# Buat splitter untuk potongan ukuran tetap
splitter = CharacterTextSplitter (chunk_size=10, chunk_overlap=0)

# Pisahkan teks
potongan = splitter.split (teks)

# Cetak potongan
untuk potongan dalam potongan:
 print(chunk)

Pemotongan semantik

Pemotongan semantik memisahkan teks berdasarkan konteks dan mengelompokkan komponen yang bermakna menggunakan teknik algoritmik. Pemotongan semantik penting ketika makna konten sangat penting dalam menghasilkan tanggapan, seperti dokumentasi hukum.

Kelebihan:

  • Data yang diambil memiliki akurasi dan relevansi yang lebih tinggi
  • Kekompakan basis pengetahuan dipertahankan dalam pemotongan

Batasan:

  • Implementasi yang kompleks menggunakan algoritma yang canggih
  • Secara komputasi lebih ekstensif

Contoh:

dari langchain.text_splitter impor RecursiveCharacterTextSplitter

# Contoh teks
text = "Steve Jobs lahir di California. Dia ikut mendirikan Apple pada tahun 1976."

# Buat splitter untuk pemotongan semantik
splitter = RecursiveCharacterTextSplitter(chunk_size=50, chunk_overlap=10)

# Pisahkan teks
chunks = splitter.split(text)

# Cetak potongan
untuk potongan dalam potongan:
 print(chunk)

Pemotongan hybrid menggunakan informasi kontekstual dan struktural untuk kekuatan gabungan dari pemotongan ukuran tetap dan pemotongan semantik. Metode ini paling baik digunakan untuk situasi di mana ada kumpulan data yang besar di seluruh contoh penggunaan, dengan format dan materi yang bervariasi, seperti basis pengetahuan perusahaan.

Kelebihan:

  • Akurasi dan kecepatan optimal dengan teknik pemotongan fleksibel berdasarkan struktur basis pengetahuan dan konteks

Batasan:

  • Lebih banyak pemeliharaan dan upaya untuk diterapkan karena persyaratan sumber daya yang menuntut

Contoh:

dari langchain.text_splitter impor CharacterTextSplitter, RecursiveCharacterTextSplitter

# Contoh teks
text = " Steve Jobs lahir di California. Dia ikut mendirikan Apple pada tahun 1976."

# Pembagi ukuran tetap
fixed_size_splitter = CharacterTextSplitter(chunk_size = 50, chunk_overlap = 10)
fixed_size_chunks = fixed_size_splitter.split(text)

# Pembagi semantik
semantic_splitter = RecursiveCharacterTextSplitter(chunk_size = 100, chunk_overlap = 20)
semantic_chunks = semantic_splitter.split(text)

# Cetak potongan ukuran tetap
print("Potongan ukuran tetap:")
untuk potongan di fixed_size_chunks:
 print(chunk)

# Cetak potongan semantik
cetak ("\nPotongan semantik: ")
untuk potongan di semantic_chunks:
 print(chunk)

Pembagian tugas agen

Strategi pemotongan ini melibatkan penggunaan model bahasa besar (LLM) untuk menentukan panjang dan konten potongan teks yang sesuai berdasarkan konteks di mana mereka akan digunakan. Strategi ini terinspirasi oleh konsep proposisi, yang melibatkan ekstraksi pernyataan mandiri dari sepotong teks mentah.

Untuk menerapkan pendekatan ini, strategi menggunakan templat pengambilan proposisi yang disediakan oleh Langchain untuk mengekstrak proposisi dari teks. Proposisi-proposisi ini kemudian diumpankan ke agen berbasis LLM, yang menentukan apakah setiap proposisi harus dimasukkan ke dalam potongan yang sudah ada atau jika potongan baru harus dibuat.

Agen berbasis LLM menggunakan berbagai faktor untuk membuat penentuan ini, termasuk relevansi proposisi dengan potongan saat ini, koherensi keseluruhan potongan, dan tujuan dan niat model. Dengan menggunakan LLM dengan cara ini, strategi ini bertujuan untuk menghasilkan potongan teks yang tidak hanya koheren dan sesuai secara kontekstual, tetapi juga selaras dengan tujuan dan niat model.

Kelebihan:

  • Otonomi: LLM dapat membuat keputusan tentang proposisi mana yang akan dimasukkan dalam potongan dan kapan harus membuat potongan baru tanpa campur tangan manusia, memungkinkan pembuatan teks yang lebih efisien dan dapat diskalakan.
  • Koherensi: LLM dirancang untuk menghasilkan teks yang koheren dan sesuai secara kontekstual, yang dapat membantu memastikan bahwa potongan yang dihasilkan bermakna dan mudah dipahami.

Batasan:

  • Komputasi lengkap: Menghasilkan teks menggunakan LLM bisa mahal secara komputasi, terutama untuk model besar atau kompleks. Ini dapat membatasi skalabilitas dan kepraktisan menggunakan LLM untuk aplikasi tertentu.
  • Halusinasi: Ini dapat terjadi ketika model menghasilkan teks berdasarkan bias atau asumsi internalnya sendiri, bukan pada data atau konteks aktual.

Sekarang, bagaimana kita menerapkan beberapa teknik ini untuk dokumentasi potongan? Banyak pustaka sumber terbuka yang ada untuk menjalankan algoritma dan teknik pemotongan ini. Tempat yang baik untuk memulai adalah menggunakan pemisah teks Langchain; lihat dokumentasi berikut tentang pemisah teks tertentu yang tersedia. https://python.langchain.com/v0.1/docs/modules/data_connection/document_transformers/

Langkah Berikutnya

Dapatkan pola teknologi terbaru, arsitektur solusi, dan publikasi arsitektur dari IBM®.

  1. Buka Pusat Arsitektur IBM®
Kontributor

Haneen Bakbak, Luke Major

Diperbarui: 15 November 2024