? Generasi Augmented Pengambilan Luar Biasa (RAG)
Repositori ini berisi Daftar Luar Biasa yang dikurasi dan informasi umum tentang aplikasi Retrieval-Augmented Generation (RAG) di Generative AI.
Retrieval-Augmented Generation (RAG) adalah teknik dalam AI Generatif di mana konteks tambahan diambil dari sumber eksternal untuk memperkaya proses generatif Model Bahasa Besar (LLM). Pendekatan ini memungkinkan LLM untuk memasukkan informasi terkini, spesifik, atau sensitif yang mungkin kurang dari data pra-pelatihan mereka saja.
Isi
- Informasi Umum tentang RAG
- Pendekatan
- ? Kerangka Kerja yang Memfasilitasi RAG
- Teknik
- Metrik
- ? Basis Data
Informasi Umum tentang RAG
Dalam pendekatan RAG tradisional, kerangka dasar digunakan untuk mengambil dokumen yang memperkaya konteks permintaan LLM. Misalnya, ketika menanyakan tentang bahan untuk merenovasi rumah, LLM mungkin memiliki pengetahuan umum tentang renovasi namun tidak memiliki rincian spesifik tentang rumah tersebut. Penerapan arsitektur RAG memungkinkan pencarian dan pengambilan dokumen relevan dengan cepat, seperti cetak biru, untuk menawarkan respons yang lebih disesuaikan. Hal ini memastikan bahwa LLM memasukkan informasi spesifik untuk kebutuhan renovasi, sehingga meningkatkan keakuratan tanggapannya.
Implementasi RAG pada umumnya mengikuti langkah-langkah utama berikut:
- Bagilah basis pengetahuan: Pecahkan korpus dokumen menjadi bagian-bagian yang lebih kecil dan mudah dikelola.
- Buat penyematan: Terapkan model penyematan untuk mengubah potongan teks ini menjadi penyematan vektor, dengan menangkap makna semantiknya.
- Simpan dalam basis data vektor: Simpan penyematan dalam basis data vektor, memungkinkan pengambilan cepat berdasarkan kesamaan semantik.
- Menangani kueri pengguna: Ubah kueri pengguna menjadi penyematan menggunakan model yang sama yang diterapkan pada potongan teks.
- Ambil data yang relevan: Telusuri database vektor untuk penyematan yang paling cocok dengan penyematan kueri berdasarkan kesamaan semantik.
- Tingkatkan perintah: Gabungkan potongan teks paling relevan ke dalam perintah LLM untuk memberikan konteks berharga untuk menghasilkan respons.
- Hasilkan tanggapan: LLM memanfaatkan permintaan tambahan untuk memberikan tanggapan yang akurat dan disesuaikan dengan permintaan pengguna.
Pendekatan
Implementasi RAG memiliki kompleksitas yang bervariasi, mulai dari pengambilan dokumen sederhana hingga teknik canggih yang mengintegrasikan putaran umpan balik berulang dan peningkatan khusus domain. Pendekatan mungkin termasuk:
- RAG Korektif (CRAG): Metode untuk memperbaiki atau menyempurnakan informasi yang diambil sebelum diintegrasikan ke dalam respons LLM.
- Retrieval-Augmented Fine-Tuning (RAFT): Teknik untuk menyempurnakan LLM secara khusus untuk meningkatkan tugas pengambilan dan pembuatan.
- RAG Reflektif Diri: Model yang secara dinamis menyesuaikan strategi pengambilan berdasarkan umpan balik kinerja model.
- RAG Fusion: Teknik yang menggabungkan beberapa metode pengambilan untuk meningkatkan integrasi konteks.
- Pengambilan Augmented Temporal (TAR): Mempertimbangkan data sensitif terhadap waktu dalam proses pengambilan.
- Plan-then-RAG (PlanRAG): Strategi yang melibatkan tahapan perencanaan sebelum melaksanakan RAG untuk tugas-tugas kompleks.
- GraphRAG: Pendekatan terstruktur menggunakan grafik pengetahuan untuk meningkatkan integrasi dan penalaran konteks.
- FLARE - Suatu pendekatan yang menggabungkan generasi augmented pengambilan aktif untuk meningkatkan kualitas respons.
- Pengambilan Kontekstual - Meningkatkan pengambilan dengan menambahkan konteks yang relevan ke potongan dokumen sebelum pengambilan, meningkatkan relevansi informasi yang diambil dari basis pengetahuan yang besar.
? Kerangka Kerja yang Memfasilitasi RAG
- Haystack - Kerangka kerja orkestrasi LLM untuk membangun aplikasi LLM yang dapat disesuaikan dan siap produksi.
- LangChain - Kerangka kerja serba guna untuk bekerja dengan LLM.
- Kernel Semantik - SDK dari Microsoft untuk mengembangkan aplikasi AI Generatif.
- LlamaIndex - Kerangka untuk menghubungkan sumber data khusus ke LLM.
- Cognita - Kerangka kerja RAG sumber terbuka untuk membangun aplikasi modular dan siap produksi.
- Verba - Aplikasi sumber terbuka untuk RAG yang siap digunakan.
- Mastra - Kerangka skrip untuk membangun aplikasi AI.
Teknik
Pembersihan data
- Teknik pembersihan data: Langkah pra-pemrosesan untuk menyempurnakan data masukan dan meningkatkan performa model.
Dorongan
- Strategi
- Pemberian Tag dan Pelabelan: Menambahkan tag atau label semantik ke data yang diambil untuk meningkatkan relevansi.
- Alasan dan Tindakan (ReAct) (ReAct): Integrasi kemampuan penalaran untuk memandu respons LLM berdasarkan konteks yang diambil.
- Chain of Thought (CoT): Mendorong model untuk memikirkan masalah langkah demi langkah sebelum memberikan jawaban.
- Chain of Verification (CoVe): Mendorong model untuk memverifikasi setiap langkah dari alasan keakuratannya.
- Konsistensi Diri: Menghasilkan berbagai jalur penalaran dan memilih jawaban yang paling konsisten.
- Zero-Shot Prompting: Merancang perintah yang memandu model tanpa contoh apa pun.
- Few-Shot Prompting: Memberikan beberapa contoh dalam prompt untuk mendemonstrasikan format respons yang diinginkan.
- cache
- Caching Cepat: Mengoptimalkan LLM dengan menyimpan dan menggunakan kembali status perhatian yang telah dihitung sebelumnya.
Potongan
- Potongan ukuran tetap
- Membagi teks menjadi segmen berukuran konsisten untuk pemrosesan yang efisien.
- Membagi teks menjadi beberapa bagian berdasarkan ukuran dan tumpang tindih.
- Contoh: Dibagi berdasarkan karakter (LangChain).
- Contoh: Pemisah Kalimat (LlamaIndex).
- Pengelompokan rekursif
- Segmentasi hierarki menggunakan algoritma rekursif untuk struktur dokumen yang kompleks.
- Contoh: Dibagi secara rekursif berdasarkan karakter (LangChain).
- Pengelompokan berbasis dokumen
- Menyegmentasikan dokumen berdasarkan metadata atau isyarat pemformatan untuk analisis yang ditargetkan.
- Contoh: MarkdownHeaderTextSplitter (LangChain).
- Contoh: Menangani penyematan gambar dan teks dengan model seperti OpenCLIP.
- Pemotongan semantik
- Mengekstraksi bagian-bagian yang bermakna berdasarkan relevansi semantik, bukan batas-batas yang sewenang-wenang.
- Pemotongan agen
- Metode chunking interaktif di mana LLM memandu segmentasi.
Penyematan
- Pilih model penyematan
- Papan Peringkat MTEB : Jelajahi tolok ukur Hugging Face untuk mengevaluasi penyematan model.
- Penyematan Khusus : Kembangkan penyematan yang disesuaikan untuk domain atau tugas tertentu guna meningkatkan kinerja model. Penyematan khusus dapat menangkap terminologi dan nuansa khusus domain. Tekniknya mencakup menyempurnakan model terlatih pada set data Anda sendiri atau menyematkan pelatihan dari awal menggunakan kerangka kerja seperti TensorFlow atau PyTorch.
Pengambilan
- Metode Pencarian
- Indeks Datar Penyimpanan Vektor
- Bentuk pengambilan yang sederhana dan efisien.
- Konten di-vektorisasi dan disimpan sebagai vektor konten datar.
- Pengambilan Indeks Hierarki
- Mempersempit data secara hierarki ke tingkat yang berbeda.
- Mengeksekusi pengambilan berdasarkan urutan hierarki.
- Pertanyaan Hipotetis
- Digunakan untuk meningkatkan kesamaan antara potongan database dan kueri (sama dengan HyDE).
- LLM digunakan untuk menghasilkan pertanyaan spesifik untuk setiap potongan teks.
- Ubah pertanyaan-pertanyaan ini menjadi penyematan vektor.
- Selama pencarian, cocokkan kueri dengan indeks vektor pertanyaan ini.
- Penyematan Dokumen Hipotetis (HyDE)
- Digunakan untuk meningkatkan kesamaan antara potongan database dan kueri (sama dengan Pertanyaan Hipotetis).
- LLM digunakan untuk menghasilkan respons hipotetis berdasarkan kueri.
- Mengubah respons ini menjadi penyematan vektor.
- Membandingkan vektor kueri dengan vektor respons hipotetis.
- Pengambilan Kecil hingga Besar
- Meningkatkan pengambilan dengan menggunakan potongan yang lebih kecil untuk pencarian dan potongan yang lebih besar untuk konteks.
- Potongan anak yang lebih kecil mengacu pada potongan induk yang lebih besar
- Pemeringkatan ulang : Meningkatkan hasil pencarian di saluran RAG dengan menyusun ulang dokumen yang diambil pada awalnya, memprioritaskan dokumen yang paling relevan secara semantik dengan kueri.
Metrik
Metrik pencarian
Metrik ini digunakan untuk mengukur kesamaan antara penyematan, yang penting untuk mengevaluasi seberapa efektif sistem RAG mengambil dan mengintegrasikan dokumen atau sumber data eksternal. Dengan memilih metrik kesamaan yang sesuai, Anda dapat mengoptimalkan performa dan akurasi sistem RAG Anda. Alternatifnya, Anda dapat mengembangkan metrik khusus yang disesuaikan dengan domain atau niche spesifik Anda untuk menangkap nuansa spesifik domain dan meningkatkan relevansi.
Kesamaan Kosinus
- Mengukur kosinus sudut antara dua vektor dalam ruang multidimensi.
- Sangat efektif untuk membandingkan penyematan teks yang arah vektornya mewakili informasi semantik.
- Biasa digunakan dalam sistem RAG untuk mengukur kesamaan semantik antara penyematan kueri dan penyematan dokumen.
Produk Titik
- Menghitung jumlah produk dari entri yang bersesuaian dari dua barisan angka.
- Setara dengan kesamaan kosinus ketika vektor dinormalisasi.
- Sederhana dan efisien, sering digunakan dengan akselerasi perangkat keras untuk komputasi skala besar.
Jarak Euclidean
- Menghitung jarak garis lurus antara dua titik dalam ruang Euclidean.
- Dapat digunakan dengan penyematan tetapi mungkin kehilangan efektivitas dalam ruang berdimensi tinggi karena "kutukan dimensi".
- Sering digunakan dalam algoritma pengelompokan seperti K-means setelah reduksi dimensi.
Kesamaan Jaccard
- Mengukur kemiripan antara dua himpunan berhingga sebagai besar perpotongan dibagi dengan besar gabungan himpunan tersebut.
- Berguna saat membandingkan kumpulan token, seperti dalam model bag-of-words atau perbandingan n-gram.
- Kurang berlaku untuk penyematan berkelanjutan yang diproduksi oleh LLM.
Catatan: Kesamaan Kosinus dan Produk Titik umumnya dipandang sebagai metrik paling efektif untuk mengukur kesamaan antara penyematan berdimensi tinggi.
Metrik Evaluasi Respons
Metrik ini menilai kualitas dan relevansi jawaban yang dihasilkan dari sistem RAG Anda, mengevaluasi seberapa akurat, sesuai konteks, dan dapat diandalkan. Dengan menerapkan metrik evaluasi ini, Anda dapat memperoleh wawasan tentang kinerja sistem Anda dan mengidentifikasi area yang perlu ditingkatkan.
- Pembandingan otomatis
- Manusia sebagai hakim
- Model sebagai juri
Peralatan
Alat-alat ini dapat membantu mengevaluasi kinerja sistem RAG Anda, mulai dari melacak umpan balik pengguna hingga mencatat interaksi kueri dan membandingkan beberapa metrik evaluasi dari waktu ke waktu.
- LangFuse : Alat sumber terbuka untuk melacak metrik LLM, kemampuan observasi, dan manajemen cepat.
- Ragas : Kerangka kerja yang membantu mengevaluasi jaringan pipa RAG.
- LangSmith : Sebuah platform untuk membangun aplikasi LLM tingkat produksi, memungkinkan Anda memantau dan mengevaluasi aplikasi Anda secara dekat.
- Evaluasi Wajah Memeluk : Alat untuk menghitung metrik seperti BLEU dan ROUGE untuk menilai kualitas teks.
- Bobot & Bias : Melacak eksperimen, mencatat metrik, dan memvisualisasikan kinerja.
? Basis Data
Daftar di bawah menampilkan beberapa sistem database yang cocok untuk aplikasi Retrieval Augmented Generation (RAG). Mereka mencakup berbagai kasus penggunaan RAG, membantu penyimpanan dan pengambilan vektor secara efisien untuk menghasilkan respons atau rekomendasi.
Tolok ukur
Mesin Pemrosesan dan Penyajian Data Terdistribusi:
- Apache Cassandra: Sistem manajemen basis data NoSQL terdistribusi.
- MongoDB Atlas: Layanan database multi-model yang didistribusikan secara global dengan pencarian vektor terintegrasi.
- Vespa: Mesin pemrosesan dan penyajian data besar sumber terbuka yang dirancang untuk aplikasi waktu nyata.
Mesin Pencari dengan Kemampuan Vektor:
- Elasticsearch: Menyediakan kemampuan pencarian vektor bersama dengan fungsi pencarian tradisional.
- OpenSearch: Mesin pencari dan analitik terdistribusi, bercabang dari Elasticsearch.
Basis Data Vektor:
- Chroma DB: Basis data penyematan sumber terbuka asli AI.
- Milvus: Basis data vektor sumber terbuka untuk aplikasi yang didukung AI.
- Pinecone: Database vektor tanpa server, dioptimalkan untuk alur kerja pembelajaran mesin.
- Oracle AI Vector Search: Mengintegrasikan kemampuan pencarian vektor dalam Oracle Database untuk kueri semantik berdasarkan penyematan vektor.
Ekstensi Basis Data Relasional:
- Pgvector: Ekstensi sumber terbuka untuk pencarian kesamaan vektor di PostgreSQL.
Sistem Basis Data Lainnya:
- Azure Cosmos DB: Layanan database multi-model yang didistribusikan secara global dengan pencarian vektor terintegrasi.
- Couchbase: Basis data cloud NoSQL yang terdistribusi.
- Lantern: Mesin pencari pribadi yang sadar privasi.
- LlamaIndex: Menggunakan penyimpanan vektor dalam memori langsung untuk eksperimen cepat.
- Neo4j: Sistem manajemen basis data grafik.
- Qdrant: Basis data vektor sumber terbuka yang dirancang untuk pencarian kesamaan.
- Redis Stack: Penyimpanan struktur data dalam memori yang digunakan sebagai database, cache, dan perantara pesan.
- SurrealDB: Basis data multi-model yang dapat diskalakan dan dioptimalkan untuk data deret waktu.
- Weaviate: Mesin pencari vektor cloud-native sumber terbuka.
Perpustakaan dan Alat Pencarian Vektor:
- FAISS: Perpustakaan untuk pencarian kesamaan yang efisien dan pengelompokan vektor padat, dirancang untuk menangani kumpulan data berskala besar dan dioptimalkan untuk pengambilan cepat tetangga terdekat.