لطفا جهت اطلاع از آخرین دوره ها و اخبار سایت در
کانال تلگرام
عضو شوید.
آموزش ساخت اپلیکیشن RAG با زبان گو (Golang)
- آخرین آپدیت
دانلود Building a RAG application in Go (Golang)
نکته:
ممکن هست محتوای این صفحه بروز نباشد ولی دانلود دوره آخرین آپدیت می باشد.
نمونه ویدیوها:
توضیحات دوره:
تولید تقویت شده با بازیابی (RAG) را با ساخت یک سیستم واقعی با زبان Go و مدلهای سازگار با OpenAI (چه محلی و چه ابری) بیاموزید.
در این دوره خواهید آموخت:
- نحوه عملکرد واقعی خط لوله RAG از ابتدا تا انتها: تکهتکه کردن (Chunking)، جاسازی (Embedding)، جستجوی برداری، بازنویسی پرسوجو، تزریق متن و تولید استریمینگ.
- طراحی اینترفیسهای Go به گونهای که LLM، مدل Embedder و ذخیرهساز برداری بدون تغییر در کدنویسی قابل تعویض باشند.
- نحوه استریم کردن توکنهای LLM در ترمینال و مرورگر با استفاده از Server-Sent Events (SSE).
- اجرای سیستم با OpenAI، Ollama، LM Studio یا Groq و ترکیب آنها (مثلاً چت ابری با جاسازی محلی).
- استفاده از Postgres و pgvector برای جستجوی برداری در سطح تولید، شامل ایندکسهای HNSW و مهاجرت ابعاد جاسازی.
- وارد کردن واکنشگرای اسناد با fsnotify، مدیریت فایلهای نیمهنوشته و بازخوانی مجدد بدون تکرار.
- مدیریت محتوای چندوجهی: آپلود تصویر، شرح تصاویر توسط مدلهای Vision و رندر کردن تصاویر در چت.
پیش نیازها:
- درک پایه از زبان برنامهنویسی Go.
- توانایی خواندن و نوشتن کدهای پایه Go (توابع، استراکتها، اینترفیسها و گوروتینها).
- نصب Docker به صورت محلی (برای Postgres و pgvector).
- کلید API OpenAI یا اجرای مدل محلی مانند Ollama.
- هیچ تجربه قبلی در زمینه RAG، یادگیری ماشین (ML) یا پایگاه دادههای برداری نیاز نیست.
ساخت سیستم RAG در سطح تولید با Go — از صفر تا چت استریمینگ
تولید تقویت شده با بازیابی (RAG) را با ساختن آن توسط خودتان، با زبان خالص Go و مدلهای سازگار با OpenAI بیاموزید.
خواندن درباره RAG را متوقف کنید و شروع به پیادهسازی آن کنید. در این دوره عملی، شما یک سیستم کامل Retrieval-Augmented Generation را از پایه با زبان Go خواهید ساخت. بدون پایتون، بدون LangChain و بدون انتزاعهای جادویی؛ فقط کدهای شفاف و اصیل Go که میتوانید آنها را بخوانید، تغییر دهید و کاملاً مالک آنها باشید.
در پایان دوره، شما یک اپلیکیشن کاربردی خواهید داشت که دارای: یک REPL چت استریمینگ در ترمینال، رابط کاربری وب با SSE برای دریافت توکنبه-توکن، قابلیت آپلود فایل و تصویر، یک ناظر سیستم فایل در پسزمینه برای وارد کردن خودکار اسناد، سیستمی برای ارزیابی کیفیت بازیابی و بکاِند Postgres + pgvector در داکر است.
چرا این دوره؟
بسیاری از آموزشهای RAG بخشهای جذاب را پشت فریمورکها پنهان میکنند. شما سه خط از کتابخانه دیگران را متصل میکنید و سیستم کار میکند، اما نمیدانید در پشت صحنه چه اتفاقی افتاده است. وقتی سیستم در محیط تولید دچار مشکل شود — که قطعاً خواهد شد — شما متوقف میشوید.
این دوره رویکردی متضاد دارد. هر جزء به صورت صریح ساخته میشود تا دقیقاً بدانید کلاینت LLM کجا تمام میشود و ذخیرهساز برداری کجا شروع میشود. ساختار بستهها مستقیماً با فصلهای دوره مطابقت دارد و اینترفیسها را عمداً باز گذاشتهایم تا بتوانید قطعات را به عنوان تمرین جایگزین کنید.
این همان دورهای است که آرزو داشتم هنگام یادگیری RAG وجود داشت.
چه چیزی خواهید ساخت
یک اپلیکیشن RAG کوچک اما واقعی با تمام اجزای یک سیستم تولیدی:
یک streaming chat REPL در ترمینال با انیمیشن «در حال تفکر» و مدیریت تاریخچه مناسب
یک رابط کاربری وب ساخته شده با chi، قالبهای Go و Tailwind، با استریم توکنها از طریق SSE و رندر Markdown
یک ناظر سیستم فایل (Filesystem Watcher) در پسزمینه که اسناد جدید را شناسایی، تکهتکه و جاسازی کرده و در pgvector ذخیره میکند
مسیر آپلود فایل همزمان در وب با قابلیت درگ-اند-دراپ و بازخورد تعداد تکهها
یک خط لوله آپلود تصویر با قابلیت شرح خودکار توسط مدلهای Vision و نمایش در چت
یک تکهکننده (Chunker) آگاه به پاراگراف با اندازه و همپوشانی قابل تنظیم
یک بازنویس پرسوجو (Query Rewriter) که گفتگوهای چندمرحلهای را به یک پرسوجوی جستجوی مستقل تبدیل میکند
یک بازیاب (Retriever) با فیلتر شباهت کسینوسی، انتخاب Top-K و بکاِندهای قابل تعویض
ذخیرهساز برداری pgvector + Postgres 18 با مهاجرتهای Idempotent و ایندکس HNSW
چه چیزهایی خواهید آموخت
نحوه عملکرد کامل خط لوله RAG: از تکهتکه کردن و جاسازی تا جستجوی برداری و تولید استریمینگ
طراحی اینترفیسهای Go برای قابلیت تعویض LLM، Embedder و Vector Store
نحوه استریم کردن توکنها به ترمینال و مرورگر با Server-Sent Events
اجرای سیستم با OpenAI, Ollama, LM Studio یا Groq و ترکیب مدلهای ابری و محلی
استفاده از Postgres + pgvector برای جستجوی برداری در مقیاس تولید
وارد کردن واکنشگرای اسناد با استفاده از fsnotify و مدیریت فایلهای ناقص
کار با محتوای چندوجهی: آپلود تصویر و شرح تصاویر توسط مدلهای بینایی
دیباگ کردن این مسئله که «چرا مدل از اسناد من استفاده نکرد؟»
تفاوت این دوره با دیگران
کد واقعی، نه شبهکد. تمام مثالها از یک پروژه واقعی و قابل اجرا هستند.
اولویت با مدلهای محلی. میتوانید کل دوره را با Ollama روی لپتاپ خود به پایان برسانید بدون هزینه API.
شفافیت در مورد نقاط ضعف. محدودیتهای هر روش (مانند Chunking بدون توجه به توکن) بررسی میشود تا فضای طراحی را بشناسید.
تکنولوژیهای مورد استفاده
Go, Postgres 18, pgvector, Docker Compose, chi router, Go templates, Tailwind, Server-Sent Events, fsnotify, OpenAI-compatible APIs.
نتیجه دوره
در پایان این دوره، شما یک اپلیکیشن RAG با کیفیتِ نمونهکار (Portfolio) روی سیستم خود خواهید داشت، درک عمیقی از هر لایه به دست میآورید و اعتماد به نفس لازم برای پیادهسازی این معماری در پروژههای واقعی کاری را خواهید داشت.
همین حالا ثبتنام کنید و ساخت سیستم RAG خود را آغاز کنید.
سرفصل ها و درس ها
مقدمه
Introduction
مقدمه
Introduction
نصب زبان Go
Installing Go
راهاندازی محیط توسعه (IDE)
Setting up an IDE
نحوه درخواست کمک
Asking for help
شروع به کار
Getting started
راهاندازی یک اپلیکیشن پایه Go
Setting up a basic Go application
تکمیل بسته llm
Finishing up the llm package
راهاندازی بسته chat
Setting up the chat package
نکاتی درباره مدلهای ابری
A note about Cloud models
راهاندازی مدل با Ollama
Setting up our model with Ollama
راهاندازی ذخیرهساز برداری
Setting up our Vector Store
شروع با فعالسازی System Prompt
Getting started by enabling a system prompt
راهاندازی ذخیرهساز برداری در Postgres
Setting up the database Vector Store in Postgres
تعریف اینترفیس Vector Store
Defining a Vector Store interface
پیادهسازی اینترفیس برای Postgres و pgvector: بخش اول
Implement the interface for Postgres & pgvector: Part I
پیادهسازی اینترفیس برای Postgres و pgvector: بخش دوم
Implement the interface for Postgres & pgvector: Part II
پیادهسازی اینترفیس برای Postgres و pgvector: بخش سوم
Implement the interface for Postgres & pgvector: Part III
فعالسازی بکاِند برداری: بخش اول
Enabling the vector back end: Part I
فعالسازی بکاِند برداری: بخش دوم
Enabling the vector back end: Part II
افزودن اسناد به ذخیرهساز برداری
Adding Documents to the Vector Store
راهاندازی Embedder
Setting up our embedder
راهاندازی کلاینت برای مدل جاسازی (Embedding)
Setting up a client for our embedding model
راهاندازی تکهکننده (Chunker)
Setting up a chunker
راهاندازی واردکننده (Ingestor)
Setting up an ingestor
بارگذاری اسناد در Ingestor
Loading documents into the ingestor
اتصال Ingestor به اپلیکیشن
Wiring the ingestor into the app
تست و بررسی عملکرد
Trying things out
پیادهسازی تولید تقویت شده با بازیابی (RAG)
Implementing Retrieval Augmented Generation (RAG)
RAG چگونه کار میکند
How RAG works
شروع کار با بسته RAG
Getting started with our RAG package
راهاندازی Retriever و Rewriter
Setting up our retriever and rewriter
افزودن بازیاب/بازنویس به کد REPL
Adding the retriever/rewriter into the Read-Evaluate-Print-Loop code
اتصال تغییرات به app.go
Wiring our changes into app.go
تست و بررسی عملکرد
Trying things out
تأیید پرسوجوی تغییر یافته کاربر
Verifying the modified user prompt
راهاندازی اپلیکیشن وب
Setting up a Web App
راهاندازی وبسرور: بخش اول
Setting up the web server I
راهاندازی وبسرور: بخش دوم (صفحه چت)
Setting up the web server II: the chat page
نمایش صفحه چت
Displaying the chat page
فعالسازی چت وب
Enabling web chat
تست چت وب
Trying out web chat
آپلود فایلها به ذخیرهساز برداری از طریق وب
Uploading files to the vector store from the web interface
افزودن تصاویر به ذخیرهساز برداری
Adding images to the vector store
تست آپلود تصویر
Trying out image upload
دریافت و راهاندازی مدل Vision
Getting a vision model and setting it up
راهاندازی مسیر و هندلر برای مدل Vision
Setting up the route and handler for the vision model
تست شرح تصاویر
Trying out image captioning
ملاحظات استقرار و دیپلوی
Considerations for deployment
تزریق پرامپت (Prompt Injection) چیست
What is Prompt Injection
راهاندازی میانافزار دفاع در برابر تزریق پرامپت
Setting up prompt injection defense middleware
نمایش نظرات