۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

بررسی LlamaIndex: برنامه های کاربردی LLM با زمینه آسان

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

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

«داده‌های سازمانی خود را به برنامه‌های LLM آماده برای تولید تبدیل کنید»، صفحه اصلی LlamaIndex در ۶۰ نقطه به صدا در می‌آید. نوع باشه پس عنوان فرعی آن این است که “LlamaIndex چارچوب داده پیشرو برای ساخت برنامه های LLM است.” من چندان مطمئن نیستم که این چارچوب داده پیشرو باشد، اما مطمئناً موافقم که یک چارچوب داده پیشرو برای ساخت با مدل های زبان بزرگ است. a>، همراه با LangChain و هسته معنایی، که بعداً در مورد آن توضیح خواهیم داد.

LlamaIndex در حال حاضر دو چارچوب متن باز و یک ابر ارائه می دهد. یک چارچوب در Python است. دیگر در TypeScript است. LlamaCloud (در حال حاضر در پیش‌نمایش خصوصی) ذخیره‌سازی، بازیابی، پیوند به منابع داده را از طریق LlamaHub، و یک سرویس تجزیه و تحلیل اختصاصی پولی برای اسناد پیچیده، LlamaParse، که به عنوان یک سرویس مستقل نیز در دسترس است.

LlamaIndex دارای نقاط قوتی در بارگیری داده‌ها، ذخیره و نمایه‌سازی داده‌های شما، پرس‌وجو با هماهنگ‌سازی گردش‌های کاری LLM، و ارزیابی عملکرد برنامه LLM شما است. LlamaIndex با بیش از ۴۰ فروشگاه برداری، بیش از ۴۰ LLM و بیش از ۱۶۰ منبع داده ادغام می شود. مخزن LlamaIndex Python دارای بیش از ۳۰ هزار ستاره است.

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

LlamaIndex با LangChain، Semantic Kernel و Haystack< رقابت می کند. /a>. همه اینها دقیقاً دامنه و قابلیت‌های یکسانی ندارند، اما تا آنجا که محبوبیت وجود دارد، مخزن پایتون LangChain دارای بیش از ۸۰K ستاره است، تقریباً سه برابر LlamaIndex (بیش از ۳۰K ستاره)، در حالی که هسته معنایی بسیار جدیدتر دارای بیش از ۱۸K ستاره است. کمی بیش از نیمی از LlamaIndex است و مخزن Haystack بیش از ۱۳ هزار ستاره دارد.

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

LlamaIndex، LangChain، و Haystack همگی دارای تعدادی شرکت بزرگ به عنوان کاربر هستند که برخی از آنها از بیش از یکی از این چارچوب ها استفاده می کنند. Semantic Kernel از مایکروسافت است که معمولاً به جز برای مطالعات موردی، کاربران خود را به زحمت نمی‌اندازد.

llamaindex 01

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

ویژگی های LlamaIndex

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

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

ابزارهایی که LlamaIndex فراهم می‌کند، بارگذاری داده، فهرست‌سازی و ذخیره‌سازی داده‌ها، جستجوی داده‌های شما با LLM و ارزیابی عملکرد برنامه‌های LLM را انجام می‌دهند:

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

افزایش متن

LLM ها روی متن های بزرگ آموزش داده شده اند، اما لزوماً متن در مورد دامنه شما نیستند. سه راه اصلی برای انجام تقویت زمینه و افزودن اطلاعات در مورد دامنه شما، ارائه اسناد، انجام RAG و تنظیم دقیق مدل وجود دارد.

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

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

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

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

نصب LlamaIndex

نسخه Python LlamaIndex را می‌توانید به سه روش نصب کنید: از کد منبع در مخزن GitHub، با استفاده از llama-index استارتر نصب، یا با استفاده از < code>llama-index-core به‌علاوه ادغام‌های انتخابی. نصب استارت به این صورت خواهد بود:

pip install llama-index

این LLMها و جاسازی‌های OpenAI را علاوه بر هسته LlamaIndex می‌کشد. باید کلید OpenAI API خود را ارائه کنید (به اینجا مراجعه کنید) قبل از اجرای نمونه هایی آی تی. LlamaIndex مثال شروع کاملاً ساده است، اساساً پنج خط کد پس از یک زوج از مراحل راه اندازی ساده مثال‌های بیشتری در مخزن وجود دارد، با < یک href="https://docs.llamaindex.ai/en/stable/examples/" rel="nofollow">اسناد.

Eclipse Theia IDE برای دسکتاپ، مرورگر می رسد

انجام نصب سفارشی ممکن است چیزی شبیه به این باشد:

pip install llama-index-core llama-index-readers-file llama-index-llms-ollama llama-index-embeddings-huggingface

این یک رابط را برای تعبیه‌های Ollama و Hugging Face نصب می‌کند. یک مثال راه‌انداز محلی وجود دارد که با این نصب همراه است. مهم نیست از چه راهی شروع کنید، همیشه می توانید ماژول های رابط بیشتری را با pip اضافه کنید.

اگر ترجیح می دهید کد خود را در جاوا اسکریپت یا TypeScript بنویسید، از LlamaIndex.TS استفاده کنید (repo). یکی از مزایای نسخه TypeScript این است که می توانید نمونه های آنلاین در StackBlitz بدون هیچ گونه تنظیمات محلی. همچنان باید یک کلید OpenAI API ارائه دهید.

LlamaCloud و LlamaParse

LlamaCloud یک سرویس ابری است که به شما امکان می دهد آپلود کنید اسناد را تجزیه و فهرست کرده و با استفاده از LlamaIndex آنها را جستجو کنید. در مرحله آلفای خصوصی است و من نتوانستم به آن دسترسی داشته باشم. LlamaParse یک جزء از LlamaCloud است که به شما امکان می دهد فایل های PDF را به داده های ساختاریافته تجزیه کنید. از طریق یک REST API، یک بسته Python و یک رابط وب در دسترس است. در حال حاضر در نسخه بتا عمومی است. می‌توانید برای استفاده از LlamaParse با هزینه‌ای ناچیز بر اساس استفاده، پس از اولین ۷ هزار صفحه در هفته ثبت‌نام کنید. مثالی که در مورد مقایسه LlamaParse و PyPDF برای بایگانی Apple 10K ارائه شد، چشمگیر است، اما من خودم این را آزمایش نکردم.

LlamaHub

LlamaHub به شما امکان دسترسی به مجموعه بزرگی از ادغام‌های LlamaIndex را می‌دهد. اینها شامل عوامل، تماس‌های برگشتی، بارگذارهای داده، جاسازی‌ها و حدود ۱۷ دسته دیگر است. به طور کلی، ادغام ها در مخزن LlamaIndex، PyPI و NPM هستند و می توانند با pip install یا npm install بارگیری شوند.

create-llama CLI

create-llama یک ابزار خط فرمان است که برنامه های LlamaIndex را تولید می کند. این یک راه سریع برای شروع با LlamaIndex است. برنامه تولید شده دارای یک صفحه جلویی با قابلیت Next.js و انتخابی از سه قسمت پشتی است.

RAG CLI

RAG CLI یک ابزار خط فرمان برای چت کردن با یک LLM درباره فایل هایی که به صورت محلی در رایانه خود ذخیره کرده اید. این تنها یکی از موارد استفاده زیاد برای LlamaIndex است، اما بسیار رایج است.

اجزای LlamaIndex

راهنماهای مؤلفه LlamaIndex برای بخش‌های مختلف LlamaIndex به شما کمک می‌کند. اولین تصویر زیر منوی راهنمای مؤلفه را نشان می دهد. دوم راهنمای مؤلفه برای درخواست‌ها را نشان می‌دهد که به بخش مربوط به سفارشی‌سازی درخواست‌ها پیمایش شده است.

ساخت یک برنامه پرسش و پاسخ با LangChain و Google PalM 2

llamaindex 02

راهنماهای مؤلفه LlamaIndex قطعات مختلفی را که چارچوب را تشکیل می دهند مستند می کنند. اجزای بسیار کمی وجود دارد.

llamaindex 03

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

یادگیری LlamaIndex

وقتی مثال شروع را در زبان برنامه نویسی دلخواه خود خواندید، فهمیدید و اجرا کردید (پایتون یا تایپ اسکریپت، پیشنهاد می‌کنم که نمونه‌های دیگر را که جالب به نظر می‌رسند بخوانید، بفهمید و امتحان کنید. تصویر زیر نشان می‌دهد. نتیجه تولید فایلی به نام essay با اجرای essay.ts و سپس پرسیدن سوالات در مورد آن با استفاده از chatEngine.ts این نمونه ای از استفاده از RAG برای پرسش و پاسخ است

برنامه chatEngine.ts از اجزای ContextChatEngine، Document، Settings و VectorStoreIndex LlamaIndex استفاده می کند. وقتی به کد منبع نگاه کردم ، دیدم که به مدل OpenAI gpt-3.5-turbo-16k متکی است. که ممکن است در طول زمان تغییر کند. به نظر می رسید ماژول VectorStoreIndex از پایگاه داده بردار Qdrant منبع باز و مبتنی بر Rust استفاده می کند، اگر من اسناد را به درستی می خواندم .

llamaindex 04

پس از راه‌اندازی محیط ترمینال با کلید OpenAI خود، essay.ts را برای ایجاد یک فایل مقاله و chatEngine.ts را برای درخواست‌های فیلد در مورد مقاله اجرا کردم.

آوردن زمینه به LLM

همانطور که مشاهده کردید، استفاده از LlamaIndex برای ایجاد برنامه های LLM بسیار آسان است. من توانستم آن را در برابر OpenAI LLM و یک منبع داده فایل برای یک برنامه Q&A RAG بدون مشکل آزمایش کنم. به عنوان یادآوری، LlamaIndex با بیش از ۴۰ فروشگاه برداری، بیش از ۴۰ LLM و بیش از ۱۶۰ منبع داده ادغام می شود. برای چندین مورد از جمله پرسش و پاسخ، استخراج ساختاریافته، چت، جستجوی معنایی، و عامل ها کار می کند.

من پیشنهاد می کنم LlamaIndex را همراه با LangChain، Semantic Kernel و Haystack ارزیابی کنید. این احتمال وجود دارد که یک یا چند مورد از آنها نیازهای شما را برآورده کنند. من نمی توانم یکی را به طور کلی به دیگران توصیه کنم، زیرا برنامه های مختلف نیازمندی های متفاوتی دارند.

خط پایین

استفاده از LlamaIndex برای ایجاد برنامه های LLM بسیار آسان است. من توانستم آن را در برابر OpenAI LLM و یک منبع داده فایل برای یک برنامه Q&A RAG بدون مشکل آزمایش کنم. LlamaIndex با بیش از ۴۰ فروشگاه برداری، بیش از ۴۰ LLM و بیش از ۱۶۰ منبع داده ادغام می شود و برای چندین مورد از جمله پرسش و پاسخ، استخراج ساختاریافته، چت، جستجوی معنایی و عامل ها کار می کند.

طرفداران

  1. به ایجاد برنامه‌های LLM برای پرسش و پاسخ، استخراج ساختاریافته، چت، جستجوی معنایی، و عوامل کمک می‌کند
  2. پشتیبانی از Python و TypeScript
  3. فریم‌ورک‌ها رایگان و منبع باز هستند
  4. مثال ها و ادغام های زیادی

معایب

  1. ابر به پیش‌نمایش خصوصی محدود شده است
  2. بازاریابی کمی بیش از حد است

منبع باز: رایگان. سرویس واردات LlamaParse: 7 هزار صفحه در هفته رایگان، سپس ۳ دلار در هر ۱۰۰۰ صفحه.

Python و TypeScript، به علاوه ابر SaaS (در حال حاضر در پیش‌نمایش خصوصی).