berita

Mengapa model interaksi tertunda menjadi standar untuk RAG generasi berikutnya?

2024-08-05

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina



Kolom AIxiv adalah kolom tempat Machine Heart menerbitkan konten akademis dan teknis. Dalam beberapa tahun terakhir, kolom Heart of the Machine AIxiv telah menerima lebih dari 2.000 laporan, mencakup laboratorium terkemuka dari universitas dan perusahaan besar di seluruh dunia, yang secara efektif mendorong pertukaran dan diseminasi akademis. Jika Anda memiliki karya luar biasa yang ingin Anda bagikan, silakan berkontribusi atau hubungi kami untuk pelaporan. Email pengiriman: [email protected]; [email protected]

Zhang Yingfeng: Salah satu pendiri Infra, dengan pengalaman bertahun-tahun dalam pencarian, AI, dan pengembangan infrastruktur Infra, saat ini dia sedang mengerjakan pembangunan produk inti RAG generasi berikutnya.

Dalam pengembangan sistem RAG, model Reranker yang baik merupakan link yang sangat diperlukan dan selalu digunakan dalam berbagai evaluasi. Hal ini karena query yang diwakili oleh pencarian vektor akan menghadapi masalah hit rate yang rendah, sehingga diperlukan model Reranker yang canggih untuk mengatasinya ini, sehingga membentuk arsitektur penyortiran dua tahap menggunakan pencarian vektor sebagai penyaringan kasar dan model Reranker sebagai penyortiran halus.

Saat ini ada dua jenis arsitektur utama untuk model pemeringkatan:

1. Pembuat enkode ganda. Mengambil model BERT sebagai contoh, ia mengkodekan kueri dan dokumen secara terpisah, dan akhirnya melewati lapisan Pooling sehingga keluarannya hanya berisi satu vektor. Pada tahap query Ranking, Anda hanya perlu menghitung kemiripan dua vektor, seperti terlihat pada gambar di bawah ini. Encoder ganda dapat digunakan untuk tahap Pemeringkatan dan Pemeringkatan Ulang, dan pencarian vektor sebenarnya adalah model pemeringkatan ini. Karena encoder ganda mengkodekan kueri dan dokumen secara terpisah, ia tidak dapat menangkap hubungan interaktif yang kompleks antara kueri dan token dokumen, yang akan menyebabkan banyak kehilangan semantik. Namun, karena hanya pencarian vektor yang diperlukan untuk menyelesaikan penyortiran dan penilaian perhitungan, efisiensi eksekusi ditingkatkan sangat tinggi.



2. Pembuat Enkode Silang. Cross-Encoder menggunakan model encoder tunggal untuk mengkodekan kueri dan dokumen secara bersamaan. Ini dapat menangkap interaksi kompleks antara kueri dan dokumen, sehingga dapat memberikan hasil peringkat pencarian yang lebih akurat. Cross-Encoder tidak menampilkan vektor yang sesuai dengan Token kueri dan dokumen, tetapi menambahkan pengklasifikasi untuk secara langsung menampilkan skor kesamaan kueri dan dokumen. Kerugiannya adalah karena kebutuhan untuk mengkodekan setiap dokumen dan kueri secara bersamaan pada waktu kueri, yang membuat penyortiran menjadi sangat lambat, Cross-Encoder hanya dapat digunakan untuk menyusun ulang hasil akhir. Misalnya, menyusun ulang 10 Besar hasil penyaringan awal masih membutuhkan waktu beberapa detik untuk diselesaikan.



Sejak tahun ini, jenis pekerjaan lain yang diwakili oleh ColBERT [Referensi 1] telah menarik perhatian luas dalam komunitas pengembangan RAG, seperti yang ditunjukkan pada gambar di bawah, pekerjaan ini memiliki beberapa karakteristik yang sangat berbeda dari dua jenis model pemeringkatan di atas:

Salah satunya adalah dibandingkan dengan Cross Encoder, ColBERT masih menggunakan strategi encoder ganda, menggunakan encoder independen untuk mengkodekan kueri dan dokumen. Oleh karena itu, token kueri dan Token dokumen tidak saling mempengaruhi selama pengkodean diproses secara offline, dan hanya Kueri yang dikodekan saat membuat kueri, sehingga kecepatan pemrosesannya jauh lebih tinggi daripada Cross Encoder;

Yang kedua adalah dibandingkan dengan encoder ganda, ColBERT mengeluarkan banyak vektor, bukan satu vektor, yang diperoleh langsung dari lapisan keluaran terakhir Transformer, sedangkan encoder ganda mengubah beberapa vektor menjadi satu vektor melalui keluaran lapisan Pooling. sehingga kehilangan beberapa semantik.

Dalam penghitungan pengurutan, ColBERT memperkenalkan fungsi kesamaan penghitungan interaktif tertunda dan menamainya kesamaan maksimum (MaxSim). Metode penghitungannya adalah sebagai berikut: untuk setiap vektor Token kueri, kesamaan dihitung dengan vektor yang sesuai dengan semua Token dokumen melacak skor maksimum untuk setiap token kueri. Skor total untuk kueri dan dokumen adalah jumlah dari skor kosinus maksimum ini. Misalnya, untuk kueri dengan 32 vektor Token (panjang kueri maksimum adalah 32) dan dokumen dengan 128 Token, operasi kesamaan 32*128 perlu dilakukan, seperti yang ditunjukkan pada gambar di bawah.

Jadi sebagai perbandingan, Cross Encoder bisa disebutModel Interaksi Awal, dan karya yang diwakili oleh ColBERT dapat dipanggilModel Interaksi Terlambat.



Gambar berikut membandingkan model penyortiran di atas dalam hal kinerja dan kualitas penyortiran. Karena model interaksi tertunda memenuhi kemampuan untuk menangkap interaksi kompleks antara kueri dan dokumen selama proses penyortiran, dan juga menghindari overhead pengkodean token dokumen, model ini tidak hanya dapat memastikan efek penyortiran yang baik, tetapi juga mencapai kinerja penyortiran yang lebih cepat— Di bawah skala data yang sama, efisiensi ColBERT bisa lebih dari 100 kali lipat dari Cross Encoder. Oleh karena itu, model interaksi tertunda adalah model penyortiran yang sangat menjanjikan. Ide yang wajar adalah:Bisakah model interaksi tertunda langsung digunakan di RAG untuk menggantikan arsitektur penyortiran dua tahap pencarian vektor + penyortiran halus?



Untuk mencapai tujuan ini, kita perlu mempertimbangkan beberapa masalah dalam rekayasa ColBERT:

1. Fungsi kesamaan interaktif tertunda MaxSim ColBERT memiliki efisiensi komputasi yang jauh lebih tinggi daripada Cross Encoder, tetapi dibandingkan dengan pencarian vektor biasa, overhead komputasi masih sangat tinggi: karena kesamaan antara kueri dan dokumen adalah perhitungan multi-vektor, MaxSim's The overhead adalah M * N kali lipat dari penghitungan kesamaan vektor biasa (M adalah jumlah token dalam kueri, N adalah jumlah token dalam dokumen). Menanggapi hal ini, penulis ColBERT meluncurkan ColBERT v2 pada tahun 2021 [Referensi 2], yang meningkatkan kualitas Penyematan yang dihasilkan melalui Cross Encoder dan distilasi model, dan menggunakan teknologi kompresi untuk mengkuantisasi vektor dokumen yang dihasilkan, sehingga meningkatkan penghitungan kinerja MaxSim. Project RAGatouille [Referensi 3] berdasarkan kemasan ColBERT v2 menjadi solusi penyortiran RAG berkualitas tinggi. Namun, ColBERT v2 hanyalah sebuah perpustakaan algoritma, dan masih sulit untuk menggunakannya secara end-to-end dalam sistem RAG tingkat perusahaan.

2. Karena ColBERT adalah model yang telah dilatih sebelumnya, dan data pelatihan berasal dari kueri mesin pencari dan hasil yang dikembalikan, data teks ini tidak besar. Misalnya, jumlah Token kueri adalah 32, dan jumlah Token dokumen adalah 128 , yang merupakan batas panjang tipikal. Oleh karena itu, ketika ColBERT digunakan untuk data nyata, panjang yang melebihi batas akan terpotong, sehingga tidak cocok untuk pengambilan dokumen yang panjang.

Berdasarkan masalah di atas, database asli AI open source Infinity menyediakan tipe data Tensor dalam versi terbaru dan secara asli menyediakan solusi ColBERT end-to-end. Saat Tensor digunakan sebagai tipe data, beberapa vektor keluaran dengan pengkodean ColBERT dapat langsung disimpan dalam satu Tensor, sehingga kesamaan antar Tensor dapat langsung memperoleh skor MaxSim. Menanggapi masalah perhitungan MaxSim dalam jumlah besar, Infinity telah memberikan dua solusi untuk dioptimalkan: satu adalah kuantisasi biner, yang dapat membuat ruang Tensor asli hanya 1/32 dari ukuran aslinya, tetapi tidak mengubah urutan relatif hasil perhitungan MaxSim. Solusi ini terutama digunakan untuk Reranker, karena Tensor yang sesuai perlu diekstraksi berdasarkan hasil tahap penyaringan kasar sebelumnya. Yang lainnya adalah Indeks Tensor. ColBERTv2 sebenarnya adalah implementasi Indeks Tensor yang diluncurkan oleh penulis ColBERT. Infinity menggunakan EMVB [Referensi 4], yang dapat dianggap sebagai peningkatan dari ColBERT v2, terutama melalui teknologi kuantifikasi dan pra-filter, serta SIMD. instruksi diperkenalkan pada operasi utama untuk mempercepat implementasi. Indeks Tensor hanya dapat digunakan untuk melayani Ranker, bukan Reranker. Selain itu, untuk teks panjang yang melebihi batas Token, Infinity memperkenalkan jenis Tensor Array:



Dokumen yang melebihi batas ColBERT akan dibagi menjadi beberapa paragraf. Setelah menyandikan dan membuat Tensor, masing-masing paragraf akan disimpan di baris yang sama dengan dokumen aslinya. Saat menghitung MaxSim, kueri dan paragraf ini dihitung secara terpisah, dan kemudian nilai maksimum diambil sebagai skor seluruh dokumen. Seperti yang ditunjukkan di bawah ini:



Oleh karena itu, dengan menggunakan Infinity, model interaksi tertunda dapat diperkenalkan secara end-to-end untuk melayani RAG dengan kualitas tinggi. Jadi apakah ColBERT harus dijadikan Ranker atau Reranker? Di bawah ini kami menggunakan Infinity untuk melakukan evaluasi pada kumpulan data nyata. Karena versi terbaru Infinity mengimplementasikan solusi penelusuran hibrid paling komprehensif dalam sejarah, metode penarikan mencakup penelusuran vektor, penelusuran teks lengkap, penelusuran vektor renggang, Tensor yang disebutkan di atas, dan kombinasi metode apa pun, serta menyediakan beragam metode Reranker , seperti RRF, dan ColBERT Reranker, jadi kami menyertakan berbagai kombinasi pencarian hybrid dan Reranker dalam ulasan.

Kami menggunakan dataset MLDR untuk evaluasi. MLDR adalah kumpulan tolok ukur yang digunakan oleh MTEB [Referensi 5] untuk mengevaluasi kualitas model Penyematan. MLDR adalah salah satu kumpulan data, yang disebut Pengambilan Dokumen Multi Panjang dan berisi total 200.000 data teks panjang. Evaluasi menggunakan BGE-M3 [Referensi 6] sebagai model Penyematan, Jina-ColBERT [Referensi 7] untuk menghasilkan Tensor, dan skrip evaluasi juga ditempatkan di gudang Infinity [Referensi 8].

Evaluasi 1: Apakah ColBERT efektif sebagai Reranker? Gunakan BGE-M3 untuk menghasilkan vektor padat dan vektor jarang dari 200.000 data MLDR, dan masukkan keduanya ke dalam database Infinity. Basis data berisi 4 kolom, yang masing-masing menyimpan teks asli, vektor, vektor jarang, dan Tensor, dan membuat teks lengkap yang sesuai. indeks dan vektor masing-masing. Indeks, indeks vektor renggang. Evaluasi tersebut mencakup seluruh kombinasi recall, termasuk recall satu arah, recall dua arah, dan recall tiga arah, sebagai berikut:



Indeks evaluasi mengadopsi nDCG@10. Parameter lainnya: Saat menggunakan RRF Reranker, N = 1000 Teratas dikembalikan melalui penyaringan kasar, jumlah total kueri adalah 800, dan panjang kueri rata-rata adalah sekitar 10 token.



Seperti yang dapat dilihat dari gambar, semua solusi penarikan telah meningkatkan hasil secara signifikan setelah menggunakan ColBERT Reranker. Sebagai model interaksi tertunda, ColBERT dapat memberikan kualitas peringkat yang sebanding dengan peringkat teratas Reranker MTEB, namun kinerjanya 100 kali lebih tinggi, sehingga pemeringkatan ulang dapat dilakukan dalam skala yang lebih besar. Hasil yang ditunjukkan pada gambar adalah untuk Top 100 Reranker, dan Top 1000 digunakan untuk reorder ColBERT. Nilainya tidak berubah secara signifikan, dan performanya turun secara signifikan, sehingga tidak disarankan. Secara tradisional, ketika menggunakan Reranker eksternal berdasarkan Cross Encoder, akan ada penundaan tingkat kedua di 10 Teratas. Namun, Infinity mengimplementasikan ColBERT Reranker berkinerja tinggi secara internal. Bahkan jika 100 Teratas atau bahkan 1000 Teratas disusun ulang, pengalaman pengguna tidak akan terpengaruh. Namun, cakupan penarikan kembali ditingkatkan secara signifikan, sehingga efek peringkat akhir dapat ditingkatkan secara signifikan. Selain itu, penghitungan ColBERT Reranker ini hanya perlu dijalankan pada arsitektur CPU murni, yang juga sangat mengurangi biaya penerapan.

Evaluasi 2: Perbandingan didasarkan pada ColBERT sebagai Ranker dan bukan Reranker. Oleh karena itu, perlu dibuat Indeks Tensor untuk data kolom Tensor. Pada saat yang sama, untuk mengevaluasi hilangnya akurasi yang disebabkan oleh Tensor Index, pencarian brute force juga dilakukan.



Terlihat bahwa dibandingkan dengan Reranker, bahkan menggunakan pencarian brute force tanpa kehilangan akurasi, tidak ada peningkatan yang signifikan, dan kualitas penyortiran berdasarkan Indeks Tensor bahkan lebih rendah dibandingkan menggunakan Reranker. Namun, waktu kueri sebagai Ranker jauh lebih lambat: kumpulan data MLDR berisi 200.000 data dokumen, yaitu sekitar 2 GB. Setelah menggunakan Jina-ColBERT untuk mengubahnya menjadi data Tensor, jumlahnya mencapai 320G tipe datanya adalah dokumen. Vektor yang sesuai dengan setiap Token dokumen harus disimpan. Dimensi model ColBERT adalah 128 dimensi, sehingga volume data default akan bertambah 2 kali lipat. dibutuhkan rata-rata 7 detik untuk menanyakan begitu banyak data. Mengembalikan kueri tetapi tidak mendapatkan hasil yang lebih baik.

Maka dari itu jelas sekali kalau ColBERT jauh lebih menguntungkan sebagai Reranker dibandingkan sebagai Ranker. Solusi pengambilan RAG terbaik saat ini adalah dengan menambahkan ColBERT Reranker berdasarkan pencarian hybrid 3 arah (pencarian teks lengkap + vektor + vektor jarang). Beberapa mitra mungkin bertanya, untuk menggunakan ColBERT Reranker, perlu menambahkan kolom Tensor terpisah, dan kolom tersebut akan diperluas sebesar 2 kali lipat dibandingkan dengan kumpulan data asli. Pertama-tama: Infinity menyediakan metode kuantisasi Biner untuk Tensor. Sebagai Reranker, hal ini tidak terlalu memengaruhi hasil penyortiran, namun dapat membuat data akhir hanya 1/32 dari ukuran Tensor asli. Kedua, meski begitu, sebagian orang akan menganggap biaya overhead ini terlalu tinggi. Namun, dari sudut pandang pengguna, masih sangat bermanfaat untuk menggunakan lebih banyak penyimpanan sebagai imbalan atas kualitas penyortiran yang lebih tinggi dan biaya yang lebih murah (proses penyortiran tidak memerlukan GPU). Yang terakhir, saya percaya bahwa model Interaksi Terlambat dengan kinerja yang sedikit berkurang namun overhead penyimpanan yang sangat berkurang akan segera diluncurkan. Sebagai infrastruktur Data Infra, perubahan ini bersifat transparan dan merupakan pilihan bijak untuk menyerahkan Trade Off ini kepada pengguna.

Hal di atas didasarkan pada evaluasi penarikan multi-saluran Infinity pada kumpulan data MLDR. Hasil evaluasi pada kumpulan data lain mungkin berbeda, tetapi kesimpulan keseluruhan tidak akan berubah - penelusuran hibrid 3 arah + penataan ulang berbasis Tensor adalah Penarikan kembali saat ini metode dengan hasil pencarian kualitas tertinggi.

Dapat dilihat dari sini bahwa ColBERT dan model interaksi tertundanya memiliki nilai penerapan yang besar dalam skenario RAG. Hal di atas adalah pekerjaan terkait pada pembuatan konten dialog teks. Baru-baru ini, model interaksi tertunda juga mendapatkan pengakuan SOTA dalam hasil skenario multi-modal. Ini adalah ColPali [Referensi 9], yang mengubah alur kerja RAG, seperti yang ditunjukkan pada gambar berikut:



Ketika RAG menghadapi dokumen berformat kompleks, SOTA saat ini menggunakan model pengenalan dokumen untuk mengidentifikasi tata letak dokumen, dan kemudian memanggil model yang sesuai untuk struktur parsial yang diidentifikasi, seperti bagan, gambar, dll., untuk mengubahnya menjadi Yang sesuai teks kemudian disimpan ke database pendukung RAG dalam berbagai format. ColPali menghilangkan langkah-langkah ini dan langsung menggunakan model multi-modal untuk menghasilkan konten Penyematan. Saat mengajukan pertanyaan, Anda dapat menjawab langsung berdasarkan grafik di dokumen:



Pelatihan model ColPali mirip dengan ColBERT, juga menggunakan bentuk pasangan halaman dokumen kueri untuk menangkap hubungan semantik antara kueri dan data multi-modal dokumen, tetapi menggunakan PaliGemma [Referensi 10] untuk menghasilkan Penyematan multi-modal. Dibandingkan dengan BiPali yang tidak menggunakan mekanisme Interaksi Terlambat tetapi juga menggunakan PaliGemma untuk menghasilkan Embedding, perbandingan indeks evaluasi nDCG@5 adalah 81,3 vs 58,8.



Oleh karena itu, meskipun sudah 4 tahun sejak ColBERT muncul, penerapan model Interaksi Terlambat di RAG baru saja dimulai. Hal ini pasti akan memperluas skenario penggunaan RAG dan memberikan ingatan semantik berkualitas tinggi dalam adegan RAG yang kompleks termasuk multi-modalitas. Infinity sudah siap untuk aplikasi end-to-endnya. Selamat mengikuti Star Infinity, https://github.com/infiniflow/infinity, dan berkomitmen untuk menjadi database asli AI terbaik!

referensi

1. Colbert: Pencarian bagian yang efisien dan efektif melalui interaksi akhir yang dikontekstualisasikan melalui bert, SIGIR 2020.

2. Colbertv2: Pengambilan yang efektif dan efisien melalui interaksi akhir yang ringan, arXiv:2112.01488, 2021.

3. RAGatouille https://github.com/bclavie/RAGatouille

4. Pengambilan Multi-vektor Padat yang Efisien dengan Vektor Bit, ECIR 2024.

5. https://huggingface.co/mteb

6.https://huggingface.co/BAAI/bge-m3

7. https://huggingface.co/jinaai/jina-colbert-v1-en

8. https://github.com/infiniflow/infinity/tree/main/python/benchmark/mldr_benchmark

9. ColPali: Pengambilan Dokumen Efisien dengan Model Bahasa Visi, arXiv:2407.01449, 2024.

10. https://github.com/google-research/big_vision/tree/main/big_vision/configs/proj/paligemma