

تصویر توسط نویسنده
در این آموزش، ما به بررسی Retrieval-Augmented Generation (RAG) و چارچوب هوش مصنوعی LlamaIndex می پردازیم. ما یاد خواهیم گرفت که چگونه از LlamaIndex برای ایجاد یک برنامه مبتنی بر RAG برای پرسش و پاسخ بر روی اسناد خصوصی استفاده کنیم و برنامه را با گنجاندن بافر حافظه تقویت کنیم. این LLM را قادر میسازد تا با استفاده از متن از هر دو سند و تعاملات قبلی، پاسخ ایجاد کند.
RAG در LLM چیست؟
Retrieval-Augmented Generation (RAG) یک روش پیشرفته است که برای بهبود عملکرد مدل های زبان بزرگ (LLM) با ادغام منابع دانش خارجی در فرآیند تولید طراحی شده است.
RAG شامل دو مرحله اصلی است: بازیابی و تولید محتوا. در ابتدا، اسناد یا دادههای مربوطه از پایگاههای اطلاعاتی خارجی بازیابی میشوند، که سپس برای فراهم کردن زمینه برای LLM استفاده میشوند، و اطمینان حاصل میشود که پاسخها بر اساس جدیدترین اطلاعات و دامنه خاص موجود است.
LlamaIndex چیست؟
LlamaIndex یک چارچوب هوش مصنوعی پیشرفته است که برای افزایش قابلیتهای مدلهای زبان بزرگ (LLM) با تسهیل یکپارچهسازی یکپارچه با منابع داده متنوع طراحی شده است. این نرم افزار از بازیابی داده ها از بیش از 160 فرمت مختلف، از جمله API ها، فایل های PDF، و پایگاه های داده SQL پشتیبانی می کند و آن را برای ساخت برنامه های کاربردی پیشرفته هوش مصنوعی بسیار متنوع می کند.
ما حتی میتوانیم یک برنامه هوش مصنوعی چند وجهی و چند مرحلهای کامل بسازیم و سپس آن را در سرور مستقر کنیم تا پاسخهای بسیار دقیق و مختص دامنه ارائه کنیم. در مقایسه با سایر چارچوبها مانند LangChain، LlamaIndex راهحل سادهتری با توابع داخلی ارائه میدهد که برای انواع مختلف برنامههای LLM طراحی شده است.
ساخت برنامه های RAG با استفاده از LlamaIndex
در این بخش، یک برنامه هوش مصنوعی می سازیم که فایل های مایکروسافت ورد را از یک پوشه بارگذاری می کند، آنها را به جاسازی تبدیل می کند، آنها را در فروشگاه برداری فهرست می کند و یک موتور جستجوی ساده می سازد. پس از آن، ما یک چت بات RAG مناسب با تاریخچه با استفاده از ذخیره برداری به عنوان یک بازیابی، LLM و بافر حافظه می سازیم.
راه اندازی
تمام بسته های پایتون لازم را برای بارگیری داده ها و برای OpenAI API نصب کنید.
!pip install llama-index !pip install llama-index-embeddings-openai !pip install llama-index-llms-openai !pip install llama-index-readers-file !pip install docx2txt
!پیپ نصب کنید لاما–شاخص !پیپ نصب کنید لاما–شاخص–تعبیه ها–openai !پیپ نصب کنید لاما–شاخص–llms–openai !پیپ نصب کنید لاما–شاخص–خوانندگان–فایل !پیپ نصب کنید docx2txt |
LLM و مدل جاسازی را با استفاده از توابع OpenAI آغاز کنید. ما از جدیدترین مدلهای “GPT-4o” و “Text-Embedding-3-Small” استفاده خواهیم کرد.
from llama_index.llms.openai import OpenAI from llama_index.embeddings.openai import OpenAIEmbedding # مقداردهی اولیه LLM llm = OpenAI(model=”gpt-4o”) # مقدار دهی اولیه embed_model = OpenAIEmbedding(model=”text-embedding-3 “)
از lama_index.llms.openai واردات OpenAI از lama_index.تعبیه ها.openai واردات OpenAIEmbedding # LLM را مقداردهی اولیه کنید llm = OpenAI(مدل=“gpt-4o”) # تعبیه را مقداردهی اولیه کنید embed_model = OpenAIEmbedding(مدل=“text-embedding-3-small”) |
هر دو مدل LLM و embedding را روی global قرار دهید تا وقتی تابعی را فراخوانی می کنیم که به LLM یا embedding نیاز دارد، به طور خودکار از این تنظیمات استفاده کند.
از llama_index.core import تنظیمات # تنظیمات جهانی Settings.llm = llm Settings.embed_model = embed_model
از lama_index.هسته واردات تنظیمات # تنظیمات جهانی تنظیمات.llm = llm تنظیمات.embed_model = embed_model |
بارگذاری و نمایه سازی اسناد
داده ها را از پوشه بارگیری کنید، آن را به جاسازی تبدیل کنید و در فروشگاه برداری ذخیره کنید.
از llama_index.core import VectorStoreIndex, SimpleDirectoryReader # بارگیری اسناد اسناد = SimpleDirectoryReader(input_dir=”/work/data/”,required_exts=[“.docx”].load_data() # نمایه سازی اسناد با استفاده از نمایه ذخیره برداری = VectorStoreIndex.from_documents(data)
از lama_index.هسته واردات VectorStoreIndex، SimpleDirectoryReader # بارگیری اسناد داده ها = SimpleDirectoryReader(input_dir=“/work/data/”،مورد نیاز_exts=[“.docx”]).load_data() # نمایه سازی اسناد با استفاده از ذخیره برداری شاخص = VectorStoreIndex.from_documents(داده ها) |
Building Query Engine
لطفاً فروشگاه برداری را به یک موتور جستجو تبدیل کنید و شروع به پرسیدن سؤال در مورد اسناد کنید. این اسناد شامل وبلاگهایی است که در ژوئن در مورد تسلط یادگیری ماشین توسط نویسنده عبید علی عوان منتشر شده است.
از llama_index.core واردات VectorStoreIndex # تبدیل فروشگاه برداری به موتور پرس و جو query_engine = index.as_query_engine(similarity_top_k=3) # ایجاد پاسخ پاسخ به پرسش = query_engine.query(“موضوعات رایج وبلاگ ها چیست؟”) print(response)
از lama_index.هسته ب>واردات/ب> VectorStoreIndex # تبدیل فروشگاه برداری به موتور پرس و جو query_engine = شاخص.as_query_engine(similarity_top_k=3) # در حال ایجاد پاسخ پرس و جو پاسخ = query_engine.پرس و جو(“موضوعات مشترک وبلاگ ها چیست؟”) چاپ کنید(پاسخ) |
و پاسخ دقیق است.
موضوعات رایج وبلاگ ها حول محور افزایش دانش است و مهارت ها در یادگیری ماشینی آنها بر تامین منابعی از این قبیل تمرکز می کنند به عنوان کتاب های رایگان، پلتفرم ها برای همکاری، و مجموعه داده هایی برای کمک به افراد برای تعمیق درک خود از الگوریتم های یادگیری ماشین، همکاری موثر در پروژه ها، و کسب تجربه عملی از طریق داده های دنیای واقعی. این منابع برای هر دو مبتدی در نظر گرفته شده است و متخصصانی که به دنبال ایجاد یک پایه قوی هستند و حرفه خود را پیش ببرند در زمینه یادگیری ماشین
ساخت برنامه RAG با حافظه بافر
برنامه قبلی ساده بود. بیایید یک ربات چت پیشرفته تر با ویژگی تاریخ ایجاد کنیم.
ما چت بات را با استفاده از یک بازیابی، یک بافر حافظه چت و یک مدل GPT-4o خواهیم ساخت.
پس از آن، ربات چت خود را با پرسیدن سوالاتی در مورد یکی از پست های وبلاگ آزمایش می کنیم.
from llama_index.core.memory import ChatMemoryBuffer از llama_index.core.chat_engine import CondensePlusContextChatEngine #ایجاد حافظه بافر حافظه چت = ChatMemoryBuffer.from_defaults(token_limit=4500) #خلق موتور چت CondenseFaultChat-Engine index.as_retriever()، حافظه = حافظه , llm=llm ) # ایجاد پاسخ به چت = chat_engine.chat( “بهترین دوره برای تسلط بر یادگیری تقویتی چیست؟”) print(str(response))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
از lama_index.هسته.حافظه واردات ChatMemoryBuffer از lama_index.هسته.chat_engine واردات CondensePlusContextChatEngine # ایجاد بافر حافظه چت حافظه = ChatMemoryBuffer.from_defaults(token_limit=4500) # ایجاد موتور چت chat_engine = CondensePlusContextChatEngine.from_defaults( شاخص.as_retriever()، حافظه=حافظه، llm=llm ) # در حال ایجاد پاسخ چت پاسخ = chat_engine.چت کردن( بهترین دوره برای تسلط بر یادگیری تقویتی چیست؟ ) چاپ کنید(خ(پاسخ)) |
بسیار دقیق و دقیق است.
بر اساس اسناد ارائه شده، “دوره عمیق RL” توسط Hugging Face است بسیار توصیه می شود برای تسلط بر یادگیری تقویتی این دوره است به خصوص مناسب است برای مبتدیان و هر دو اصل را پوشش می دهد و تکنیک های پیشرفته یادگیری تقویتی شامل موضوعاتی از این قبیل است به عنوان یادگیری Q، یادگیری عمیق Q، گرادیان خط مشی، عوامل ML، روشهای منتقد بازیگر، سیستمهای چند عاملی، و موضوعات پیشرفته مانند RLHF (Reinforcement Learning از بازخورد انسانی)، ترانسفورماتورهای تصمیم، و MineRL. دوره است طراحی شده تا ظرف یک ماه تکمیل شود و آزمایش عملی را ارائه می دهد با مدل ها، استراتژی هایی برای بهبود نمرات، و تابلوی امتیازات برای پیگیری پیشرفت
بیایید سوالات بعدی را بپرسیم و در مورد دوره بیشتر بدانیم.
answer = chat_engine.chat( “درباره دوره بیشتر به من بگویید” ) print(str(response))
پاسخ = chat_engine.چت کردن( “در مورد دوره بیشتر به من بگویید” ) چاپ کنید(خ(پاسخ)) |
اگر در اجرای کد بالا مشکل دارید، لطفاً به نوت بوک Deepnote مراجعه کنید: ساخت برنامه RAG با استفاده از LlamaIndex.
نتیجه گیری
ساخت و استقرار برنامه های کاربردی هوش مصنوعی توسط LlamaIndex آسان شده است. شما فقط باید چند خط کد بنویسید و تمام.
گام بعدی در سفر یادگیری شما ساختن یک برنامه چت بات مناسب با استفاده از Gradio و استقرار آن بر روی سرور خواهد بود. برای سادهتر کردن زندگیتان، میتوانید Llama Cloud را نیز بررسی کنید.
در این آموزش، با LlamaIndex و نحوه ساختن یک برنامه RAG آشنا شدیم که به شما امکان می دهد از اسناد خصوصی خود سؤال بپرسید. سپس، ما یک چت ربات RAG مناسب ساختیم که با استفاده از اسناد خصوصی و تعاملات چت قبلی، پاسخها را تولید میکند.