Proyek ini bertujuan untuk membangun mesin rekomendasi yang memanfaatkan arsitektur generasi pengambilan agen (RAG) untuk memberikan rekomendasi sadar konteks berdasarkan kueri pengguna. MVP berfokus pada modularitas dan skalabilitas sambil menggunakan teknologi open-source untuk efisiensi biaya.
Struktur basis kode yang diusulkan:
ragsearch/
├── __init__.py
├── retrieval/
│ ├── __init__.py
│ ├── structured.py # For databases (e.g., DuckDB,sqlLite,MongoDB)
│ ├── unstructured.py # For document loaders (e.g., PDF, Word, HTML)
│ ├── base.py # Abstract base class
├── generation/
│ ├── __init__.py
│ ├── langchain.py # LangChain-based generation
│ ├── llamaindex.py # LlamaIndex-based generation
│ ├── base.py # Abstract base class
├── fusion/
│ ├── __init__.py
│ ├── simple_fusion.py # Simple query-context fusion
│ ├── attention.py # Advanced fusion strategies
│ ├── base.py # Abstract base class
├── reranking/
│ ├── __init__.py # Factory for reranking components
│ ├── bm25_reranker.py # Reranking based on BM25 scores
│ ├── neural_reranker.py # Reranking with neural models
│ ├── base.py # Abstract base class
├── llms/
│ ├── __init__.py # Factory for LLMs
│ ├── openai.py # OpenAI wrapper
│ ├── cohere.py # Cohere wrapper
│ ├── huggingface.py # HuggingFace wrapper
│ ├── base.py # Abstract base class
├── utils/
│ ├── __init__.py
│ ├── logger.py # Logging utilities
│ ├── config.py # Configuration utilities
│ ├── data.py # Data utilities
│ ├── metrics.py # Evaluation metrics
├── tests/
│ ├── __init__.py
│ ├── test_retrieval.py
│ ├── test_generation.py
│ ├── test_fusion.py
│ ├── test_reranking.py
│ ├── test_llms.py
├── main.py # Main entry point
├── config.yaml # Configuration file
├── README.md # Project documentation
├── RAG.md # Documentation for Retrieval-Augmented Generation
├── RAG-FAQ.md # FAQ for Retrieval-Augmented Generation
Retrieval-Augmented Generation (RAG) adalah proses mengoptimalkan output dari model bahasa besar, sehingga merujuk pada basis pengetahuan otoritatif di luar sumber data pelatihannya sebelum menghasilkan respons. Model bahasa besar (LLM) dilatih pada volume data yang luas dan menggunakan miliaran parameter untuk menghasilkan output asli untuk tugas -tugas seperti menjawab pertanyaan, menerjemahkan bahasa, dan menyelesaikan kalimat. Rag memperluas kemampuan LLM yang sudah kuat ke domain tertentu atau basis pengetahuan internal organisasi, semua tanpa perlu melatih kembali model. Ini adalah pendekatan yang hemat biaya untuk meningkatkan output LLM sehingga tetap relevan, akurat, dan berguna dalam berbagai konteks.
LLMS adalah teknologi utama kecerdasan buatan (AI) yang mendukung chatbots cerdas dan aplikasi pemrosesan bahasa alami (NLP) lainnya. Tujuannya adalah untuk membuat bot yang dapat menjawab pertanyaan pengguna dalam berbagai konteks dengan referensi silang sumber pengetahuan otoritatif. Sayangnya, sifat teknologi LLM memperkenalkan ketidakpastian dalam respons LLM. Selain itu, data pelatihan LLM statis dan memperkenalkan tanggal batas tentang pengetahuan yang dimilikinya.
Menyajikan informasi palsu ketika tidak memiliki jawabannya. Menyajikan informasi yang sudah ketinggalan zaman atau generik ketika pengguna mengharapkan respons spesifik saat ini. Menciptakan respons dari sumber non-otoritatif. Membuat tanggapan yang tidak akurat karena kebingungan terminologi, di mana berbagai sumber pelatihan menggunakan terminologi yang sama untuk membicarakan hal -hal yang berbeda. Anda dapat menganggap model bahasa besar sebagai karyawan baru yang terlalu antusias yang menolak untuk tetap mendapat informasi dengan peristiwa terkini tetapi akan selalu menjawab setiap pertanyaan dengan keyakinan mutlak. Sayangnya, sikap seperti itu dapat berdampak negatif terhadap kepercayaan pengguna dan bukan sesuatu yang Anda ingin chatbot Anda ditiru!
Rag adalah salah satu pendekatan untuk menyelesaikan beberapa tantangan ini. Ini mengarahkan kembali LLM untuk mengambil informasi yang relevan dari sumber pengetahuan yang otoritatif dan ditentukan sebelumnya. Organisasi memiliki kontrol yang lebih besar atas output teks yang dihasilkan, dan pengguna mendapatkan wawasan tentang bagaimana LLM menghasilkan respons.
Teknologi RAG membawa beberapa manfaat bagi upaya AI generatif organisasi.
Pengembangan chatbot biasanya mulai menggunakan model fondasi. Foundation Models (FMS) adalah LLMS yang dapat diakses API yang dilatih pada spektrum luas dari data umum dan tidak berlabel. Biaya komputasi dan keuangan untuk pelatihan ulang FMS untuk organisasi atau informasi khusus domain tinggi. Rag adalah pendekatan yang lebih hemat biaya untuk memperkenalkan data baru ke LLM. Itu membuat teknologi generatif kecerdasan (AI generatif) dapat diakses secara lebih luas dan dapat digunakan.
Bahkan jika sumber data pelatihan asli untuk LLM cocok untuk kebutuhan Anda, itu sulit untuk mempertahankan relevansi. RAG memungkinkan pengembang untuk memberikan penelitian, statistik, atau berita terbaru untuk model generatif. Mereka dapat menggunakan RAG untuk menghubungkan LLM secara langsung ke feed media sosial, situs berita, atau sumber informasi lainnya yang sering diperbarui. LLM kemudian dapat memberikan informasi terbaru kepada pengguna.
Rag memungkinkan LLM untuk menyajikan informasi yang akurat dengan atribusi sumber. Output dapat mencakup kutipan atau referensi ke sumber. Pengguna juga dapat mencari dokumen sumber sendiri jika mereka memerlukan klarifikasi lebih lanjut atau lebih detail. Ini dapat meningkatkan kepercayaan dan kepercayaan pada solusi AI generatif Anda.
Dengan Rag, pengembang dapat menguji dan meningkatkan aplikasi obrolan mereka lebih efisien. Mereka dapat mengendalikan dan mengubah sumber informasi LLM untuk beradaptasi dengan perubahan persyaratan atau penggunaan lintas fungsi. Pengembang juga dapat membatasi pengambilan informasi sensitif ke tingkat otorisasi yang berbeda dan memastikan LLM menghasilkan respons yang tepat. Selain itu, mereka juga dapat memecahkan masalah dan membuat perbaikan jika LLM referensi sumber informasi yang salah untuk pertanyaan tertentu. Organisasi dapat mengimplementasikan teknologi AI generatif lebih percaya diri untuk berbagai aplikasi yang lebih luas.
Tanpa Rag, LLM mengambil input pengguna dan membuat respons berdasarkan informasi yang dilatih - atau apa yang sudah diketahui. Dengan RAG, komponen pengambilan informasi diperkenalkan yang menggunakan input pengguna untuk terlebih dahulu menarik informasi dari sumber data baru. Kueri pengguna dan informasi yang relevan keduanya diberikan kepada LLM. LLM menggunakan pengetahuan baru dan data pelatihannya untuk membuat tanggapan yang lebih baik. Bagian berikut memberikan gambaran tentang proses.
Data baru di luar set data pelatihan asli LLM disebut data eksternal. Ini dapat berasal dari beberapa sumber data, seperti API, database, atau repositori dokumen. Data mungkin ada dalam berbagai format seperti file, catatan database, atau teks bentuk panjang. Teknik AI lain, yang disebut model bahasa yang menanamkan, mengubah data menjadi representasi numerik dan menyimpannya dalam database vektor. Proses ini menciptakan pustaka pengetahuan yang dapat dipahami oleh model AI generatif.
Langkah selanjutnya adalah melakukan pencarian relevansi. Kueri pengguna dikonversi ke representasi vektor dan dicocokkan dengan database vektor. Misalnya, pertimbangkan chatbot pintar yang dapat menjawab pertanyaan sumber daya manusia untuk suatu organisasi. Jika seorang karyawan mencari, "Berapa banyak cuti tahunan yang saya miliki?" Sistem ini akan mengambil dokumen kebijakan cuti tahunan bersama dengan catatan cuti masa lalu karyawan individu. Dokumen-dokumen khusus ini akan dikembalikan karena sangat relevan dengan apa yang dimiliki oleh karyawan. Relevansi dihitung dan ditetapkan menggunakan perhitungan dan representasi vektor matematika.
Selanjutnya, model RAG menambah input pengguna (atau prompt) dengan menambahkan data yang diambil relevan dalam konteks. Langkah ini menggunakan teknik rekayasa cepat untuk berkomunikasi secara efektif dengan LLM. Prompt augmented memungkinkan model bahasa besar untuk menghasilkan jawaban yang akurat untuk permintaan pengguna.
Pertanyaan selanjutnya mungkin - bagaimana jika data eksternal menjadi basi? Untuk mempertahankan informasi saat ini untuk pengambilan, secara tidak sinkron memperbarui dokumen dan memperbarui representasi dokumen. Anda dapat melakukan ini melalui proses real-time otomatis atau pemrosesan batch berkala. Ini adalah tantangan umum dalam analisis data-pendekatan sains data yang berbeda untuk mengubah manajemen dapat digunakan.
Pencarian semantik meningkatkan hasil kain untuk organisasi yang ingin menambahkan sumber pengetahuan eksternal yang luas ke aplikasi LLM mereka. Modern Enterprises menyimpan sejumlah besar informasi seperti manual, FAQ, laporan penelitian, panduan layanan pelanggan, dan repositori dokumen sumber daya manusia di berbagai sistem. Pengambilan konteks menantang dalam skala dan akibatnya menurunkan kualitas output generatif.
Teknologi pencarian semantik dapat memindai database besar informasi yang berbeda dan mengambil data lebih akurat. Misalnya, mereka dapat menjawab pertanyaan seperti, "Berapa banyak yang dihabiskan untuk perbaikan mesin tahun lalu?" Dengan memetakan pertanyaan ke dokumen yang relevan dan mengembalikan teks tertentu alih -alih hasil pencarian.
Solusi pencarian kata kunci atau kata kunci dalam RAG menghasilkan hasil terbatas untuk tugas-tugas intensif pengetahuan. Pengembang juga harus berurusan dengan embeddings Word, dokumen chunking, dan kompleksitas lainnya saat mereka secara manual menyiapkan data mereka. Sebaliknya, teknologi pencarian semantik melakukan semua pekerjaan persiapan basis pengetahuan sehingga pengembang tidak perlu melakukannya. Mereka juga menghasilkan bagian -bagian yang relevan secara semantik dan kata -kata token yang dipesan oleh relevansi untuk memaksimalkan kualitas muatan kain.