همه‌ی مقالات اتوماسیون و هوش مصنوعی

دستیار هوش مصنوعی روی اسناد شرکت، به زبان ساده

RAG چیست و چطور یک دستیار شبیه ChatGPT بسازید که فقط از روی اسناد، سایت و داده‌های شرکت خودتان، با ذکر منبع، جواب بدهد؛ بدون اصطلاحات پیچیده.

آسان تیم6 دقیقه مطالعه

ChatGPT خیلی چیزها می‌داند، ولی هیچ‌چیز درباره‌ی شرکت شما نمی‌داند. قوانین مرخصی، مشخصات محصولات، روال ثبت سفارش، قراردادهای استاندارد و صدها سند دیگری که جواب سؤال‌های روزمره‌ی تیم و مشتری در آن‌هاست، برای ChatGPT وجود ندارند.

خبر خوب این است که می‌شود دستیاری ساخت که درست مثل ChatGPT حرف بزند، ولی جوابش را فقط از روی اسناد خود شما بدهد و بگوید هر جواب را از کدام سند برداشته. اسم فنی این روش RAG است. این مقاله بدون اصطلاحات پیچیده توضیح می‌دهد چطور کار می‌کند و ساختنش چه مراحلی دارد.

RAG به زبان ساده

یک کتابدار باهوش را تصور کنید. وقتی سؤالی می‌پرسید، از حفظ جواب نمی‌دهد. اول می‌رود چند صفحه‌ی مرتبط را از قفسه‌ها پیدا می‌کند، آن‌ها را می‌خواند و بعد جواب شما را بر اساس همان صفحه‌ها می‌دهد، به‌علاوه‌ی اسم کتاب و شماره‌ی صفحه.

RAG دقیقاً همین کار را می‌کند. پشت صحنه پنج مرحله دارد:

  1. خرد کردن. اسناد شما به قطعه‌های کوچک، مثلاً چند پاراگراف، تقسیم می‌شوند.
  2. تبدیل به بردار. هر قطعه به یک «اثرانگشت معنایی» تبدیل می‌شود: فهرستی از عددها که معنای آن قطعه را نشان می‌دهد. قطعه‌هایی که معنای نزدیک دارند، عددهای نزدیکی می‌گیرند، حتی اگر کلمه‌هایشان فرق کند.
  3. ذخیره. این اثرانگشت‌ها در یک پایگاه‌داده‌ی برداری نگه داشته می‌شوند.
  4. جستجو. وقتی کاربر سؤال می‌پرسد، سؤال هم به اثرانگشت تبدیل می‌شود و نزدیک‌ترین قطعه‌ها پیدا می‌شوند.
  5. جواب. مدل زبانی فقط همان قطعه‌ها را می‌بیند و جوابش را بر اساس آن‌ها می‌نویسد، با ذکر منبع.

نتیجه دستیاری است که وقتی سند جدیدی اضافه می‌کنید، از همان لحظه آن را «می‌داند»، بدون این‌که مدل دوباره آموزش ببیند. در دستیارهای RAG سفارشی که ساختیم، ادمین فایل بارگذاری می‌کند یا آدرس یک سایت را می‌دهد و در چند ثانیه محتوایش قابل جستجو می‌شود.

چه اسنادی مناسب‌اند؟

RAG برای متن‌هایی که جواب سؤال در آن‌هاست بهترین عملکرد را دارد:

  • آیین‌نامه‌ها، دستورالعمل‌ها و روال‌های داخلی
  • راهنمای محصول و مشخصات فنی
  • سؤال‌های متداول و پاسخ‌های قبلی پشتیبانی
  • صفحه‌های سایت و مقاله‌های آموزشی
  • قراردادهای استاندارد و شرایط خدمات

برای داده‌های جدولی مثل فهرست قیمت، موجودی انبار یا گزارش فروش، بهتر است دستیار به‌جای جستجو در متن، مستقیم از پایگاه داده یا API بخواند. عددها در متن زود کهنه می‌شوند، و مدل زبانی در جمع و مقایسه‌ی عددهای یک جدول بزرگ قابل اعتماد نیست.

RAG یا آموزش دادن مدل؟

خیلی‌ها فکر می‌کنند برای این‌که هوش مصنوعی شرکت‌شان را بشناسد، باید مدل را «آموزش» بدهند (Fine-tuning). در بیشتر موارد این لازم نیست و حتی انتخاب اشتباهی است:

RAGآموزش دادن مدل
مناسب برایدانش: اطلاعات، قوانین، مشخصاتسبک: لحن، قالب خروجی، کارهای تکراری خاص
اضافه کردن اطلاعات جدیدفوری، با بارگذاری سندنیاز به آموزش دوباره
ذکر منبعبلهنه
هزینه‌ی راه‌اندازیپایین‌تربالاتر

قاعده‌ی کلی: اگر می‌خواهید دستیار چیزهایی بداند، RAG. اگر می‌خواهید طور خاصی رفتار کند، شاید آموزش مدل، که معمولاً با دستورهای خوب هم به دست می‌آید.

نکته‌های مخصوص زبان فارسی

دستیار فارسی چند جزئیات دارد که اگر رعایت نشود، کیفیت جستجو به‌طرز محسوسی پایین می‌آید:

  • یکسان‌سازی حروف. «ي» و «ی» عربی و فارسی، یا «ك» و «ک»، از نظر رایانه دو حرف متفاوت‌اند. سندی که با صفحه‌کلید عربی تایپ شده، در جستجوی کلمه‌ی فارسی پیدا نمی‌شود، مگر این‌که قبل از پردازش، همه‌ی متن‌ها یکسان‌سازی شوند.
  • نیم‌فاصله. «می‌شود» با نیم‌فاصله، «میشود» بدون فاصله و «می شود» با فاصله باید یکی دیده شوند.
  • اعداد. اعداد فارسی، عربی و انگلیسی را به یک شکل تبدیل کنید، مخصوصاً در کدها و شماره‌ها.
  • انتخاب مدل بردارساز. مدل‌های چندزبانه‌ی امروزی فارسی را خوب می‌فهمند، ولی قبل از انتخاب، چند مدل را با سؤال‌های واقعی خودتان آزمایش کنید.
  • اسناد اسکن‌شده. اگر بخشی از اسناد شما عکس یا PDF اسکن‌شده است، اول باید متن‌شان با OCR فارسی استخراج شود و کیفیتش بررسی شود.

امنیت و حریم خصوصی

قبل از شروع، به این سؤال‌ها جواب روشن داشته باشید:

  • چه کسی به چه چیزی دسترسی دارد؟ اگر اسناد مدیریتی و عمومی در یک پایگاه دانش‌اند، دستیار باید بر اساس نقش کاربر فقط اسناد مجاز را جستجو کند. این کنترل باید در لایه‌ی جستجو باشد، نه فقط در دستور مدل.
  • اسناد کجا پردازش می‌شوند؟ وقتی از API مدل‌های خارجی استفاده می‌کنید، قطعه‌های مرتبط برای ارائه‌دهنده‌ی مدل فرستاده می‌شوند. برای اسناد حساس، می‌شود از مدل‌های متن‌باز روی سرور خودتان استفاده کرد، با این هزینه که کیفیت فارسی‌شان باید دقیق‌تر سنجیده شود.
  • دسترسی از ایران. OpenAI، Anthropic و Google درخواست از IP ایران را نمی‌پذیرند و پرداخت‌شان کارت بین‌المللی می‌خواهد. این را از اول در معماری و بودجه ببینید.

کیفیت دستیار را چطور بسنجیم؟

«به نظر خوب می‌آید» معیار نیست. قبل از انتشار:

  1. مجموعه‌ی آزمون بسازید. پنجاه تا صد سؤال واقعی، با جواب درست و سند مرجع هر کدام.
  2. منبع را چک کنید. جواب درست با منبع اشتباه، یعنی دستیار شانسی درست گفته.
  3. سؤال‌های بی‌جواب هم بپرسید. دستیار خوب وقتی جواب در اسناد نیست، می‌گوید نمی‌دانم.
  4. بعد از هر تغییر، آزمون را تکرار کنید، چه اسناد عوض شده باشند، چه دستورها، چه مدل.

مراحل یک پروژه

  1. انتخاب یک کاربرد مشخص. «دستیار برای همه‌چیز» شروع خوبی نیست. «دستیار پشتیبانی محصول» یا «دستیار منابع انسانی برای کارکنان» شروع خوبی است.
  2. جمع و پاک‌سازی اسناد. نسخه‌های قدیمی و متناقض را کنار بگذارید. دستیار به اندازه‌ی اسنادش خوب است.
  3. ساخت پایگاه دانش و دستیار.
  4. آزمون با سؤال‌های واقعی و اصلاح.
  5. انتشار برای یک گروه کوچک، و بعد برای همه.
  6. نگهداری: اضافه کردن اسناد جدید و بررسی سؤال‌هایی که بی‌جواب مانده‌اند.

همین دستیار را می‌شود پشت یک ربات تلگرام پشتیبانی، یک پنجره‌ی چت در سایت یا یک ابزار داخلی برای کارکنان قرار داد. برای شروع، صفحه‌ی خدمات اتوماسیون و هوش مصنوعی را ببینید.

سؤال‌های رایج

روشی است که در آن، دستیار هوش مصنوعی قبل از جواب دادن، قطعه‌های مرتبط را از اسناد شما پیدا می‌کند و جوابش را فقط بر اساس همان قطعه‌ها می‌نویسد. نتیجه، جواب‌هایی است که به منبع مشخصی برمی‌گردند.

در استفاده از API تجاری ارائه‌دهنده‌های اصلی، طبق شرایط فعلی‌شان داده‌ی ارسالی به‌طور پیش‌فرض برای آموزش مدل استفاده نمی‌شود. ولی شرایط هر ارائه‌دهنده را بخوانید، و برای اسناد خیلی حساس، مدل را روی سرور خودتان اجرا کنید.

برای جدول‌های کوچک بله. ولی برای داده‌ی عددی حجیم مثل موجودی یا گزارش فروش، بهتر است دستیار مستقیم از پایگاه داده یا API بخواند تا جواب دقیق و به‌روز باشد.

نه. سند جدید خرد و ایندکس می‌شود و از همان لحظه در جستجو قابل استفاده است. نیازی به آموزش دوباره‌ی مدل نیست.

به کیفیت اسناد، یکسان‌سازی متن و دستورها بستگی دارد. با محدود کردن دستیار به منابع، الزام به ذکر منبع و آزمون منظم، جواب‌های اشتباه به حداقل می‌رسد، و وقتی جواب در اسناد نیست، دستیار باید بگوید نمی‌داند.