ساختن یک سیستم جستجوی با کیفیت گوگل با Vertex AI

۱. قبل از شروع

قبل از ادامه‌ی این آزمایش کد، چند نکته وجود دارد که باید به آنها توجه کنید.

پیش‌نیازها

  • درک اولیه از LLM ها
  • درک اولیه از سیستم‌های RAG

آنچه یاد خواهید گرفت

  • چگونه یک موتور جستجوی با کیفیت گوگل بسازیم که بتواند به سوالات شما از داده‌هایی که آپلود می‌کنید پاسخ دهد
  • نحوه ایجاد پایگاه داده Vertex AI
  • نحوه ایجاد عامل‌های هوش مصنوعی Vertex
  • نحوه استفاده از CloudRun برای استقرار برنامه

آنچه نیاز دارید

  • یک حساب کاربری گوگل کلود
  • یک پروژه ابری گوگل
  • یک IDE با ترمینال

مقدمه

جستجوی گوگل ابزاری قدرتمند است که از فهرست عظیمی از صفحات وب و سایر محتوا برای ارائه نتایج مرتبط با جستجوهای کاربر استفاده می‌کند. این امر با تکنیکی به نام بازیابی افزوده نسل (RAG) امکان‌پذیر است که یک تکنیک کلیدی در هوش مصنوعی مدرن است.

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

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

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

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

در اینجا چند نمونه از نحوه استفاده از RAG در عمل آورده شده است:

  • بسیاری از سیستم‌های جستجو از RAG برای تولید نتایج جستجوی مرتبط با عبارت جستجوی کاربر استفاده می‌کنند.
  • چت‌بات‌ها از RAG برای تولید پاسخ‌هایی به سوالات کاربران استفاده می‌کنند که آموزنده و جذاب هستند.
  • سیستم‌های پاسخگویی به سوالات از RAG برای تولید پاسخ‌های دقیق و جامع به سوالات کاربران استفاده می‌کنند.

RAG یک تکنیک همه‌کاره است که می‌تواند برای تولید متن در حوزه‌ها و کاربردهای متنوع مورد استفاده قرار گیرد. این یک ابزار قدرتمند است که به هوشمندتر و آموزنده‌تر شدن هوش مصنوعی کمک می‌کند.

در این آزمایشگاه کد، ما یک سیستم RAG خواهیم ساخت که می‌تواند با استفاده از مجموعه داده‌های ارائه شده توسط شما که آپلود کرده‌اید، به سوالات شما پاسخ دهد. پلتفرم RAG آماده به کار به نام Vertex AI Search/Agent Builder به شما کمک می‌کند تا ساخت سیستم‌های RAG را تسریع کنید و از تلاش دستی برای جمع‌آوری اسناد، تجزیه، قطعه‌بندی، ایجاد جاسازی‌ها، گسترش پرس‌وجو، بازیابی کاندید و رتبه‌بندی جلوگیری کنید. در حالی که سیستم RAG آماده به شما کمک می‌کند تا به سرعت شروع کنید، Google Cloud همچنین APIهای گسسته‌ای را برای هر فرآیند برای ساخت سیستم‌های RAG DIY خود ارائه می‌دهد که به تنظیم دقیق سیستم‌های RAG شما برای مطابقت با نیازهای تجاری‌تان کمک می‌کند.

آنچه خواهید ساخت

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

همچنین درک بهتری از نحوه استفاده از APIهای جستجوی هوش مصنوعی Vertex برای ساخت این معماری RAG در Google Cloud خواهید داشت. علاوه بر این، نحوه استقرار این برنامه معماری RAG (با frontend و backend) را در CloudRun که یک پلتفرم بدون سرور برای استقرار برنامه‌ها به عنوان کانتینر در Google Cloud است، نیز خواهید آموخت.

2d055ded874603a6.png

نحوه عملکرد برنامه

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

۲. تنظیمات محیطی

  1. در کنسول گوگل کلود ، در صفحه انتخاب پروژه، یک پروژه گوگل کلود را انتخاب یا ایجاد کنید.
  2. مطمئن شوید که صورتحساب برای پروژه Google Cloud شما فعال است. یاد بگیرید که چگونه بررسی کنید که آیا صورتحساب در یک پروژه فعال است یا خیر .
  3. شما از Cloud Shell ، یک محیط خط فرمان که در Google Cloud اجرا می‌شود، استفاده خواهید کرد. برای دسترسی به آن، روی Activate Cloud Shell در بالای کنسول Google Cloud کلیک کنید.

۱۸۲۹c۳۷۵۹۲۲۷c۱۹b.png

  1. پس از اتصال به Cloud Shell، با استفاده از دستور زیر بررسی می‌کنید که آیا از قبل احراز هویت شده‌اید و پروژه روی شناسه پروژه شما تنظیم شده است یا خیر:
gcloud auth list
  1. دستور زیر را در Cloud Shell اجرا کنید تا تأیید شود که دستور gcloud از پروژه شما اطلاع دارد.
gcloud config list project
  1. اگر پروژه شما تنظیم نشده است، از دستور زیر برای تنظیم آن استفاده کنید:
gcloud config set project <YOUR_PROJECT_ID>
  1. مطمئن شوید که API های زیر فعال هستند:
  • اجرای ابری
  • هوش مصنوعی ورتکس
  • فضای ذخیره‌سازی ابری

جایگزین استفاده از دستور gcloud، استفاده از کنسول با استفاده از این لینک است. برای دستورات و نحوه استفاده از gcloud به مستندات مراجعه کنید.

۳. مرحله ۱: ایجاد سطل GCP

  • به کنسول بروید و در نوار جستجو عبارت Cloud Storage را تایپ کنید.
  • از نتایج پیشنهادی، فضای ذخیره‌سازی ابری را انتخاب کنید. 21d2bc910e71f7ec.png
  • روی ایجاد سطل کلیک کنید

adf5c0382f6c3540.png

  • یک نام منحصر به فرد جهانی برای سطل ارائه دهید
  • روی ادامه کلیک کنید
  • در قسمت نوع مکان، گزینه چند منطقه‌ای (Multi-Region) را انتخاب کنید.
  • در منوی کشویی، مطمئن شوید که گزینه us (multiple regions in United States) را انتخاب کرده‌اید.

731aead7d8497725.png

  • روی ایجاد سطل کلیک کنید

f7ac409ed9c4af21.png

۴. مرحله ۲: ایجاد یک پایگاه داده Vertex AI

  • در نوار جستجوی صفحه کنسول، عبارت "Vertex AI Agent Builder" را تایپ کنید.
  • اولین محصول، "سازنده عامل" را انتخاب کنید

c4a67b92bb7900e3.png

  • در صفحه سازنده عامل، همانطور که در نوار ناوبری سمت چپ نشان داده شده است، روی "ذخیره‌های داده" کلیک کنید.

f86f67d344d398f.png

  • روی «ایجاد فروشگاه داده» کلیک کنید

e64e771f33543f46.png

  • فضای ابری را به عنوان محل ذخیره اطلاعات خود انتخاب کنید
  • روی «انتخاب» در زیر نماد فضای ذخیره‌سازی ابری کلیک کنید

3a8d22888e7eedc2.png

  • در تب زیر گزینه «پوشه»، روی دکمه «مرور» کلیک کنید.
  • سطلی که در مرحله ۱ ایجاد کردید را انتخاب کنید
  • در گزینه‌های زیر، حتماً گزینه «اسناد بدون ساختار پیوندی (JSONL با فراداده)» را انتخاب کنید.
  • روی ادامه کلیک کنید

۱۳۸۷۶b5d12dbe1fb.png

  • در صفحه پیکربندی، «جهانی» را به عنوان محل ذخیره داده خود انتخاب کنید.
  • یک نام قابل شناسایی برای محل ذخیره داده خود ارائه دهید
  • روی ایجاد کلیک کنید

618b7a456fbffad4.png

براونی:

  • درست بالای دکمه‌ی «ایجاد»، می‌توانید گزینه‌ی پردازش سند را ببینید.
  • می‌توانید با تجزیه‌گرهای مختلف مانند تجزیه‌گر دیجیتال، OCR یا تجزیه‌گر طرح‌بندی بازی کنید
  • همچنین می‌توانید بخش‌بندی پیشرفته را فعال کنید و محدودیت‌های اندازه بخش‌بندی سفارشی خود را ارائه دهید.

۳۸۴۷۱c1d3411610d.png

۵. مرحله ۳: ایجاد یک عامل

  • پس از ایجاد فروشگاه داده، روی برنامه در نوار ناوبری سمت چپ کلیک کنید و "برنامه‌ها" را انتخاب کنید.
  • روی دکمه "ایجاد برنامه" کلیک کنید
  • نوع برنامه را «جستجو» انتخاب کنید (همچنین می‌توانید عامل‌ها، ربات‌های مکالمه‌ای، توصیه‌ها و غیره ایجاد کنید.)

ae5294e33f63567c.png

  • مطمئن شوید که در قسمت محتوا، گزینه «عمومی» (Generic) را انتخاب کرده‌اید. همچنین می‌توانید بر اساس محل ذخیره‌سازی داده و نوع داده و سیستم‌هایی که می‌خواهید بسازید، گزینه «رسانه» (Media) یا «توصیه‌ها» (Recommendations) را انتخاب کنید.
  • مطمئن شوید که هر دو ویژگی Enterprise Edition و Advanced LLM را فعال کرده‌اید.
  • نام برنامه خود را ارائه دهید
  • نام شرکت خود را ارائه دهید

f8a41c9751f7a8d3.png

  • مطمئن شوید که منطقه را به عنوان "جهانی" انتخاب می‌کنید.
  • روی «ادامه» کلیک کنید ed17b18e094ba59a.png
  • در صفحه بعد، محل ذخیره داده‌ای که در مرحله ۲ ایجاد کرده‌اید را انتخاب کنید.
  • روی «ایجاد» کلیک کنید

bc77006e0025ae9e.png

۶. مرحله ۴: برنامه خود را داکر کنید

  • ترمینال خود را در کنسول Google Cloud باز کنید
  • با استفاده از دستور زیر، مخزن <sample_repository_link> را کلون کنید.

git clone https://github.com/kkrishnan90/vertex-ai-search-agent-builder-demo

  • دایرکتوری را تغییر دهید و با استفاده از دستور زیر به مخزن کلون شده بروید

cd vertex-ai-search-agent-builder-demo

  • ساختار پوشه
  • بک‌اند - این یک پیاده‌سازی API مبتنی بر پایتون را در خود جای می‌دهد که به ایجاد نقاط پایانی (endpoints) آرامش‌بخش برای تعامل فرانت‌اند شما کمک می‌کند.
  • فرانت‌اند - این یک برنامه مبتنی بر ری‌اکت را در خود نگه می‌دارد و به رابط کاربری (UI) سرویس می‌دهد. این همچنین شامل فراخوانی‌های لازم در سطح برنامه به بک‌اند از طریق نقاط پایانی rest خواهد بود.
  • Dockerfile - این فایل شامل تمام دستورات مربوط به ایجاد یک کانتینر داکر خواهد بود.
  • در ریشه دایرکتوری مخزن، دستور زیر را اجرا کنید که به ساخت یک تصویر داکر کمک می‌کند (توجه: هنگام ساخت کانتینرهای داکر در مک‌بوک‌هایی که از تراشه‌های اپل سیلیکون مانند M1، M2 و غیره استفاده می‌کنند، حتماً از علامت - - platform استفاده کنید. اگر در حال ساخت با استفاده از دستگاه ویندوز هستید یا معماری CPU شما مبتنی بر اینتل است، این علامت ضروری نیست).

docker build --platform linux/amd64 -t your-image-name .

  • پس از موفقیت‌آمیز بودن ساخت کانتینر داکر، دستور زیر را برای تگ‌گذاری کانتینر با تگ‌های صحیح اجرا کنید تا مطمئن شوید که نسخه‌ای از ایمیج خود را ارائه می‌دهید. به یاد داشته باشید، ممکن است چندین نسخه از برنامه و از این رو چندین نسخه به عنوان تگ در کانتینرهای داکر وجود داشته باشد. اطمینان از اینکه همیشه از آخرین نسخه پایدار استفاده می‌شود، از دیدگاه توسعه‌دهندگان (devops) رویکردی توصیه شده است.

docker tag your-image-name REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG

  • پس از موفقیت‌آمیز بودن برچسب‌گذاری تصویر کانتینر داکر، اکنون اجازه دهید تصویر را به Google Artifact Registry (GAR) ارسال کنیم. GAR یک پلتفرم کاملاً مدیریت‌شده از گوگل است که به مدیریت و کنترل نسخه کانتینرهای داکر شما کمک می‌کند. دستور زیر را اجرا کنید که کانتینر برچسب‌گذاری‌شده فوق را به GAR ارسال می‌کند. برای اطلاعات بیشتر، به لینک زیر مراجعه کنید [ https://cloud.google.com/artifact-registry/docs/docker/pushing-and-pulling ]

docker push REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG

۷. مرحله ۵: برنامه خود را روی Cloud Run مستقر کنید

  • ترمینال خود را کوچک کنید. در نوار جستجوی کنسول Google Cloud، عبارت Cloud Run را جستجو کنید.
  • روی محصول پیشنهادی Cloud Run کلیک کنید

592103eb61c16738.png

  • روی «ایجاد سرویس» کلیک کنید
  • در صفحه بعد، مطمئن شوید که گزینه «Deploy one revision from an existing container image» انتخاب شده است.
  • در زیر، روی «انتخاب» کلیک کنید
  • اکنون یک نوار ناوبری در سمت راست به شما نمایش داده می‌شود.
  • مطمئن شوید که Artifact Registry به عنوان برگه انتخاب شده است یا خیر
  • مطمئن شوید که پروژه به درستی انتخاب شده است یا خیر
  • برای باز کردن آکاردئون روی لینک تصویر کانتینر مستقر شده خود، روی پیکان کلیک کنید
  • تگ کانتینر را انتخاب کنید و آن را باز کنید (همیشه جدیدترین موارد مستقر شده را انتخاب کنید - با آخرین تگ‌های مناسب یعنی v1، v2 و غیره)
  • روی تصویر کانتینر که در زیر نام تگ کانتینر نشان داده شده است کلیک کنید

aac35d55d7dd874e.png

  • در قسمت پیکربندی
  • یک نام سرویس برای برنامه Cloud Run خود وارد کنید (این نام بخشی از آدرس اینترنتی (url) هنگام استقرار برنامه در Cloud Run خواهد بود)
  • منطقه مناسب را انتخاب کنید (در این مورد us-central1 یا هر منطقه دلخواه شما)
  • تحت احراز هویت
  • مطمئن شوید که گزینه‌ی «مجاز کردن فراخوانی‌های احراز هویت نشده» انتخاب شده است.
  • تحت تخصیص CPU و قیمت‌گذاری
  • انتخاب کنید "پردازنده فقط هنگام پردازش درخواست اختصاص داده می‌شود"
  • مقیاس‌بندی خودکار سرویس (Service Auto Scaling) را به ۱ تغییر دهید (برای اهداف عملیاتی، توصیه می‌شود حداقل نمونه‌های در حال اجرا برای مدیریت ترافیک روزانه خود داشته باشید، حتی می‌توانید آن را ۰ یعنی صفر بگذارید)
  • برای اینکه ترافیک اینترنت بتواند به برنامه شما دسترسی پیدا کند، گزینه "Ingress Control" را روی "All" تنظیم کنید.
  • روی «ایجاد» کلیک کنید
  • این یک نمونه Cloud Run را مستقر می‌کند و آماده‌سازی آن چند دقیقه طول می‌کشد.

b8b147265b8d457b.png

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

1dfdb007c52581a1.png

۸. چطور همه چیز کار می‌کند؟

  • پس از ورود به صفحه اصلی برنامه، روی دکمه «بارگذاری سند» کلیک کنید.
  • فایل PDF خود را آپلود کنید
  • پس از اتمام آپلود
  • روی نوار جستجو در بالای صفحه وب کلیک کنید
  • جستجوی سوالات مربوط به سند آپلود شده خود را شروع کنید
  • وقتی عبارت مورد نظر خود را تایپ کردید و روی جستجو کلیک کردید، باید تمام پاسخ‌های مرتبط از سندی که آپلود کرده‌اید را نشان دهد.
  • می‌توانید با بررسی کد backend، کمی تغییر ایجاد کنید و پیکربندی‌های بیشتری مانند موارد زیر اضافه کنید
  • اضافه کردن قطعه کدها
  • افزودن بخش‌های استخراجی
  • اضافه کردن پاسخ‌ها
  • تنظیم نتایج k برتر برای کمک به LLM در خلاصه کردن پاسخ (چیزی شبیه به بررسی اجمالی هوش مصنوعی در جستجوی گوگل)
  • به عنوان یک افزونه، می‌توانید هنگام آپلود سند، برچسب‌های فراداده را نیز اضافه کنید. این به ایجاد جنبه‌ها و دسته‌های قابل فیلتر کمک می‌کند.

۹. تمیز کردن

برای جلوگیری از تحمیل هزینه به حساب Google Cloud خود برای منابع استفاده شده در این codelab، این مراحل را دنبال کنید:

  1. در کنسول گوگل کلود، به صفحه مدیریت منابع بروید.
  2. در لیست پروژه‌ها، پروژه‌ای را که می‌خواهید حذف کنید انتخاب کنید و سپس روی «حذف» کلیک کنید.
  3. در کادر محاوره‌ای، شناسه پروژه را تایپ کنید و سپس برای حذف پروژه، روی خاموش کردن کلیک کنید.
  4. روش دیگر این است که به Cloud Run در کنسول بروید، سرویسی را که اخیراً مستقر کرده‌اید انتخاب کرده و حذف کنید.

۱۰. تبریک

تبریک! شما با موفقیت یک سیستم RAG آماده و آماده با استفاده از مدل‌های پیشرفته گوگل ساختید تا نتایج با کیفیت گوگل را برای جستجوهای شما ارائه دهد. این آزمایشگاه کد فقط برای اهداف نمایشی است، امنیت و محافظ‌های بیشتری باید برای موارد استفاده در محیط واقعی تنظیم شوند. لینک مخزن کامل اینجاست. با بهره‌گیری از Google Cloud و تنها با ۵ مرحله، می‌توانیم یک سیستم RAG سرتاسری ایجاد کنیم که می‌تواند نتایج با کیفیت گوگل را در عرض چند دقیقه به شما ارائه دهد. با تکامل هوش مصنوعی مولد و مدل‌های زبانی بزرگ، ساخت چنین سیستم‌های RAG به ما کمک می‌کند تا از اشتباهات ناشی از توهم و نمایش اطلاعات بدون استناد جلوگیری کنیم.

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