«RAG» این روزها همهجا هست و یه کلمهی ترسناک بهنظر میرسه — ولی واقعاً سادهست. این مقاله رک و ساده توضیح میده RAG چیه، امبدینگ و وکتور دیتابیس یعنی چی، چطور به هوش مصنوعی دانش اضافه میکنیم، و مهمتر از همه: کِی اصلاً بهش نیاز نداری.
RAG یعنی چی؟
خیلی خلاصه: RAG (مخففِ Retrieval-Augmented Generation) یهجور «دیتابیس برای هوش مصنوعی»ئه. توی برنامهنویسیِ معمولی دیتاتو توی SQL یا MongoDB میذاری؛ برای هوش مصنوعی، دیتا رو اول تبدیل میکنی به Embedding و توی یه Vector Database ذخیره میکنی.
امبدینگ یعنی تبدیلِ متن (یا حتی عکس و صدا) به یه سری عدد/وکتور. چرا؟ چون هوش مصنوعی با عدد کار میکنه، نه مستقیم با متن؛ وقتی متن رو به بردارِ عددی تبدیل کنی، میشه روش محاسباتِ ریاضی (مثلِ شباهت) انجام داد. (همون مفهومی که توی ویدیوی «هوش مصنوعی چطور ساخته میشه» سرِ توکنایز و وکتور دیدیم.)
جریانِ کامل اینطوریه: دیتای تو → تیکهتیکه (chunk) → امبدینگ → ذخیره در وکتور دیتابیس. بعد وقتی سؤال میپرسی، سؤالت هم امبد میشه، توی دیتابیس یه جستوجوی شباهت (ضربِ وکتوری) انجام میشه، تیکههای مرتبط برمیگرده، و هوش مصنوعی با اونها جوابتو میسازه. خودِ این «بگرد و بیار» در عمل یه فانکشن کالینگه که مدل تصمیم میگیره کِی صداش بزنه.
چرا وکتور بهجای SQL؟
چون برای هوش مصنوعی بهینهست: با چند تا ضربِ ماتریسی، نزدیکترین معنا رو خیلی سریع پیدا میکنه. در حالی که توی SQL باید کلمهبهکلمه حدس بزنی و سرچ کنی (VPN، ایران، …) تا به نتیجه برسی.
مهمترین حرف: شاید اصلاً RAG لازم نداری
RAG وقتی ابداع شد که کانتکستویندوزها خیلی کوچیک بودن (~۴هزار توکن). الان که مدلها تا ۱ میلیون توکن کانتکست دارن، برای دیتای کم RAG داره کمکم بیفایده میشه. سه راه برای اضافهکردنِ دانش به هوش مصنوعی هست:
- سیستمپرامپت — اگه دانشت کمه (مثلاً زیرِ ۷۰هزار توکن)، فقط بذارش تو سیستمپرامپت. سادهترین و معمولاً دقیقترین راه. پیشنهادِ پیشفرضِ من همینه.
- RAG / وکتور دیتابیس — وقتی دیتات زیاده و مدام اضافه میشه (مزیتش اینه که دیتای جدید رو فقط امبد و اضافه میکنی، لازم نیست همه رو از اول بسازی).
- فاینتیون (Fine-tuning) — وقتی دیتات زیاده ولی تغییر نمیکنه (مثلِ قوانینِ ثابتِ یه شرکت).
و یادت باشه RAG رایگان نیست از نظرِ پیچیدگی: چانککردن، وکتور دیتابیس و فانکشن کالینگ اضافه میکنه، و چون دیتا رو تیکهتیکه میکنی، گاهی اطلاعاتِ بینِ دو چانک از دست میره. پس الکی سراغش نرو.
ساختش در عمل
با Claude Code RAG رو به همون اپِ ایجنتِ قبلی اضافه کردیم. چون Vercel نمیتونه وکتور دیتابیس میزبانی کنه (فقط فایل serve میکنه و حافظهی serverless پاک میشه)، از Chroma Cloud روی پلنِ رایگان استفاده کردیم: یه دیتابیس ساختیم، Tenant/DB ID و API key گرفتیم و روی Env Variablesِ Vercel گذاشتیم (و یه ارورِ ۵۰۰ رو هم با دیباگ حل کردیم). امبدینگ رو هم با مدلِ OpenAI ساختیم. آخرش یه دیاگرامِ تعاملی از دو جریانِ Index (دیتا → چانک → امبدینگ → Chroma) و Query (سؤال → امبدینگ → جستوجو → متنِ مرتبط → LLM) درست کردیم تا کلِ مسیر دستت بیاد.
نتیجه: یه نالجبیس که خودِ ایجنت موقعِ نیاز ازش میخونه — ولی همونطور که گفتم، برای خیلیها همون سیستمپرامپت کافیه.
ویدئوی کاملش رو از پایین ببین.


دیدگاهتان را بنویسید