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.
Halaman web sangat bervariasi dalam ukuran dan struktur. Untuk pemrosesan yang efisien:
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:
Tag dan Atribut Non-Standar:
Elemen Bersarang dan Tidak Digunakan Lagi:
Gaya dan Pemformatan Inline:
Struktur Dokumen yang Tidak Konsisten:
Masalah Pengodean dan Karakter:
Skrip dan Konten Dinamis:
Untuk mengurangi dampak kode HTML lama pada kualitas potongan saat crawling web untuk pengindeksan Elasticsearch, pertimbangkan strategi berikut:
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.
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.
Contoh Penggunaan:
.
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.
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.
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.
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.
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.
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.
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/
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:
Batasan:
Pemotongan sintaksis dapat bermanfaat dalam situasi di mana struktur topologi dokumen dapat diprediksi dan diformat dengan bersih untuk dipartisi.
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:
Batasan:
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 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:
Batasan:
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:
Batasan:
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)
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:
Batasan:
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/
Diperbarui: 15 November 2024