LangChain или LlamaIndex за RAG: меморијата може да го реши изборот

|Автор: Уредувачки тим на QUASA|6 мин. читање
LangChain или LlamaIndex за RAG: меморијата може да го реши изборот

За стандарден RAG што пребарува документи и составува одговор, LlamaIndex е разумен прв кандидат ако достапната работна меморија е тесното ограничување. LangChain има посилен аргумент кога пребарувањето е само дел од тек со повеќе алатки, условни чекори и агенти. Одлуката зависи од тоа дали проектот прво го ограничуваат ресурсите или потребата од контрола врз текот.

Објавена споредба на конкретни поставки укажува на помала потрошувачка на меморија со LlamaIndex, но не дава универзален праг за избор. Важно е и кога се троши меморијата: при создавање на индексот или додека апликацијата одговара на прашања. Таа разлика може да ја смени практичната вредност на резултатот.

Што е измерено во споредбата

Во тестот на TildAlice со 10.000 технички Markdown документи, поставката со LlamaIndex индексирала за 187 секунди наспроти 312 со LangChain, достигнала 5,1 GB наспроти 9,2 GB врвна меморија при индексирање и имала просечно време до одговор од 0,62 наспроти 1,85 секунди. Мерењето е објавено од трета страна и ги опишува двете прикажани RAG поставки, со нивниот хардвер, модел и софтверски верзии.

Иако авторот ги опишува деловите од документите како еднакво големи, прикажаниот код за LangChain ја пресметува должината во знаци, додека поставката за LlamaIndex користи поинаков начин на делење. И режимите за составување одговор се различни. Затоа бројките се причина меморијата и брзината да влезат во одлуката, но не се сигурна процена колкава предност ќе има која било рамка во друга имплементација.

Во тестот се користени постари верзии на двата проекта. Разликата во индексирањето може да произлезе и од начинот на делење, векторските претставувања и составувањето на индексот, а не само од самата рамка. За избор меѓу тековни имплементации, споредливи се резултатите добиени со иста збирка, ист начин на делење и ист модел за векторски претставувања.

Кога RAM навистина го насочува изборот

Врвната меморија при индексирање е пресудна ако индексот се создава на истата машина каде што работи и остатокот од апликацијата. Процес што се вклопува самостојно може да го надмине расположливиот капацитет кога истовремено работат јазичниот модел, базата или други услуги. Ако документите често се менуваат и индексот редовно се обновува, тој врв станува дел од вообичаеното оптоварување.

Бројот на датотеки не е доволен за процена на RAM. Долги документи, преклопување меѓу текстуалните делови и дополнителни метаподатоци го менуваат бројот на објекти што треба да се обработат. Два корпуса со ист број документи затоа можат да имаат сосема различен мемориски профил. Корисниот праг е дали целото индексирање се вклопува во реално достапната меморија, заедно со другите процеси што мора да продолжат да работат.

Ако индексот се гради во одвоена задача или на посебна машина, врвот при индексирање има поинаква тежина. Тогаш за услугата што прима прашања се поважни меморијата на вчитаниот индекс, бројот истовремени барања и времето до одговор. Објавената вредност за врвот при изградба не треба да се чита како постојана потрошувачка на услугата.

Од каде доаѓа времето до одговор

Вкупното доцнење опфаќа повеќе од пребарување во индексот. Прашањето прво добива векторска претстава, потоа се извлекуваат делови од документи, се подготвува контекст и се повикува јазичниот модел. Ако една поставка му испраќа на моделот пократок или поинаку составен контекст, разликата во вкупното време не може да се припише само на брзината на извлекување.

Описот на режимите за одговор во LlamaIndex наведува дека compact ги спојува извлечените делови според достапниот контекст и, кога е потребно, ги дели во повеќе барања кон моделот. Тоа е релевантно за тестот бидејќи начинот на составување на одговорот влијае врз бројот и обемот на повиците. За споредба на рамките, треба одделно да се набљудуваат извлекувањето, подготовката на контекстот и повикот до моделот.

Ако производот има строго барање за време до одговор, резултатот што го гледа корисникот останува најважната мерка. Сепак, причината за доцнењето одредува што вреди да се смени: бројот извлечени делови, должината на контекстот, моделот или начинот на оркестрација. Така може да се процени дали изборот на рамка навистина го решава ограничувањето.

Квалитетот на извлекување и посложени прашања

Резултатот за извлечените делови во објавената споредба е изедначен, но тоа не значи дека и конечните одговори се еднакво точни. На одговорот влијаат и изборот на контекст, неговиот редослед и начинот на кој моделот ги користи пронајдените документи. Прашање што бара поврзување информации од повеќе документи може да открие разлика што едноставна проверка на најдените делови нема да ја покаже.

Упатството за пребарување во LlamaIndex ги раздвојува извлекувањето, последователната обработка на резултатите и составувањето одговор. Во тие фази може да се менуваат бројот извлечени делови, филтрите и правилата за избор на контекст. Затоа потребата од сложено извлекување сама по себе не го насочува изборот кон LangChain; поважно е како конкретното правило се изразува и одржува во секоја рамка.

За корпус на македонски или со мешани јазици, релевантни се прашањата и документите што навистина ќе ги користи апликацијата. Истиот метод за извлекување може да се однесува различно со локални имиња, кратенки и стручна терминологија. Во таков случај, квалитетот на најдениот контекст и точноста на одговорот можат да имаат поголема тежина од мала разлика во времето на пребарување.

Кога контролата врз текот вреди повеќе

LangChain е привлечен кога RAG треба да избере меѓу извори, да повика алатка или да продолжи низ условни чекори. Официјалните упатства на LangChain опфаќаат готов RAG агент, приспособен RAG со LangGraph, насочување кон различни извори и текови со повеќе агенти. LangGraph дава подетална контрола кога состојбата и редоследот на чекорите се важен дел од производот.

И LlamaIndex располага со повеќе од едноставно пребарување документи: документацијата на LlamaIndex Framework го опишува како основа за агенти, RAG над сопствени податоци, работни текови и интеграции за извлекување. Разликата затоа е во тоа која имплементација појасно го изразува потребниот тек, со прифатлива сложеност и потрошувачка на ресурси за конкретниот тим.

Матрица според главното ограничување

  • Стандарден тек и тесна RAM: LlamaIndex е разумен прв кандидат, особено ако индексот се создава во истата средина со апликацијата. Одлучува реалниот врв на меморија за сопствениот корпус.
  • Голем корпус или чести обновувања: тежината се префрла на времето и меморијата при индексирање, како и на бројот текстуални делови што настануваат од документите.
  • Брз одговор како главна цел: споредливо е целото време до одговор при еднаков контекст за моделот; само времето на пребарување дава нецелосна слика.
  • Сложено извлекување: предност има рамката во која потребните филтри, прераспоредување и правила за контекст најјасно се одржуваат, додека точноста на одговорот останува посебен критериум.
  • Условен тек со повеќе алатки или агенти: LangChain со LangGraph има силен аргумент ако контролата врз чекорите и состојбата е суштински дел од системот.

Прочитајте и:

Сподели:

Претплатете се на нашиот билтен

Добивајте ги најновите вести за Web3, AI и крипто директно во вашето сандаче.

0