آموزش ساخت اپلیکیشن 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

  • افزودن وابستگی‌های پروژه Adding project dependencies

  • شروع کار با اپلیکیشن وب Getting started with our web application

  • راه‌اندازی اپلیکیشن FastAPI و اولین Route Setting up the FastAPI application and one route

  • بررسی فایل index.html Going through index.html

  • راه‌اندازی End-point چت Setting up the chat endpoint

  • راه‌اندازی End-point آپلود در ذخیره‌ساز برداری Setting up the endpoint to upload to the vector store

بهبود بخش بازنویس پرس‌وجو Improving the Rewriter

  • مشکلی که قصد رفع آن را داریم The problem we want to address

  • شروع به کار با بازنویسی پرس‌وجو Getting started with rewriting the query

  • استفاده از بازنویس در چت CLI Using our rewriter in the CLI chat

  • استفاده از بازنویس در چت وب Using our rewriter in the Web chat

افزودن پشتیبانی از تصاویر Adding Support for Images

  • شروع به کار Getting started

  • به‌روزرسانی تنظیمات برای تصاویر Updating config for images

  • پیاده‌سازی فراخوانی مدل بینایی و تبدیل فرمت Implementing the vision call and the format-conversion

  • دریافت مدل بینایی و تست اولیه Getting a vision model and trying things out

  • به‌روزرسانی واردکننده داده‌ها برای تصاویر Updating the ingestor for images

  • اصلاح پرس‌وجو برای تصاویر: بخش اول Modifying the query for images: Part I

  • اصلاح پرس‌وجو برای تصاویر: بخش دوم Modifying the query for images: Part II

  • به‌روزرسانی وب‌اپلیکیشن برای تصاویر: بخش اول Updating the web app for images: Part I

  • به‌روزرسانی وب‌اپلیکیشن برای تصاویر: بخش دوم Updating the web app for images: Part II

  • تست و بررسی Trying things out

  • تغییرات نهایی Final changes

نمایش نظرات

آموزش ساخت اپلیکیشن RAG با زبان پایتون
جزییات دوره
10 hours
75
(آخرین آپدیت)
225
4.3 از 5
دارد
دارد
دارد
Trevor Sawler
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar