walkthrough how to deploy a rag

چگونه یک دستیار مبتنی بر آر ای‌ جی (RAG-Based Assistant) را روی منابع داخلی خود مستقر کنیم؟

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

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

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

نحوه کار RAG

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

سیستم‌های مبتنی بر RAG اطلاعات اضافی را در قالب تکه‌هایی با ابزارهایی مانند LangChain تقسیم‌بندی می‌کنند. این تکه‌ها سپس ایندکس می‌شوند، که به آن تعبیه برداری گفته می‌شود، و برای دقت رتبه‌بندی می‌شوند. سیستم مبتنی بر RAG تعدادی از منابع بالاترین رتبه را علاوه بر هر چیزی که از LLM بازگردانده شده باشد، ارائه می‌دهد تا پاسخ دقیق‌تری تضمین شود.

اکنون که ایده بهتری از نحوه کار RAG دارید، به شما نشان خواهیم داد چگونه دستیار مبتنی بر RAG خود را راه‌اندازی کنید تا خودتان آن را امتحان کنید.

۱. یافتن داده‌ها

دستیاران مبتنی بر RAG به شما امکان می‌دهند داده‌های خود را بارگذاری کنید، که یکی از محبوب‌ترین کاربردهای آن است. بارگذاری داده‌های خود کمک می‌کند درک بهتری از قابلیت‌های دستیاران مبتنی بر RAG داشته باشید. برای این آموزش، ما از گزارش Salesforce State of Sales استفاده می‌کنیم که هزاران حرفه‌ای فروش در سراسر جهان را بررسی کرده است تا روند عملکرد کسب‌وکار را کشف کند.

۲. نصب Kotaemon

برای این آموزش، ما از ابزاری به نام Kotaemon استفاده خواهیم کرد، یک ابزار منبع باز مبتنی بر RAG با رابط کاربری ساده و تمیز که امکان بارگذاری و تعامل با فایل‌های خود را می‌دهد. ما Kotaemon را انتخاب کرده‌ایم زیرا به‌صورت نصب‌کننده مستقل، تصویر Docker و فضای Hugging Face در دسترس است. برای این آموزش، از قالب Hugging Face kotaemon-template استفاده می‌کنیم، زیرا مستقر کردن و میزبانی مدل‌های LLM گاهی کمی دشوار است و نیاز به تنظیم مجوزها برای کار با LLMهای عمومی مانند Llama-3.1-8B دارد. همچنین این مدل‌ها می‌توانند بسیار بزرگ باشند و زمان‌بر برای ساخت و استقرار باشند.

ما از نسخه تکثیرشده فضای Kotaemon Hugging Face استفاده می‌کنیم، که نحوه راه‌اندازی آن را نشان خواهیم داد، اما همچنین نحوه راه‌اندازی Kotaemon با Docker را در صورت تمایل به اجرای محلی به شما آموزش خواهیم داد.

نصب Kotaemon Hugging Face Space

ابتدا به Kotaemon Template در Hugging Face بروید. اگر حساب کاربری ندارید، باید ایجاد کنید. در آن صفحه، روی آیکون سه نقطه عمودی کنار پروفایل خود کلیک کنید و گزینه Duplicate this Space را از منوی کشویی انتخاب کنید. در فضای تکثیر شده، باید مدل زبان مورد استفاده خود را انتخاب کنید. ما از Cohere استفاده می‌کنیم، بنابراین باید برای دریافت کلید API رایگان در Cohere ثبت‌نام کنید. پس از دریافت کلید، آن را در کادر متن کپی و جایگذاری کرده و گزینه Proceed را انتخاب کنید. پس از اتمام، باید منتظر بمانید تا مدل RAG شما ساخته شود، که تقریباً ده دقیقه طول می‌کشد.

نصب Kotaemon با Docker

برای نصب با Docker، ابتدا مطمئن شوید که پیش‌نیازهای لازم نصب شده‌اند.

پیش‌نیازهای سیستم Kotaemon

  • Python >= 3.10

  • Docker

  • Unstructured

پس از نصب این موارد، دستورهای زیر را برای ساخت Kotaemon با Docker اجرا کنید. ما نحوه نصب نسخه lite و full را نشان خواهیم داد. نسخه full همراه با Unstructured ارائه می‌شود، اما تصویر Docker بزرگ‌تر خواهد بود. برای بیشتر اهداف دمو، نسخه lite کافی است.

Kotaemon Lite

docker run \
-e GRADIO_SERVER_NAME=0.0.0.0 \
-e GRADIO_SERVER_PORT=7860 \
-v ./ktem_app_data:/app/ktem_app_data \
-p 7860:7860 -it --rm \
ghcr.io/cinnamon/kotaemon:main-lite

این دستور به Docker می‌گوید که یک نمونه از Kotaemon با Gradio بسازد، ابزاری محبوب برای دموهای یادگیری ماشین و برنامه‌های وب.

Kotaemon Full

docker run \
-e GRADIO_SERVER_NAME=0.0.0.0 \
-e GRADIO_SERVER_PORT=7860 \
-v ./ktem_app_data:/app/ktem_app_data \
-p 7860:7860 -it --rm \
ghcr.io/cinnamon/kotaemon:main-full

اگر می‌خواهید از مدل Ollama استفاده کنید، می‌توانید ghcr.io/cinnamon/kotaemon:main-full را با ghcr.io/cinnamon/kotaemon:feat-ollama_docker-full جایگزین کنید. توجه داشته باشید که Ollama می‌تواند منابع زیادی مصرف کند و ساخت آن ممکن است کمی طول بکشد.

Kotaemon همچنین به شما امکان می‌دهد پلتفرم اجرای خود را مشخص کنید. آن‌ها از linux/amd64 و linux/arm64 پشتیبانی می‌کنند، که برای مک‌های جدید کاربرد دارد. اگر نیاز به ARM64 دارید، دستور به شکل زیر است:

docker run \
-e GRADIO_SERVER_NAME=0.0.0.0 \
-e GRADIO_SERVER_PORT=7860 \
-v ./ktem_app_data:/app/ktem_app_data \
-p 7860:7860 -it --rm \
--platform linux/arm64 \
ghcr.io/cinnamon/kotaemon:main-lite

نصب Kotaemon بدون Docker

می‌توانید Kotaemon را از CLI نیز نصب کنید. کافی است یک محیط مجازی فعال کرده و مخزن GitHub را کلون کنید.

# اختیاری (راه‌اندازی env)
conda create -n kotaemon python=3.10
conda activate kotaemon
# کلون مخزن
git clone https://github.com/Cinnamon/kotaemon
cd kotaemon

pip install -e “libs/kotaemon[all]”
pip install -e “libs/ktem”

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

python app.py

۳. آزمایش دستیار مبتنی بر RAG

اکنون که Kotaemon راه‌اندازی شده است، می‌توانید آن را امتحان کنید تا درک بهتری از جایگاه دستیار مبتنی بر RAG در جریان کاری خود داشته باشید. در Kotaemon، فایل Salesforce State of Sales.PDF را با گزینه Quick Upload در پایین سمت چپ صفحه بارگذاری کنید. پس از بارگذاری، کمی صبر کنید تا فرآیند ایندکس تمام شود.

پس از اتمام ایندکس، می‌توانید با دستیار مبتنی بر RAG مانند یک انسان چت کنید و داده‌ها را با زبان طبیعی پرس‌وجو کنید. به‌عنوان مثال، می‌توانید بپرسید: «این گزارش چه بازه زمانی را پوشش می‌دهد؟» و پاسخ خواهد داد: «۱۲ – ۱۸ ماه.» پیدا کردن این اطلاعات به صورت دستی می‌تواند وقت‌گیر و نیازمند درک عمیق موضوع باشد. بهترین بخش آن این است که منبع اطلاعات را به همراه نمره مرتبط بودن (Relevance Score) نشان می‌دهد و RAG را قابل اعتمادتر می‌کند.

نتیجه‌گیری درباره استقرار دستیار مبتنی بر RAG

توانایی خلاصه‌سازی سریع اطلاعات یکی از بهترین نمونه‌ها برای نشان دادن مفید بودن RAG است. وقتی از Kotaemon می‌پرسید: «بزرگ‌ترین مانع پیش روی حرفه‌ای‌های فروش امروز چیست؟» اطلاعات مفیدی درباره برآورده کردن انتظارات مشتری و کارهای اداری بیش از حد که مانع تمرکز کسب‌وکار روی فروش می‌شود ارائه می‌دهد.

استفاده از دستیار مبتنی بر RAG به شما امکان تعامل با اسناد و داده‌های داخلی را با زبان طبیعی می‌دهد. در مثال ما، می‌توانید بپرسید: «چگونه می‌توانم کارهای اداری اضافی را کاهش دهم؟» Kotaemon فهرستی از پیشنهادات ارزشمند ارائه می‌دهد، از اولویت‌دهی همکاری و فروش تا ساده‌سازی فرآیندهای موجود.

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

سوپرمارکت سوئیپ (Supermarket Sweep) به چه معناست؟
چه روش‌هایی برای بهینه‌سازی عملکرد OAuth وجود دارند؟

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

سبد خرید
علاقه‌مندی‌ها
مشاهدات اخیر
دسته بندی ها