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

1. قبل از شروع

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

پیش نیازها

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

چیزی که یاد خواهید گرفت

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

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

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

معرفی

جستجوی گوگل ابزار قدرتمندی است که از فهرست عظیمی از صفحات وب و سایر محتواها برای ارائه نتایج مرتبط به درخواست های کاربران استفاده می کند. این امر با تکنیکی به نام Retrieval Augmented Generation (RAG) که یک تکنیک کلیدی در هوش مصنوعی مدرن است، ممکن می شود.

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

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

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

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

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

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

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

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

چیزی که خواهی ساخت

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

همچنین درک بهتری از نحوه استفاده از Vertex AI Search API برای ساخت این معماری RAG در Google Cloud خواهید داشت. علاوه بر این، شما همچنین یاد خواهید گرفت که چگونه این برنامه معماری RAG (با ظاهر و باطن) را در CloudRun که یک پلت فرم بدون سرور برای استقرار برنامه ها به عنوان کانتینر در Google Cloud است، استقرار دهید.

2d055ded874603a6.png

برنامه کاربردی چگونه کار می کند

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

2. تنظیم محیط

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

1829c3759227c19b.png

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

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

3. مرحله 1: سطل GCP ایجاد کنید

  • به کنسول بروید و در نوار جستجو عبارت Cloud Storage را تایپ کنید.
  • Cloud Storage را از نتایج پیشنهادی انتخاب کنید. 21d2bc910e71f7ec.png
  • روی Create Bucket کلیک کنید

adf5c0382f6c3540.png

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

731aead7d8497725.png

  • روی Create Bucket کلیک کنید

f7ac409ed9c4af21.png

4. مرحله 2: یک Vertex AI Datastore ایجاد کنید

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

c4a67b92bb7900e3.png

  • در صفحه Agent Builder، همانطور که در نوار ناوبری سمت چپ نشان داده شده است، روی "فروشگاه داده ها" کلیک کنید.

f86f67d344d398fb.png

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

e64e771f33543f46.png

  • Cloud Storage را به عنوان ذخیره داده خود انتخاب کنید
  • روی "انتخاب" در زیر نماد فضای ذخیره سازی ابری کلیک کنید

3a8d22888e7eedc2.png

  • در تب زیر گزینه "Folder" روی دکمه "Browse" کلیک کنید
  • سطلی را که در مرحله 1 ایجاد کردید انتخاب کنید
  • در گزینه های زیر، مطمئن شوید که "اسناد بدون ساختار مرتبط (JSONL با ابرداده)" را انتخاب کنید.
  • روی Continue کلیک کنید

13876b5d12dbe1fb.png

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

618b7a456fbffad4.png

براونی:

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

38471c1d3411610d.png

5. مرحله 3: یک عامل ایجاد کنید

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

ae5294e33f63567c.png

  • اطمینان حاصل کنید که "عمومی" را در قسمت محتوا انتخاب کنید. همچنین می توانید Media یا Recommendations را بر اساس ذخیره داده ها و نوع داده ها و سیستم هایی که می خواهید بسازید انتخاب کنید.
  • اطمینان حاصل کنید که هر دو ویژگی Enterprise Edition و Advanced LLM را روشن کنید
  • نام برنامه خود را وارد کنید
  • نام شرکت خود را ارائه دهید

f8a41c9751f7a8d3.png

  • اطمینان حاصل کنید که منطقه را به عنوان "جهانی" انتخاب کنید
  • روی "ادامه" کلیک کنید ed17b18e094ba59a.png
  • در صفحه بعدی، ذخیره داده ای را که در مرحله 2 ایجاد کرده اید انتخاب کنید
  • روی "ایجاد" کلیک کنید

bc77006e0025ae9e.png

6. مرحله 4: برنامه خود را داکر کنید

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

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

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

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

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

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

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

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

  • هنگامی که برچسب گذاری تصویر کانتینر داکر با موفقیت انجام شد، اجازه دهید اکنون تصویر را به رجیستری مصنوع Google (GAR) فشار دهیم. GAR یک پلتفرم کاملاً مدیریت شده از طرف Google برای کمک به مدیریت و کنترل نسخه کانتینرهای docker شما است. دستور زیر را اجرا کنید که ظرف برچسب گذاری شده بالا را به 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

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

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

592103eb61c16738.png

  • روی "ایجاد سرویس" کلیک کنید
  • در صفحه بعد، مطمئن شوید که «استقرار یک نسخه از یک تصویر کانتینر موجود» انتخاب شده است
  • در زیر، روی "انتخاب" کلیک کنید
  • اکنون با یک نوار ناوبری در سمت راست از شما خواسته می شود.
  • اطمینان حاصل کنید که بررسی کنید آیا رجیستری مصنوع به عنوان برگه انتخاب شده است
  • مطمئن شوید که آیا پروژه به درستی انتخاب شده است یا خیر
  • روی پیکان کلیک کنید تا آکاردئون پیوند تصویر ظرف مستقر شده خود را گسترش دهید
  • تگ کانتینر را انتخاب کرده و گسترش دهید (همیشه آخرین موارد مستقر شده را انتخاب کنید - با آخرین تگ های مناسب مانند v1، v2 و غیره)
  • روی تصویر ظرف نشان داده شده در زیر نام تگ کانتینر کلیک کنید

aac35d55d7dd874e.png

  • در قسمت پیکربندی
  • یک نام سرویس برای برنامه Cloud Run خود ارائه دهید (این قسمتی از URL زمانی است که برنامه را در Cloud Run اجرا می کنید)
  • منطقه مناسب را انتخاب کنید (در این مورد us-central1 یا هر چیزی که انتخاب می کنید)
  • تحت احراز هویت
  • اطمینان حاصل کنید که "اجازه به فراخوان های احراز هویت نشده" انتخاب شده است
  • تحت تخصیص CPU و قیمت گذاری
  • "CPU فقط در طول پردازش درخواست اختصاص داده می شود" را انتخاب کنید
  • تغییر مقیاس خودکار سرویس به 1 (برای اهداف تولید، توصیه می‌شود حداقل نمونه‌ها را برای مدیریت ترافیک روزانه خود داشته باشید، حتی می‌توانید آن را 0 یعنی صفر بگذارید)
  • "کنترل ورودی" را روی "همه" تنظیم کنید تا به ترافیک اینترنت اجازه دسترسی به برنامه شما را بدهد
  • روی "ایجاد" کلیک کنید
  • با این کار یک نمونه Cloud Run مستقر می شود و تهیه آن چند دقیقه طول می کشد

b8b147265b8d457b.png

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

1dfdb007c52581a1.png

8. چگونه همه کار می کند

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

9. پاکسازی کنید

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

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

10. تبریک می گویم

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

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