برنامه نویسی

ساختن یک برنامه RAG با LlamaIndex.ts و Azure OpenAI: شروع به کار!

Summarize this content to 400 words in Persian Lang
همانطور که هوش مصنوعی به شکل دادن به نحوه کار و تعامل ما با فناوری ادامه می دهد، بسیاری از مشاغل به دنبال راه هایی برای استفاده از داده های خود در برنامه های هوشمند هستند. اگر از ابزارهایی مانند ChatGPT یا Azure OpenAI استفاده کرده‌اید، از قبل با اینکه چگونه هوش مصنوعی مولد می‌تواند فرآیندها را بهبود بخشد و تجربیات کاربر را بهبود بخشد، آشنا هستید. با این حال، برای پاسخ‌های واقعاً سفارشی‌شده و مرتبط، برنامه‌های شما باید داده‌های اختصاصی شما را در خود جای دهند.

اینجاست که Retrieval-Augmented Generation (RAG) وارد می شود و رویکردی ساختاریافته برای یکپارچه سازی بازیابی داده ها با پاسخ های مبتنی بر هوش مصنوعی ارائه می دهد. با چارچوب‌هایی مانند LlamaIndex، می‌توانید به راحتی این قابلیت را در راه‌حل‌های خود ایجاد کنید و پتانسیل کامل داده‌های کسب‌وکار خود را باز کنید.

آیا می خواهید به سرعت برنامه را اجرا و کاوش کنید؟ اینجا را کلیک کنید.

RAG – Retrieval-Augmented Generation چیست؟

Retrieval-Augmented Generation (RAG) یک چارچوب شبکه عصبی است که تولید متن هوش مصنوعی را با گنجاندن یک جزء بازیابی برای دسترسی به اطلاعات مرتبط و ادغام داده‌های خود بهبود می‌بخشد. از دو بخش اصلی تشکیل شده است:

رتریور: یک مدل بازیابی متراکم (به عنوان مثال، بر اساس BERT) که مجموعه بزرگی از اسناد را جستجو می کند تا قسمت های مرتبط یا اطلاعات مربوط به یک پرس و جو را پیدا کند.

ژنراتور: یک مدل دنباله به دنباله (مثلاً بر اساس BART یا T5) که پرس و جو و متن بازیابی شده را به عنوان ورودی می گیرد و پاسخی منسجم و غنی شده از نظر زمینه ایجاد می کند.

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

LlamaIndex چگونه RAG را پیاده سازی می کند؟

برای پیاده سازی یک سیستم RAG با استفاده از LlamaIndex، این مراحل کلی را دنبال کنید:

بلع داده ها:

اسناد خود را در LlamaIndex.ts با استفاده از بارگیری اسناد بارگیری کنید SimpleDirectoryReader، که به وارد کردن داده ها از منابع مختلف مانند PDF، API یا پایگاه داده SQL کمک می کند.
اسناد بزرگ را به قطعات کوچکتر و قابل مدیریت با استفاده از SentenceSplitter.

ایجاد شاخص:

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

راه اندازی موتور جستجو:

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

بازیابی و تولید:

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

برای مثال عملی، ما یک نمونه برنامه کاربردی برای نشان دادن پیاده‌سازی کامل RAG با استفاده از Azure OpenAI ارائه کرده‌ایم.

نمونه کاربردی RAG عملی

ما اکنون بر روی ساخت یک برنامه RAG با استفاده از LlamaIndex.ts (پیاده سازی TypeScipt LlamaIndex) و Azure OpenAI تمرکز می کنیم و روی آن به عنوان یک برنامه وب بدون سرور در برنامه های کانتینر Azure مستقر می شویم.

الزامات برای اجرای نمونه

Azure Developer CLI (azd): یک ابزار خط فرمان برای استقرار آسان کل برنامه شما، از جمله باطن، فرانت اند، و پایگاه داده.

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

پروژه شروع کار را در GitHub پیدا خواهید کرد. ما به شما توصیه می کنیم این الگو را فورک کنید تا در صورت نیاز بتوانید آزادانه آن را ویرایش کنید:

معماری سطح بالا

برنامه شروع پروژه بر اساس معماری زیر ساخته شده است:

Azure OpenAI: ارائه دهنده هوش مصنوعی که درخواست های کاربر را پردازش می کند.

LlamaIndex.ts: چارچوبی که به جذب، تبدیل و بردار کردن محتوا (PDF) و ایجاد فهرست جستجو کمک می کند.

برنامه های کانتینر Azure: محیط کانتینری که برنامه بدون سرور در آن میزبانی می شود.

Azure Managed Identity: امنیت درجه یک را تضمین می کند و نیازی به مدیریت اعتبارنامه ها و کلیدهای API را از بین می برد.

برای جزئیات بیشتر در مورد اینکه چه منابعی مستقر شده اند، این را بررسی کنید infra پوشه موجود در تمام نمونه های ما.

نمونه گردش کار کاربر

برنامه نمونه شامل منطق برای دو گردش کار است:

بلع داده ها: داده ها واکشی می شوند، بردار می شوند و فهرست های جستجو ایجاد می شوند. اگر می خواهید فایل های بیشتری مانند PDF یا فایل های Word اضافه کنید، این جایی است که باید آنها را اضافه کنید.
npm run generate

ارائه درخواست های سریع: برنامه درخواست‌های کاربر را دریافت می‌کند، آنها را به Azure OpenAI می‌فرستد و با استفاده از نمایه برداری به عنوان یک بازیابی، این درخواست‌ها را تقویت می‌کند.

اجرای نمونه

قبل از اجرای نمونه، مطمئن شوید که منابع لازم Azure را تهیه کرده اید.

برای اجرای قالب GitHub در GitHub Codespace، به سادگی کلیک کنید

در نمونه Codespaces خود، از ترمینال خود وارد حساب Azure خود شوید:

azd auth login

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تهیه، بسته بندی و استقرار نمونه برنامه در Azure با استفاده از یک دستور واحد:

azd up

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای اجرا و امتحان کردن برنامه به صورت محلی، وابستگی های npm را نصب کرده و برنامه را اجرا کنید:

npm install
npm run dev

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این برنامه در پورت 3000 در نمونه Codespaces یا در http://localhost:3000 در مرورگر شما اجرا می شود.

نتیجه گیری

این راهنما نشان می دهد که چگونه می توان یک برنامه RAG بدون سرور (Retrieval-Augmented Generation) با استفاده از LlamaIndex.ts و Azure OpenAI، مستقر در Microsoft Azure ایجاد کرد. با دنبال کردن این راهنما، می‌توانید از زیرساخت‌های Azure و قابلیت‌های LlamaIndex برای ایجاد برنامه‌های هوش مصنوعی قدرتمند استفاده کنید که پاسخ‌های غنی‌شده‌ای را بر اساس داده‌های شما ارائه می‌دهند.

ما هیجان زده هستیم که ببینیم با این برنامه شروع به کار چه چیزی می سازید. با خیال راحت آن را فورک کنید و از مخزن GitHub برای دریافت آخرین به روز رسانی ها و ویژگی ها خوشتان بیاید.

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

اینجاست که Retrieval-Augmented Generation (RAG) وارد می شود و رویکردی ساختاریافته برای یکپارچه سازی بازیابی داده ها با پاسخ های مبتنی بر هوش مصنوعی ارائه می دهد. با چارچوب‌هایی مانند LlamaIndex، می‌توانید به راحتی این قابلیت را در راه‌حل‌های خود ایجاد کنید و پتانسیل کامل داده‌های کسب‌وکار خود را باز کنید.

آیا می خواهید به سرعت برنامه را اجرا و کاوش کنید؟ اینجا را کلیک کنید.

RAG – Retrieval-Augmented Generation چیست؟

Retrieval-Augmented Generation (RAG) یک چارچوب شبکه عصبی است که تولید متن هوش مصنوعی را با گنجاندن یک جزء بازیابی برای دسترسی به اطلاعات مرتبط و ادغام داده‌های خود بهبود می‌بخشد. از دو بخش اصلی تشکیل شده است:

  • رتریور: یک مدل بازیابی متراکم (به عنوان مثال، بر اساس BERT) که مجموعه بزرگی از اسناد را جستجو می کند تا قسمت های مرتبط یا اطلاعات مربوط به یک پرس و جو را پیدا کند.
  • ژنراتور: یک مدل دنباله به دنباله (مثلاً بر اساس BART یا T5) که پرس و جو و متن بازیابی شده را به عنوان ورودی می گیرد و پاسخی منسجم و غنی شده از نظر زمینه ایجاد می کند.

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

LlamaIndex چگونه RAG را پیاده سازی می کند؟

برای پیاده سازی یک سیستم RAG با استفاده از LlamaIndex، این مراحل کلی را دنبال کنید:

بلع داده ها:

  • اسناد خود را در LlamaIndex.ts با استفاده از بارگیری اسناد بارگیری کنید SimpleDirectoryReader، که به وارد کردن داده ها از منابع مختلف مانند PDF، API یا پایگاه داده SQL کمک می کند.
  • اسناد بزرگ را به قطعات کوچکتر و قابل مدیریت با استفاده از SentenceSplitter.

ایجاد شاخص:

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

راه اندازی موتور جستجو:

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

بازیابی و تولید:

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

برای مثال عملی، ما یک نمونه برنامه کاربردی برای نشان دادن پیاده‌سازی کامل RAG با استفاده از Azure OpenAI ارائه کرده‌ایم.

نمونه کاربردی RAG عملی

ما اکنون بر روی ساخت یک برنامه RAG با استفاده از LlamaIndex.ts (پیاده سازی TypeScipt LlamaIndex) و Azure OpenAI تمرکز می کنیم و روی آن به عنوان یک برنامه وب بدون سرور در برنامه های کانتینر Azure مستقر می شویم.

الزامات برای اجرای نمونه

  • Azure Developer CLI (azd): یک ابزار خط فرمان برای استقرار آسان کل برنامه شما، از جمله باطن، فرانت اند، و پایگاه داده.
  • حساب لاجوردی: برای استقرار برنامه به یک حساب Azure نیاز دارید. برای شروع، یک حساب Azure رایگان با مقداری اعتبار دریافت کنید.

پروژه شروع کار را در GitHub پیدا خواهید کرد. ما به شما توصیه می کنیم این الگو را فورک کنید تا در صورت نیاز بتوانید آزادانه آن را ویرایش کنید:

در GitHub Codespaces باز کنید

معماری سطح بالا

برنامه شروع پروژه بر اساس معماری زیر ساخته شده است:

  • Azure OpenAI: ارائه دهنده هوش مصنوعی که درخواست های کاربر را پردازش می کند.
  • LlamaIndex.ts: چارچوبی که به جذب، تبدیل و بردار کردن محتوا (PDF) و ایجاد فهرست جستجو کمک می کند.
  • برنامه های کانتینر Azure: محیط کانتینری که برنامه بدون سرور در آن میزبانی می شود.
  • Azure Managed Identity: امنیت درجه یک را تضمین می کند و نیازی به مدیریت اعتبارنامه ها و کلیدهای API را از بین می برد.

معماری-نمودار-لاما-ایندکس-جاوا اسکریپت

برای جزئیات بیشتر در مورد اینکه چه منابعی مستقر شده اند، این را بررسی کنید infra پوشه موجود در تمام نمونه های ما.

نمونه گردش کار کاربر

برنامه نمونه شامل منطق برای دو گردش کار است:

  1. بلع داده ها: داده ها واکشی می شوند، بردار می شوند و فهرست های جستجو ایجاد می شوند. اگر می خواهید فایل های بیشتری مانند PDF یا فایل های Word اضافه کنید، این جایی است که باید آنها را اضافه کنید.

      npm run generate
    
  2. ارائه درخواست های سریع: برنامه درخواست‌های کاربر را دریافت می‌کند، آنها را به Azure OpenAI می‌فرستد و با استفاده از نمایه برداری به عنوان یک بازیابی، این درخواست‌ها را تقویت می‌کند.

اجرای نمونه

قبل از اجرای نمونه، مطمئن شوید که منابع لازم Azure را تهیه کرده اید.

برای اجرای قالب GitHub در GitHub Codespace، به سادگی کلیک کنید
در GitHub Codespaces باز کنید

در نمونه Codespaces خود، از ترمینال خود وارد حساب Azure خود شوید:

azd auth login
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تهیه، بسته بندی و استقرار نمونه برنامه در Azure با استفاده از یک دستور واحد:

azd up
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای اجرا و امتحان کردن برنامه به صورت محلی، وابستگی های npm را نصب کرده و برنامه را اجرا کنید:

npm install
npm run dev
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این برنامه در پورت 3000 در نمونه Codespaces یا در http://localhost:3000 در مرورگر شما اجرا می شود.

نتیجه گیری

این راهنما نشان می دهد که چگونه می توان یک برنامه RAG بدون سرور (Retrieval-Augmented Generation) با استفاده از LlamaIndex.ts و Azure OpenAI، مستقر در Microsoft Azure ایجاد کرد. با دنبال کردن این راهنما، می‌توانید از زیرساخت‌های Azure و قابلیت‌های LlamaIndex برای ایجاد برنامه‌های هوش مصنوعی قدرتمند استفاده کنید که پاسخ‌های غنی‌شده‌ای را بر اساس داده‌های شما ارائه می‌دهند.

ما هیجان زده هستیم که ببینیم با این برنامه شروع به کار چه چیزی می سازید. با خیال راحت آن را فورک کنید و از مخزن GitHub برای دریافت آخرین به روز رسانی ها و ویژگی ها خوشتان بیاید.

نوشته های مشابه

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا