Menggabungkan Multi-Dokumen Rag Agentik Untuk Mengendalikan 10 Dokumen
Pengenalan
Dalam catatan blog saya yang terdahulu, membina Multi-Document Agentic Rag menggunakan Llamaindex, saya menunjukkan cara membuat sistem generasi pengambilan semula (RAG) yang boleh mengendalikan dan menanyakan tiga dokumen menggunakan Llamaindex. Walaupun itu adalah permulaan yang kuat, aplikasi dunia nyata sering memerlukan keupayaan untuk mengendalikan korpus dokumen yang lebih besar.
Blog ini akan memberi tumpuan kepada skala sistem itu dari tiga dokumen hingga sebelas dan seterusnya. Kami akan menyelam ke dalam kod, cabaran skala, dan bagaimana untuk membina ejen yang cekap yang boleh mendapatkan maklumat secara dinamik dari satu set sumber yang lebih besar.
Objektif pembelajaran
- Memahami Skala Sistem RAG Agentik Multi-Dokumen dari mengendalikan beberapa dokumen kepada lebih dari 10 dokumen menggunakan Llamaindex.
- Ketahui cara membina dan mengintegrasikan mekanisme pertanyaan berasaskan alat untuk meningkatkan model RAG.
- Memahami penggunaan VectorStoreIndex dan ObjectIndex dalam mendapatkan dokumen dan alat yang relevan dengan cekap.
- Melaksanakan ejen dinamik yang mampu menjawab pertanyaan kompleks dengan mengambil kertas yang relevan dari satu set dokumen yang besar.
- Kenal pasti cabaran dan amalan terbaik apabila skala sistem RAG ke pelbagai dokumen.
Artikel ini diterbitkan sebagai sebahagian daripada Blogathon Sains Data.
Jadual Kandungan
- Pengenalan
- Langkah -langkah utama yang terlibat
- Cabaran utama dalam skala hingga 10 dokumen
- Melaksanakan kod untuk mengendalikan 10 dokumen
- Meningkatkan Rag Agentik dengan Pengambilan Alat
- Menanyakan di 11 dokumen
- Hasil dan pandangan prestasi
- Kesimpulan
- Soalan yang sering ditanya
Langkah -langkah utama yang terlibat
Di blog terdahulu, saya memperkenalkan konsep RAG agensi -pendekatan di mana kami menggabungkan pengambilan maklumat dengan model generatif untuk menjawab pertanyaan pengguna menggunakan dokumen luaran yang berkaitan. Kami menggunakan Llamaindex untuk membina RAG Agentik yang mudah dan multi-dokumen, yang boleh menanyakan tiga dokumen.
Langkah -langkah utama yang terlibat:
- Pengambilan dokumen: Menggunakan SimpleDirectoryReader untuk memuatkan dan memecah dokumen ke dalam ketulan.
- Penciptaan Indeks: Memanfaatkan VectorStoreIndex untuk Carian Semantik dan SummaryIndex untuk ringkasan.
- Persediaan Ejen: Mengintegrasikan API OpenAI untuk menjawab pertanyaan dengan mengambil maklumat yang relevan dari dokumen.
Walaupun persediaan ini berfungsi dengan baik untuk sebilangan kecil dokumen, kami menghadapi cabaran dalam skalabiliti. Ketika kami berkembang melampaui tiga dokumen, isu -isu seperti pengurusan alat, overhead prestasi, dan tindak balas pertanyaan yang lebih perlahan timbul. Siaran ini menangani cabaran tersebut.
Cabaran utama dalam skala hingga 10 dokumen
Skala hingga 11 atau lebih dokumen memperkenalkan beberapa kerumitan:
Pertimbangan Prestasi
Meminta pelbagai dokumen meningkatkan beban pengiraan, terutamanya dari segi penggunaan memori dan masa tindak balas. Apabila sistem memproses lebih banyak dokumen, memastikan tindak balas yang cepat dan tepat menjadi cabaran utama.
Pengurusan Alat
Setiap dokumen dipasangkan dengan alat pengambilan dan ringkasannya sendiri, yang bermaksud sistem memerlukan mekanisme yang mantap untuk menguruskan alat ini dengan cekap.
Kecekapan indeks
Dengan 11 dokumen, menggunakan VectorStoreIndex menjadi lebih kompleks. Semakin besar indeks, lebih banyak sistem perlu menyaring untuk mencari maklumat yang relevan, berpotensi meningkatkan masa pertanyaan. Kami akan membincangkan bagaimana Llamaindex dengan cekap mengendalikan cabaran -cabaran ini dengan teknik pengindeksannya.
Melaksanakan kod untuk mengendalikan 10 dokumen
Mari kita menyelam ke dalam pelaksanaan untuk skala Rag Agentik kita dari tiga hingga 11 dokumen.
Koleksi Dokumen
Berikut adalah 11 kertas kerja yang akan kami bekerjasama:
- Metagpt
- Longlora
- Loft-q
- Swe-Bench
- Selfrag
- Zipformer
- Nilai
- Penyebaran adil Finetune
- Kad pengetahuan
- Metra
- VR-MCL
Langkah pertama ialah memuat turun kertas kerja. Inilah kod python untuk mengautomasikannya:
URL = [ "https://openreview.net/pdf?id=vtmbagcn7o", "https://openreview.net/pdf?id=6pmjorfdak", "https://openreview.net/pdf?id=lzpwwpady4", "https://openreview.net/pdf?id=vtf8ynqm66", "https://openreview.net/pdf?id=hsyw5go0v8", "https://openreview.net/pdf?id=9wd9kwssyt", "https://openreview.net/pdf?id=yv6fd7lykf", "https://openreview.net/pdf?id=hnrb5yhoyu", "https://openreview.net/pdf?id=wbwtoyizik", "https://openreview.net/pdf?id=c5pwl0soay", "https://openreview.net/pdf?id=tpd2ag1h0d" ] kertas = [ "Metagpt.pdf", "longlora.pdf", "loftq.pdf", "swebench.pdf", "Selfrag.pdf", "zipformer.pdf", "nilai.pdf", "finetune_fair_diffusion.pdf", "pengetahuan_card.pdf", "Metra.pdf", "vr_mcl.pdf" ] # Memuat turun kertas Untuk URL, kertas di zip (URL, kertas): ! wget "{url}" -o "{paper}"
Persediaan Alat
Sebaik sahaja dokumen dimuat turun, langkah seterusnya adalah untuk membuat alat yang diperlukan untuk menanyakan dan meringkaskan setiap dokumen.
dari llama_index.core import SimpleDirectoryReader, VectorstoreIndex, SummaryIndex dari llama_index.core.node_parser mengimport sentencesplitter dari llama_index.core.tools Import FunctionTool, QueryEnginetool dari llama_index.core.vector_stores import metadatafilters, FilterCondition dari menaip senarai import, pilihan def get_doc_tools ( file_path: str, Nama: str, ) -> str: "" "Dapatkan pertanyaan vektor dan alat pertanyaan ringkasan dari dokumen." "" # Muatkan dokumen Dokumen = SimpleDirectoryReader (input_files = [file_path]). LOAD_DATA () splitter = sentencesPlitter (chunk_size = 1024) nod = splitter.get_nodes_from_documents (dokumen) vector_index = vectorstoreIndex (nod) def vector_query ( pertanyaan: str, page_numbers: pilihan [senarai [str]] = tiada ) -> str: "" "Gunakan untuk menjawab soalan di atas kertas tertentu. Berguna jika anda mempunyai soalan khusus di atas kertas. Sentiasa tinggalkan page_numbers sebagai tidak ada kecuali ada halaman tertentu yang ingin anda cari. Args: pertanyaan (str): pertanyaan rentetan yang akan tertanam. page_numbers (pilihan [senarai [str]]): penapis dengan set halaman. Tinggalkan tidak ada Sekiranya kita mahu melakukan carian vektor di semua halaman. Jika tidak, penapis oleh set halaman yang ditentukan. "" " page_numbers = page_numbers atau [] metadata_dicts = [ {"key": "Page_label", "nilai": p} untuk p dalam page_numbers ] query_engine = vector_index.as_query_engine ( persamaan_top_k = 2, penapis = metadatafilters.from_dicts ( metadata_dicts, keadaan = filtercondition.or ) ) respons = query_engine.query (pertanyaan) tindak balas pulangan vector_query_tool = functionTool.from_defaults ( name = f "vector_tool_ {name}", fn = vector_query ) summary_index = summaryIndex (nod) summary_query_engine = summary_index.as_query_engine ( response_mode = "tre_summarize", use_async = benar, ) summary_tool = queryenginetool.from_defaults ( name = f "summary_tool_ {name}", query_engine = summary_query_engine, Penerangan = ( f "Berguna untuk soalan ringkasan yang berkaitan dengan {name}" )) ) kembali vector_query_tool, summary_tool
Fungsi ini menjana alat pertanyaan vektor dan ringkasan untuk setiap dokumen, yang membolehkan sistem mengendalikan pertanyaan dan menghasilkan ringkasan dengan cekap.
Meningkatkan Rag Agentik dengan Pengambilan Alat
Sekarang kita akan meningkatkan Rag Agentik dengan pengambilan alat.
Membina ejen
Seterusnya, kita perlu melanjutkan ejen dengan keupayaan untuk mengambil dan menguruskan alat dari semua 11 dokumen.
dari utils import get_doc_tools dari laluan import patlib paper_to_tools_dict = {} untuk kertas dalam kertas: cetak (f "mendapatkan alat untuk kertas: {kertas}") vector_tool, summary_tool = get_doc_tools (kertas, laluan (kertas). paper_to_tools_dict [paper] = [vector_tool, summary_tool] all_tools = [t untuk kertas dalam kertas untuk t dalam paper_to_tools_dict [kertas]]
Output akan kelihatan seperti di bawah:
Pengambilan Alat
Langkah seterusnya adalah untuk membuat indeks "objek" ke atas alat -alat ini dan membina sistem pengambilan yang secara dinamik dapat menarik alat yang relevan untuk pertanyaan yang diberikan.
dari llama_index.core import vectorstoreindex dari llama_index.core.objects import ObjectIndex obj_index = objectIndex.from_objects ( all_tools, index_cls = vectorstoreIndex, ) obj_retriever = obj_index.as_retriever (persamaan_top_k = 3)
Sekarang, sistem boleh mendapatkan alat yang paling relevan berdasarkan pertanyaan.
Mari lihat contoh:
alat = obj_retriever.retrieve ( "Beritahu saya tentang dataset eval yang digunakan dalam metagpt dan swe-bench" ) #Metrieves 3 objek, mari lihat yang ke -3 Cetak (Alat [2] .metadata)
Persediaan Ejen
Sekarang, kami mengintegrasikan alat Retriever ke dalam pelari ejen, memastikan ia secara dinamik memilih alat terbaik untuk bertindak balas kepada setiap pertanyaan.
dari llama_index.core.Agent Import FunctionCallingAgentWorker dari llama_index.core.Agent Import AgentRunner agen_worker = functioncallingagentworker.from_tools ( tool_retriever = obj_retriever, llm = llm, System_prompt = "" "\ Anda adalah ejen yang direka untuk menjawab pertanyaan di atas satu set kertas yang diberikan. Sila selalu gunakan alat yang disediakan untuk menjawab soalan. Jangan bergantung pada pengetahuan terdahulu. \ "" ", verbose = benar ) Agent = AgentRunner (Agent_Worker)
Menanyakan di 11 dokumen
Mari kita lihat bagaimana sistem berfungsi apabila menanyakan pelbagai dokumen. Kami akan menanyakan kertas metagpt dan SWE-bench untuk membandingkan dataset penilaian mereka.
Response = Agent.Query ("Beritahu saya tentang dataset penilaian yang digunakan dalam metagpt dan bandingkan dengan SWE-Bench") cetak (str (respons))
Output:
Mari lihat contoh lain
respons = agen.Query ( "Bandingkan dan kontras kertas LORA (Longlora, LOFTQ). Menganalisis pendekatan dalam setiap kertas terlebih dahulu." ) cetak (str (respons))
Output:
Hasil dan pandangan prestasi
Kami kini akan meneroka hasil dan pandangan prestasi di bawah:
Metrik prestasi
Apabila berskala ke 11 dokumen, prestasi tetap teguh, tetapi kami melihat peningkatan masa pertanyaan sebanyak kira-kira 15-20% berbanding dengan persediaan 3 dokumen. Ketepatan pengambilan keseluruhan, bagaimanapun, tetap konsisten.
Analisis Skalabiliti
Sistem ini sangat berskala terima kasih kepada pengindeksan dan pengindeksan Llamaindex yang cekap. Dengan berhati -hati menguruskan alat, kami dapat mengendalikan 11 dokumen dengan overhead yang minimum. Pendekatan ini dapat diperluaskan untuk menyokong lebih banyak dokumen, yang membolehkan pertumbuhan lebih lanjut dalam aplikasi dunia nyata.
Kesimpulan
Skala dari tiga hingga 11 dokumen adalah peristiwa penting dalam membina sistem kain yang mantap. Pendekatan ini memanfaatkan Llamaindex untuk menguruskan set besar dokumen sambil mengekalkan prestasi dan respons sistem.
Saya menggalakkan anda untuk mencuba sistem penjanaan pengambilan semula anda sendiri menggunakan Llamaindex dan berkongsi hasil anda. Jangan ragu untuk menyemak blog saya yang terdahulu di sini untuk memulakan!
Semak kod penuh dan sumber di GitHub.
Takeaways utama
- Adalah mungkin untuk skala sistem penjanaan pengambilan semula (RAG) untuk mengendalikan lebih banyak dokumen menggunakan kaedah pengindeksan yang cekap seperti VectorStoreIndex dan ObjectIndex.
- Dengan memberikan alat khusus kepada dokumen (carian vektor, alat ringkasan), ejen boleh memanfaatkan kaedah khusus untuk mendapatkan maklumat, meningkatkan ketepatan tindak balas.
- Menggunakan AgentRunner dengan pengambilan alat membolehkan ejen untuk secara bijak memilih dan memohon alat yang betul berdasarkan pertanyaan, menjadikan sistem lebih fleksibel dan menyesuaikan diri.
- Walaupun berurusan dengan sejumlah besar dokumen, sistem RAG dapat mengekalkan respons dan ketepatan dengan mengambil dan menggunakan alat secara dinamik, bukannya kekerasan mencari semua kandungan.
- Mengoptimumkan chunking, tugasan alat, dan strategi pengindeksan adalah penting apabila skala sistem RAG untuk memastikan prestasi dan ketepatan.
Soalan yang sering ditanya
Q1. Apakah perbezaan antara pengendalian 3 dokumen berbanding 10 dokumen dalam sistem RAG yang berbilang dokumen?A. Mengendalikan 3 dokumen memerlukan proses pengindeksan dan pengambilan semula yang lebih mudah. Oleh kerana bilangan dokumen meningkat (contohnya, hingga 10), anda memerlukan mekanisme pengambilan yang lebih canggih seperti ObjectIndex dan pengambilan alat untuk mengekalkan prestasi dan ketepatan.
S2. Bagaimanakah VectorStoreIndex dan ObjectIndex menyumbang kepada sistem RAG skala?A. VectorstoreIndex membantu pengambilan semula ketulan dokumen berdasarkan persamaan, manakala ObjectIndex membolehkan anda menyimpan dan mengambil alat yang berkaitan dengan dokumen yang berbeza. Bersama-sama, mereka membantu dalam menguruskan set dokumen berskala besar dengan berkesan.
Q3. Kenapa pengambilan berasaskan alat penting apabila berskala ke pelbagai dokumen?A. Pengambilan berasaskan alat membolehkan sistem memohon alat khusus (contohnya, carian vektor atau ringkasan) kepada setiap dokumen, meningkatkan ketepatan jawapan dan mengurangkan masa pengiraan berbanding dengan merawat semua dokumen dengan cara yang sama.
Q4. Bagaimanakah saya dapat mengubah suai persediaan ini untuk mengendalikan lebih banyak dokumen (contohnya, 20)?A. Untuk mengendalikan lebih banyak dokumen, anda boleh mengoptimumkan proses pengambilan semula dengan menyempurnakan pengindeksan, menggunakan teknik pengkomputeran yang diedarkan, dan berpotensi memperkenalkan mekanisme penapisan yang lebih maju untuk menyempitkan set dokumen sebelum menggunakan alat.
S5. Apakah strategi utama untuk mengukur sistem RAG aggenik multi-dokumen dengan berkesan?A. Penskalaan sistem RAG agensi multi-dokumen secara berkesan melibatkan mengoptimumkan kaedah pengambilan data, melaksanakan strategi pengindeksan yang cekap, dan memanfaatkan model bahasa lanjutan untuk meningkatkan ketepatan pertanyaan. Menggunakan alat seperti Llamaindex dapat meningkatkan prestasi sistem dengan memudahkan pengurusan yang lebih baik dari pelbagai dokumen dan memastikan akses tepat pada masanya kepada maklumat yang relevan.
Media yang ditunjukkan dalam artikel ini tidak dimiliki oleh Analytics Vidhya dan digunakan atas budi bicara penulis.
Atas ialah kandungan terperinci Menggabungkan Multi-Dokumen Rag Agentik Untuk Mengendalikan 10 Dokumen. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Pengekodan Vibe membentuk semula dunia pembangunan perisian dengan membiarkan kami membuat aplikasi menggunakan bahasa semulajadi dan bukannya kod yang tidak berkesudahan. Diilhamkan oleh penglihatan seperti Andrej Karpathy, pendekatan inovatif ini membolehkan Dev

Februari 2025 telah menjadi satu lagi bulan yang berubah-ubah untuk AI generatif, membawa kita beberapa peningkatan model yang paling dinanti-nantikan dan ciri-ciri baru yang hebat. Dari Xai's Grok 3 dan Anthropic's Claude 3.7 Sonnet, ke Openai's G

Yolo (anda hanya melihat sekali) telah menjadi kerangka pengesanan objek masa nyata yang terkemuka, dengan setiap lelaran bertambah baik pada versi sebelumnya. Versi terbaru Yolo V12 memperkenalkan kemajuan yang meningkatkan ketepatan

CHATGPT 4 kini tersedia dan digunakan secara meluas, menunjukkan penambahbaikan yang ketara dalam memahami konteks dan menjana tindak balas yang koheren berbanding dengan pendahulunya seperti ChATGPT 3.5. Perkembangan masa depan mungkin merangkumi lebih banyak Inter yang diperibadikan

Artikel ini mengkaji semula penjana seni AI atas, membincangkan ciri -ciri mereka, kesesuaian untuk projek kreatif, dan nilai. Ia menyerlahkan Midjourney sebagai nilai terbaik untuk profesional dan mengesyorkan Dall-E 2 untuk seni berkualiti tinggi dan disesuaikan.

Google Deepmind's Gencast: AI Revolusioner untuk Peramalan Cuaca Peramalan cuaca telah menjalani transformasi dramatik, bergerak dari pemerhatian asas kepada ramalan berkuasa AI yang canggih. Google Deepmind's Gencast, tanah air

Artikel ini membincangkan model AI yang melampaui chatgpt, seperti Lamda, Llama, dan Grok, menonjolkan kelebihan mereka dalam ketepatan, pemahaman, dan kesan industri. (159 aksara)

Openai's O1: Hadiah 12 Hari Bermula dengan model mereka yang paling berkuasa Ketibaan Disember membawa kelembapan global, kepingan salji di beberapa bahagian dunia, tetapi Openai baru sahaja bermula. Sam Altman dan pasukannya melancarkan mantan hadiah 12 hari
