لطفا جهت اطلاع از آخرین دوره ها و اخبار سایت در
کانال تلگرام
عضو شوید.
آموزش ساخت اپلیکیشن RAG با زبان پایتون
- آخرین آپدیت
دانلود Building a RAG application in Python
نکته:
ممکن هست محتوای این صفحه بروز نباشد ولی دانلود دوره آخرین آپدیت می باشد.
نمونه ویدیوها:
توضیحات دوره:
یک چت وب استریمینگ با بازیابی ترکیبی (Hybrid Retrieval)، حافظه چند-مرحلهای و پشتیبانی از تصویر را از صفر بسازید.
یک خط لوله کامل تولید تقویتشده با بازیابی (RAG) در پایتون، از مرحله وارد کردن اسناد تا خروجی چت استریمینگ را پیادهسازی کنید.
اجرای Postgres با افزونه pgvector از طریق Docker Compose، شامل ایندکسگذاری HNSW برای جستجوی سریع برداری نزدیکترین همسایه.
قطعهبندی (Chunking) اسناد با تقسیمبندی آگاه از پاراگراف و همپوشانی، و تحلیل اینکه هر انتخاب در قطعهبندی چگونه بر کیفیت بازیابی تأثیر میگذارد.
پیادهسازی وارد کردن اسناد به صورت Idempotent و اتمیک با استفاده از هشهای محتوایی SHA-256 و بهروزرسانیهای تراکنشی (Upserts).
استفاده از OpenAI SDK برای فراخوانی مدلهای محلی Ollama و APIهای میزبانی شده OpenAI از طریق یک مسیر کد واحد.
پیادهسازی بازیابی ترکیبی که جستجوی برداری متراکم را با جستجوی تمام-متنی BM25 در Postgres ترکیب کرده و با Reciprocal Rank Fusion ادغام میکند.
ساخت یک بازنویس پرسوجو (Query Rewriter) که سوالات تکمیلی مانند «چه میخورد؟» را به پرسوجوهای مستقل تبدیل میکند تا قطعات مفید را بازیابی کند.
ساخت یک نظارتکننده دایرکتوری با watchdog، شامل Debouncing برای هر مسیر تا ذخیرههای ویرایشگر باعث خواندن فایلهای نیمهنوشته نشود.
بهکارگیری الگوی Strategy/Adapter برای جایگزینی بکند Postgres با Weaviate تنها از طریق یک متغیر محیطی، بدون تغییر در بقیه کد.
ساخت یک رابط کاربری وب چت استریمینگ با FastAPI، Server-Sent Events و جاوااسکریپت خام (بدون React و بدون مراحل Build).
وارد کردن تصاویر با استفاده از خط لوله مدل بینایی «توصیف-سپس-جاسازی» (describe-then-embed)، شامل نرمالسازی فرمت برای بکندهای بینایی.
رندر کردن ایمن خروجیهای Markdown مدلهای زبانی در مرورگر با marked و DOMPurify، شامل تصاویر درونخطی.
بهکارگیری الگوهای استاندارد مهندسی نرمافزار مانند تزریق وابستگی (Dependency Injection)، Factory، Strategy/Adapter، مدیریتکنندههای Context، وارد کردنهای Lazy و غیره.
تشخیص تجربی شکستهای RAG (امتیازات کسینوسی، رتبههای تمام-متنی، خروجیهای ادغام شده) به جای حدس زدن در مورد پرامپتها.
پیشنیازها: مهارتهای پایه پایتون، SQL مقدماتی، آشنایی با خط فرمان و Docker. عدم نیاز به تجربه قبلی در LLM یا دیتابیسهای برداری.
یک اپلیکیشن کاربردی تولید تقویتشده با بازیابی (RAG) را در پایتون بسازید؛ از یک دایرکتوری خالی تا یک چت وب استریمینگ با حافظه چند-مرحلهای، بازیابی ترکیبی، وارد کردن تصاویر و دو بکند ذخیرهساز برداری قابل تعویض. بدون LangChain، بدون LlamaIndex، بدون جادو. شما هر خط کد را خودتان مینویسید و در نهایت دقیقاً میفهمید هر بخش چه کاری انجام میدهد.
بیشتر آموزشهای RAG همه چیز را در یک کتابخانه سطح بالا میپیچند و در مرحله «کار میکند» متوقف میشوند. این دوره مسیر متفاوتی را میرود. شما خط لوله را از صفر میسازید: قطعهبندی، جاسازیها (Embeddings)، وارد کردن دادههای Idempotent، بازیابی ترکیبی معنایی-لغت با Reciprocal Rank Fusion، بازنویس پرسوجو برای سوالات تکمیلی، استریمینگ توکنهای سرور، و شاخه مدل بینایی برای تصاویر؛ بر روی Postgres ساده (با pgvector) و یک سرور محلی Ollama. بدون هزینههای API در حین یادگیری. بدون جعبه سیاه. وقتی بعداً سراغ فریمورکهایی مثل LangChain بروید، دقیقاً خواهید دانست که در پشت صحنه چه اتفاقی میافتد.
آنچه در یک پروژه خواهید ساخت:
اجرا به صورت کاملاً محلی با Ollama، یا به صورت شفاف با API OpenAI تنها با تغییر یک متغیر محیطی
ذخیره جاسازیها در Postgres + pgvector با ایندکس HNSW، یا در Weaviate؛ بکندهایی که با یک تنظیم ساده قابل تعویض هستند
بازیابی ترکیبی: جستجوی برداری متراکم و BM25 تمام-متنی Postgres، ادغام شده با Reciprocal Rank Fusion برای رفع مشکلاتی که جستجوی صرفاً معنایی در عبارات نادر، نامها و شناسهها با شکست مواجه میشود
یک نظارتکننده دایرکتوری که فایلهای جدید را به طور خودکار وارد میکند، با سیستم Debouncing برای جلوگیری از خواندن فایلهای ناقص
یک رابط کاربری وب چت استریمینگ ساخته شده با FastAPI + Server-Sent Events + JavaScript خام، دارای حافظه چند-مرحلهای، بازنویسی پرسوجو، ارجاع به منابع و رندر تصاویر
وارد کردن تصاویر از طریق مدل بینایی با خط لوله «توصیف-سپس-جاسازی»؛ چند-وجهی در همان جدول قطعات، بدون نیاز به تغییر اسکیما
در این مسیر، شما با الگوهای واقعی طراحی نرمافزار در کدهای واقعی کار خواهید کرد: تزریق وابستگی، Strategy/Adapter، Factory، Lifespans، مدیریتکنندههای Context، مرزهای Thread-safety، تراکنشهای اتمیک و کدنویسی دفاعی در برابر سرویسهای خارجی. تم recurring این دوره، دستاورد انتزاعهای (Abstractions) خوب است: رابط ذخیرهساز برداری که در ابتدا طراحی شد، به شما اجازه میدهد بکند دوم را در یک فایل اضافه کنید؛ همان خط لوله بازیابی هم برای CLI و هم برای وباپلیکیشن کاربرد دارد.
در نهایت شما یک کدبیس خواهید داشت که میتوانید آن را گسترش دهید — افزودن Reranker، امتحان کردن یک Embedder متفاوت، تعویض مدل چت یا اتصال آن به اسناد شخصی خودتان — و دایره لغات مهندسی برای صحبت درباره RAG به عنوان یک نرمافزار تولیدی (Production)، نه فقط یک دمو در Notebook.
سرفصل ها و درس ها
مقدمه
Introduction
مقدمه
Introduction
نصب پایتون
Installing Python
نصب محیط توسعه (IDE)
Installing an IDE
اشتباهات؛ همه ما مرتکب میشویم
Mistakes - we all make them
شروع به کار: چت با مدل زبانی (LLM)
Getting Started: Chatting with the LLM
راهاندازی یک اپلیکیشن پایه پایتون
Setting up a basic Python application
تنظیم کدهای مدل زبانی (LLM)
Setting up the LLM code
راهاندازی رابط خط فرمان (CLI)
Setting up the CLI
دریافت مدل از Ollama و تست اولیه
Pulling a model from Ollama and trying things out
راهاندازی ذخیرهساز برداری
Setting up the Vector Store
شروع کار با ذخیرهساز برداری
Getting started with the Vector Store
راهاندازی Postgres
Setting up Postgres
تعریف قرارداد (Contract) ذخیرهساز برداری
Define the vector store contract
پیادهسازی ذخیرهساز Postgres بخش اول
Implementing the Postgres store I
پیادهسازی ذخیرهساز Postgres بخش دوم
Implementing the Postgres store II
اتصال اجزا به یکدیگر
Wiring things up
تست و بررسی
Trying things out
راهاندازی خط لوله وارد کردن دادهها
Setting up the Ingestion Pipleline
شروع به کار
Getting started
راهاندازی منطق قطعهبندی (Chunking)
Setting up our chunking logic
ایجاد جاسازیها (Embeddings) از قطعات
Creating embeddings from chunks
تست مدل جاسازی
Trying out our embedder
راهاندازی واردکننده دادهها (Ingestor)
Setting up the ingestor
اتصال CLI به واردکننده دادهها
Wire up the CLI for the ingestor
تست خط لوله وارد کردن دادهها
Trying out the ingestion pipeline
راهاندازی سیستم بازیابی
Setting up Retrieval
شروع کار با بازیابی (Retrieval)
Getting started with retrieval
پیادهسازی جستجو در ذخیرهساز برداری Postgres
Implementing search in the postgres vector store
تنظیم پرسوجو (Query)
Setting up the query
تست عملیات بازیابی
Trying out retrieval
پیادهسازی RAG: تجمیع کلیت پروژه
Implementing RAG: Bringing it all together
شروع به کار: پرامپت سیستم
Getting started: the system prompt
بستهبندی بازیابی در قالب پیام کاربر
Wrapping retrieval into a user message
پیادهسازی دستور ask — اجرای کامل RAG در یک تابع
Implement an ask command — RAG end-to-end in one function
استفاده از پرامپت سیستم خارجی
Using an external system prompt
اصلاح دستور chat برای استفاده از RAG
Modifying the chat command to use RAG
افزودن نشانگر انتظار (Spinner)
Adding a spinner
بهبود نشانگر انتظار
Improving the spinner
خودکارسازی وارد کردن دادهها
Automating Ingestion
شروع به کار: جابجایی فایلهای پردازش شده
Getting started: moving processed files
بررسی ایمنی: جلوگیری از اجرای مجدد وارد کردن فایلها
Safety check: prevent re-triggering ingest of files
اسکن دایرکتوری اسناد هنگام اجرای برنامه
Scanning the documents directory on app startup
راهاندازی هندلر Debouncing
Setting up a debouncing handler
شروع نظارتکننده برای یافتن فایلهای پردازشی
Starting our watcher to look for files to process
افزودن دستور watch
Adding the watch command
تست و بررسی
Trying things out
جستجو و بازیابی ترکیبی
Hybrid Search & Retrieval
شروع به کار: تبدیل متد جستجوی Postgres به حالت ترکیبی
Getting started: making the Postgres search method hybrid
مرور کد و تست بازیابی ترکیبی
Reviewing the code and trying hybrid retrieval
متادادهها (Metadata)
Metadata
شروع به کار: اصلاح رابط انتزاعی برای متادادهها
Getting started: Modifying the abstract interface for metadata
بهروزرسانی ذخیرهساز برداری Postgres برای متادادهها
Updating the Postgres vector store for metadata
بهروزرسانی متد جستجو برای متادادهها
Updating the search method for metadata
پر کردن متادادهها
Populating metadata
Weaviate: یک ذخیرهساز برداری جایگزین
Weaviate: An alternative vector store
شروع به کار: اجرای Weaviate و افزودن وابستگیها
Getting started: starting weaviate and adding the dependency
شروع کار با ذخیرهساز Weaviate و تنظیمات پیکربندی
Getting started with the weaviate store with config entries
راهاندازی ذخیرهساز Weaviate: بخش اول
Setting up the Weaviate Store: Part I
پیادهسازی has_document
Setting up has_document
پیادهسازی upsert_document
Setting up upsert_document
پیادهسازی delete_document
Setting up delete_document
پیادهسازی جستجو
Setting up search
تست و بررسی
Trying things out
راهاندازی رابط کاربری وب
Setting up a Web Interface
نمایش نظرات