01. Ringkasan dokumentasi
Rangkuman
Dalam tutorial ini, kita akan melihat cara melakukan ringkasan dokumen.
Di bawah ini adalah garis besar utama tutorial.
Stuff: Meringkas seluruh dokumen sekaligus
Map-Reduce: Peringkasan parsial yang diikuti dengan penggabungan massal
Map-Refine: Peringkasan yang dipartisi diikuti dengan penggabungan bertahap Rantai
Kepadatan: Menjalankan N iterasi, meningkatkan ringkasan dengan mengisi entitas yang hilang
Clustering-Map-Refine: membagi sepotong dokumen menjadi N cluster, dan menyempurnakan ringkasan untuk dokumen yang dekat dengan titik pusat di setiap cluster.
Metode peringkasan yang terkenal
Pertanyaan utama ketika membuat peringkas adalah bagaimana cara mengirimkan dokumen ke jendela kontekstual LLM. Ada beberapa pendekatan yang dikenal untuk melakukan hal ini :
Stuff: Cukup “masukkan” semua dokumen ke dalam satu prompt - ini adalah pendekatan yang paling sederhana.Map-reduce: Meringkas setiap dokumen satu per satu dalam langkah “map”, kemudian menggabungkan ringkasan menjadi ringkasan akhir dalam langkah “reduce”.Refine: Membangun jawaban dengan mengulang dokumen masukan dan memperbarui jawabannya secara berulang-ulang. Untuk setiap dokumen, jawaban baru diperoleh dengan melewatkan semua masukan non-dokumen, dokumen saat ini, dan jawaban perantara terbaru ke dalam rantai.
# File konfigurasi untuk mengelola API KEY sebagai variabel
from dotenv import load_dotenv
# # Memuat informasi API KEY
load_dotenv()Stuff
stuff documents chain (“stuff” berarti “mengisi” atau “memenuhi”) adalah rantai dokumen yang paling sederhana. Rantai ini mengambil daftar dokumen, memasukkan semuanya ke dalam prompt, dan kemudian meneruskan prompt ke LLM.
Rantai ini bekerja dengan baik untuk aplikasi yang dokumennya kecil dan hanya sedikit yang diteruskan ke sebagian besar panggilan.
Memuat data.
Di bawah ini adalah petunjuk yang meminta Anda untuk menulis ringkasan dalam bahasa Indonesia.
Reduksi Peta (Map-Reduce)
Peringkasan map-reduce adalah teknik yang efisien untuk meringkas dokumen yang panjang.
Teknik ini terdiri dari tahap “map”, yang pertama-tama membagi dokumen menjadi bagian-bagian yang lebih kecil, dan tahap “reduce”, yang menggabungkan ringkasan setiap bagian.
Langkah map meringkas setiap bagian secara paralel, dan langkah Langkah mengurangi menggabungkan ringkasan ini menjadi satu ringkasan akhir.
Pendekatan ini sangat berguna ketika berhadapan dengan dokumen yang besar, dan memungkinkan Anda untuk melewati batasan token dari model bahasa.

sumber : https://python.langchain.com/v0.2/docs/tutorials/summarization/
Memuat data.
Map
Pada tahap map, kita membuat ringkasan untuk setiap Chunk.
(Sebenarnya, cara yang seharusnya adalah membuat ringkasan untuk setiap Chunk, tapi saya mengubahnya menjadi mengekstrak isi pokok. Tidak apa-apa karena pada tahap reduce kita akan menggabungkan ringkasan menjadi satu.)
Saya pikir cara ini lebih efektif, tapi Anda dapat mengubahnya menjadi ringkasan atau mengekstrak isi pokok pada tahap map sesuai dengan penilaian Anda sendiri.
Buat sebuah map_chain.
Panggil batch() untuk menghasilkan ringkasan untuk setiap dokumen.
Reduce
Langkah Reduce mengkonsolidasikan pembelajaran utama dari langkah peta ke dalam satu rangkuman akhir.
buat chain untuk proses reduce
Di bawah ini adalah contoh output streaming menggunakan Reduce Chain.
Memperhalus Peta (Map-Refine)
Map-refine adalah pendekatan lain untuk meringkas dokumen, mirip dengan map-reduce, namun dengan beberapa perbedaan.
Tahap peta: membagi dokumen menjadi beberapa bagian kecil, dan menghasilkan ringkasan untuk setiap bagian secara terpisah.
Tahap Refine: Memproses ringkasan yang dihasilkan secara berurutan untuk memperbaiki ringkasan akhir secara bertahap. Pada setiap langkah, ringkasan diperbarui dengan menggabungkan informasi dari ringkasan sebelumnya dengan potongan baru.
Iterasi: Ulangi langkah menyempurnakan sampai semua potongan telah diproses.
Ringkasan akhir: Ringkasan yang diperoleh setelah memproses potongan terakhir menjadi hasil akhir.
Keuntungan dari metode map-refine adalah metode ini dapat meningkatkan ringkasan secara bertahap sambil mempertahankan urutan dokumen, yang dapat sangat berguna ketika konteks dokumen penting. Namun, metode ini kurang dapat disejajarkan dengan map-reduce karena diproses secara berurutan, yang dapat memakan waktu lebih lama ketika memproses dokumen besar.

sumber: https://python.langchain.com/v0.2/docs/tutorials/summarization/
Map
Langkah map menghasilkan ringkasan untuk setiap bagian.
Buat sebuah map_chain.
Keluarkan ringkasan dari artikel pertama.
Refine
Langkah Refine secara berurutan memproses potongan-potongan yang dihasilkan oleh langkah peta sebelumnya untuk meningkatkan ringkasan akhir secara bertahap.
Di bawah ini adalah contoh pembuatan map_reduce_chain.
Ini menjalin urutan langkah sejauh ini menjadi satu rantai.
Chain of Density
sumber: https://arxiv.org/pdf/2309.04269
Perintah “Chain of Density” (CoD) adalah teknik yang dikembangkan untuk meningkatkan pembuatan ringkasan dengan menggunakan GPT-4.
Metode ini melibatkan pembuatan ringkasan dengan objek yang lebih sedikit pada awalnya, dan kemudian secara berulang-ulang memasukkan objek penting yang hilang tanpa menambah panjangnya. Penelitian telah menunjukkan bahwa ringkasan yang dihasilkan dengan CoD lebih abstrak dan menggabungkan informasi dengan lebih baik daripada prompt biasa, dan memiliki kepadatan yang sama dengan ringkasan yang dibuat oleh manusia.
Penyempurnaan bertahap: CoD pada awalnya menghasilkan ringkasan sederhana dengan lebih sedikit objek, lalu secara bertahap meningkatkan ringkasan dengan menambahkan objek yang lebih penting. Proses ini meningkatkan kepadatan informasi sambil mempertahankan panjang ringkasan, sehingga menghasilkan ringkasan yang mudah dibaca dan kaya informasi.
Menyeimbangkan kepadatan informasi dan keterbacaan: Metode CoD menyesuaikan kepadatan informasi ringkasan untuk menemukan keseimbangan optimal antara keinformatifan dan keterbacaan. Penelitian menunjukkan bahwa orang lebih menyukai ringkasan CoD yang lebih padat daripada ringkasan GPT-4 pada umumnya, tetapi tidak sepadat ringkasan yang ditulis oleh manusia.
Peningkatan abstraksi dan penggabungan informasi: ringkasan yang dibuat oleh CoD lebih abstrak, memiliki penggabungan informasi yang lebih baik, dan tidak mudah mengarah pada bias. Hal ini berkontribusi pada peningkatan kualitas dan keterbacaan ringkasan secara keseluruhan. Deskripsi parameter input untuk Chain of Density Prompt
content_category: Kategori ringkasan konten (misalnya, artikel, transkrip video, posting blog, makalah penelitian). Default: Artikelcontent: Konten yang akan diringkasentity_range: Rentang jumlah entitas yang akan dipilih dari konten untuk ditambahkan ke ringkasan. Standarnya adalah 1-3max_words: Jumlah maksimum kata yang akan dimasukkan ke dalam ringkasan untuk satu ringkasan.iterasi: Jumlah putaran densifikasi entitas. Total ringkasan adalah iterasi+1. Untuk 80 kata, 3 kali perulangan adalah ideal. Untuk ringkasan yang lebih panjang, 4 atau 5 kali perulangan dan mengubahentity_rangemenjadi, misalnya, 1 sampai 4 juga dapat membantu. Default: 3. Kode ini menggunakan perintah Chain of Density untuk membuat rantai yang menghasilkan ringkasan teks.
Chain pertama menampilkan hasil sementara, dan chain kedua hanya mengekstrak ringkasan akhir.
Periksa data yang ingin Anda rangkum.
Mengalirkan sebagian JSON. Setiap potongan yang di-stream adalah daftar diktat JSON yang sama dengan akhiran baru yang ditambahkan.
Jadi, Anda perlu mencetak \r carriage return untuk membuatnya terlihat seperti potongan berikutnya menimpa potongan sebelumnya dan mengalirkannya secara berulang, bukan sekadar menggabungkan.
Clustering-Map-Refine
Penulis asli tutorial ini, gkamradt, mengajukan usulan menarik mengenai ringkasan dokumen panjang.
Latar belakangnya adalah sebagai berikut:
Metode map-reduce atau map-refine semuanya memakan waktu lama dan biaya yang tinggi.
Oleh karena itu, penulis mengusulkan untuk membagi dokumen menjadi beberapa kluster (N dokumen), kemudian menganggap dokumen yang paling dekat dengan sumbu pusat sebagai dokumen perwakilan kluster tersebut, dan merangkum dokumen-dokumen ini menggunakan metode map-reduce (atau map-refine).
Hasilnya, biaya menjadi lebih rasional, dan hasilnya juga memuaskan, sehingga saya telah memodifikasi kode dari tutorial penulis asli untuk dibagikan.
Ketika Anda menjalankan kode di bawah ini, kode ini akan menggabungkan teks ke dalam satu dokumen. Tujuannya adalah untuk menghindari pemisahan per halaman.
Jumlah total karakter yang digabungkan adalah sekitar 28 ribu.
Periksa jumlah dokumen yang dipisah. Dalam kasus ini, kami membagi menjadi 79 dokumen.
Gunakan model Penyematan OpenAI untuk menyematkan dokumen Anda.
Bagilah total 79 dokumen ke dalam 10 cluster. Kami menggunakan KMeans untuk melakukan pengelompokan.
Periksa hasil yang diberi label.

Kemudian, kita perlu menemukan dan menyimpan penyematan yang paling dekat dengan titik pusat setiap klaster.
Urutkan ringkasan dokumen dalam urutan menaik agar tetap teratur.
Keluarkan 10 dokumen yang dipilih. Dalam prosesnya, Anda membuat dokumen menggunakan objek Dokumen.
Last updated