Пројектовање и евалуација API-ја за претрагу са примарним фокусом на AI

Изградња скалабилног API-ја за претрагу који обрађује 200 милиона упита дневно користећи хибридно проналажење и интелигентно уређивање контекста за AI моделе

АуториPerplexity Research

Изградња скалабилног API-ја за претрагу усмјереног на вјештачку интелигенцију представља јединствене истраживачке изазове на пресеку проналажења информација, вјештачке интелигенције и пројектовања система. За разлику од традиционалних сервиса који раде са ограниченим подацима, API за претрагу мора континуирано да индексира милијарде докумената, разумије намјеру упита на различитим језицима и у различитим доменима, и да избаци релевантне резултате у року од неколико милисекунди. У свијету агента вјештачке интелигенције, API за претрагу такође мора пажљиво да уређује контекст који се пружа моделима програмера како би се осигурало да ти модели раде оптимално и садрже максимално тачне информације. Ефикасно инжењерство контекста захтијева да API не само да заузима релевантност на нивоу документа, већ и да поједине секције и дијелове докумената третира као самосталне јединице прве класе.

У овом чланку представљамо пројекат и евалуацију Perplexity API-ја за претрагу. Прво истражујемо архитектуру и кључне техничке одлуке које стоје иза наше производне инфраструктуре за претрагу која обрађује 200 милиона упита дневно. Наша архитектура комбинује хибридне механизме претраге, вишестепена цијевовода за рангирање, дистрибуирано индексирање и динамичко парсирање кроз модул за разумијевање садржаја који се сам усавршава.

Затим описујемо наш приступ емпиријској евалуацији перформанси API-ја за претрагу кроз новоотворени оквир за евалуацију. Кроз свеобухватно упоређивање са постојећим комерцијалним API-јима, демонстрирамо перформансе на врхунском нивоу како у погледу квалитета тако и кашњења. Perplexity API за претрагу је доступан програмерима широм свијета од данас.

[Пронађи search_evals на GitHub-у]

Изградња система за претрагу оптимизованог за моделе вјештачке интелигенције

Од нашег оснивања, схватили смо да ће робусне могућности претраге бити критичне за омогућавање AI производа који дефинишу категорију које смо жељели да испоручимо. Првобитно смо се надали да ове могућности већ постоје у јавно доступном облику. Експериментисали смо са портфолиом API-ја за претрагу доступних крајем 2022. године, а прва верзија Perplexity-јевог погона за одговоре заправо је садржала нека од ових рјешења. Конкретно, анализирали бисмо корисничке упите, формулисали и слали захтјеве овим API-јима и прикупљали резултате као контекст за наш низводни цијевовод генерисања.

Међутим, како су корисници хрлили на Perplexity, брзо смо схватили да ови API-ји неће скалирати са нашим растом. Цијене са којима смо се сусретали биле су екстремно високе, при чему је један водећи добављач API-ја наплаћивао 200 долара по хиљади упита. Али што је још горе, ови стари API-ји једноставно нису били дизајнирани за нове парадигме претраге које су увеле границе AI система.

Једна од најранијих верзија Perplexity-јевог погона за одговоре.

За почетак, формати захтјева и одговора ових старих API-ја дизајнирани су за свијет у којем су људи искључиви корисници резултата претраге. Као резултат тога, ови API-ји су давали предност резултатима на нивоу документа, искључујући детаљније информације које откривају подјединице докумената. Успјех AI модела зависи од квалитета и компактности обезбијеђеног контекста, и видјели смо из прве руке како преширока претрага може да поремети AI моделе, без обзира на то колико релевантни могу изгледати претражени документи у цјелини. Наши покушаји да наметнемо прецизност на непрецизне резултате имали су ограничен успјех.

Такође смо приметили да су стари API-ји били или превише застарели или преспори. Независно развијени API-ји за претрагу ослањали су се на индексе који су били непотпуни и прерјетко ажурирани. API-ји засновани на стругању, као што су различити незванични SERP API-ји за Google претрагу, имали су користи од свеобухватнијег индекса, али су нудили неприхватљиво високо кашњење због нефикасности инхерентне упитању претраживача треће стране. Високо кашњење чинило је API-је непогодним за апликације које су окренуте корисницима, док је застарелост чинила скупове резултата неупотребљивим за било који AI систем који жели да буде тачан и поуздан.

Коначно, приметили смо да се AI екосистем раздваја између лексичке и семантичке претраге, са системима који су се појављивали а били су превише оптимизовани за један модалитет у односу на други. Видјели смо успон векторских база података које нису могле адекватно да подржавају чак ни једноставне булове филтере. Традиционалне позадине претраге пролазиле су мало боље, са примитивном подршком за семантичко рангирање и могућности претраге које је откључао AI.

Када смо схватили да би побољшање Perplexity-ја захтијевало изградњу сопствене наменске инфраструктуре за претрагу, сазли смо наша запажања у три кључна критеријума:

Потпуност, свјежина и брзина: индекс претраге мора бити свеобухватан, константно ажуриран и пројектован за кашњење у стварном времену.

Детаљно разумијевање садржаја: крхкост AI модела и ограничени прозори контекста захтијевају да резултати претраге буду приказани и рангирани на што детаљнијем нивоу.

Хрибидно проналажење и рангирање: и цевовод за проналажење и цевовод за рангирање морају укључивати лексичке и семантичке сигнале како би резултати били корисни за AI.

Perplexity данас, покренут нашом инфраструктуром за претрагу интернет скале која је сада доступна путем Perplexity Search API-ја.

Инфраструктура за индексирање и претраживање

Рад на скали Perplexity-ја захтијева инфраструктуру која може свеобухватно да мапира вест и одговори на његову константну еволуцију. Наш индекс претраге прати преко 200 милијарди јединствених URL адреса, са капацитетом да прати много стотина милијарди више.

Осигурање да наш индекс покрива довољно свеобухватан дио интернета и да сваки документ одражава најновије стање је тежак задатак. Постоји инхерентна тензија између потпуности и свјежине: за фиксни буџет индексирања, операције освежавања постојећих страница морају се такмичити са операцијама индексирања нових непосјећених страница. Ову тензију балансирамо комбинацијом скалирања (које опушта ограничење оптимизације повећањем буџета за индексирање) и приоритеризације вођене машинским учењем (која осигурава да свака операција индексирања буде максимално вриједна за индекс у цјелини).

Изградили смо индекс скале ексабајта и апарат за индексирање који се хоризонтално скалира и са величином и са обимом упита. Perplexity-јев претраживач и флоте за индексирање заједнички обухватају десетине хиљада процесора и стотине терабајта RAM-а, са значајним простором за даље скалирање. Ову рачунарску инфраструктуру спајамо са балансом хлад ног и топлог складишта. Користимо и научене моделе и подешена хеуристичка правила да утврдимо које документе треба чувати врућим, дајући приоритет документима из ауторитетних домена, документима који се баве недовољно обрађеним темама и другим категоријама са изузетним потенцијалом да обогате наш индекс.

Ова инфраструктура омогућава Perplexity-ју да обрађује десетине хиљада операција индексирања у секунди. Али чак и са овим релативно великодушним буџетом, скала интернета је превише огромна да би се свака појединачна URL адреса индексирала на чесној и поновљивој основи. Овде ступа на сцену машинско учење. Обучавамо модель машинског учења да предвиди да ли било која дата кандидаткиња URL адреса треба да буде индексирана. Циљ обуке је направљен тако да осигура да калибришемо нашу одлуку о индексирању према важности и вјероватној учесталости ажурирања одређене URL адресе. Такође се ослањамо на машинско учење да нам тачно каже када да закажемо операцију индексирања. За сајтове са рутинским ритмовима објављивања и освежавања, ово нам омогућава да одложимо операције до тренутка у времену када ће вјероватно бити најкорисније. Кроз континуирано усавршавање ових модела машинског учења, у могућности смо да одржимо индекс који испуњава циљ и у погледу потпуности и свјежине.

Иако се наша инфраструктура за претраживање лако хоризонтално скалира, свјесни смо да оператери веб сајтова суочавају са различитим техничким ограничењима. Пажљиви смо да одржимо предвидљиву и управљиву стопу захтјева за било који дати домен. PerplexityBot, наш претраживач, поштује експлицитна ограничења наведена у robots.txt датотекама, или у одсуству ограничења дефинисаних од стране домена, стандарде индустрије који се односе на стопе захтјева. Такође прилагођавамо своје понашање претраживања када детектујемо недоступност сајта. Наш дистрибуирани систем је пројектован да спроведе ова ограничења чак и кроз десетине хиљада истовремених операција.

Разумијевање садржаја са самоусвршавањем на скали интернета

Чак и са једним од највећих и најсвјежих индекса претраге на планети, квалитет резултата сваког упита зависи од разумијевања садржаја сваког документа од стране нашег система. Овде се суочавамо са фундаменталним изазовом: вест је неуредно мјесто. Ниједан фиксни скуп правила за парсирање не може да се носи са бесконачном разноликошћу распореда, структура и стилова који се налазе широм цијелог интернета.

Овај изазов смо ријешили развијањем модула за разумијевање садржаја који парсира веб сајтове и извлачи семантички значајан садржај користећи динамичке скупове правила. Веб сајт богат добро структурираним подацима у форми листе или табеле може имати користи од формуличнијих правила за парсирање и екстракцију, док други веб сајт који првенствено садржи слободан кориснички генерисан садржај може захтијевати лабавији скуп правила. Будући да је вест углавном статична у краттким временским оквирима, утврђујемо да је животни вијек датог правила релативно дуг. Али како сајтови еволуирају током времена и како сазнајемо више о најбољим начинима за извлачење информација, наши скупови правила такође захтијевају континуирано одржавање.

Да бисмо олакшали ову динамичку адаптацију, окрећемо се (наравно) вјештачкој интелигенцији. На скали Perplexity-ја, у току опслуживања милиона корисничких упита на сат, запажамо невјероватно богато пресјеку веба. Ово чини основу за итеративну петљу самоусвршавања. Запажамо понашање парсирања и извучене излазе наших тренутних скупова правила широм нашег универзума упита. Затим користимо границе LLM модела да оцијенимо перформансе кроз двије главне димензије:

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

Квалитет: наш индекс се ослања на садржај који је високог квалитета и по суштини и по форми. Информације треба да буду забиљежене на начин који чува оригиналну структуру и распоред садржаја.

Имајте на уму да потпуност и квалитет представљају још једну инхерентну тензију: ручно оптимизовање за квалитет је могуће, али настала правила парсирања можда неће успјети да ухвате критичан садржај. Слично томе, могли бисмо ручно да кодирамо дозвољена правила која примјењују минимално филтрирање на сирови садржај, што би могло да побољша потпуност али на штету квалитета. Због тога се окрећемо самоусвршавању вођеном вјештачком интелигенцијом како бисмо развили наш скуп правила на начин који може да оптимизује за обоје одједном на начин прилагођен домену.

Конкретно, након сваке процјене перформанси парсирања вођене LLM-ом, наш систем формулише скуп предложених измјена скупа правила како би се ријешиле најзначајније класе грешака. Ови скупови правила пролазе кроз даљу ваљаност, након чега распоређујемо нову верзију у наш индекс. С обзиром на то да побољшања у логици парсирања и екстракције могу само користити будућим операцијама индексирања, наша улагања у поновно индексирање оптимизовано машинским учењем су посебно важна: континуирано освежавање докумената са великим саобраћајем коришћењем најновије верзије ове логике осигурава чврсту петљу самоусвршавања.

Ова правила су важна не само за основне перформансе парсирања већ и за сегментацију на подјединице докумената. Када је ријеч о границама LLM модела, сваки токен контекста је драгоцен. Велики број претходних радова документовао је како перформансе LLM модела опадају са повећањем величине контекста и загађењем контекста нерелевантним информацијама. Имање добро структурираног, свеобухватног парсирања омогућава нам да разложимо документе на самостално затворене распоне, од којих сваки може бити појединачно преузет и рангиран у време упита.

Цевовод за проналажење и рангирање

Модерна претрага захтијева обезбеђивање и потпуности и релевантности под уским буџетом кашњења. Perplexity-јев цевовод за проналажење и рангирање то постиже кроз архитектуру са више фаза која прогресивно префињује резултате серијом све софистициранијих модула. Рјешавамо потенцијална грла тако што хоризонтално скалирамо све потенцијалне уске тачке у највећој могућој мјери.

Цевовод почиње проналажењем из нашег индекса. Не намећемо избор између лексичког и семантичког проналажења. Умјесто тога, постављамо упит индексу претраге путем оба модалитета и спајамо резултате у хибридни скуп кандидата. У овој фази, приоритет је свеобухватност над прецизношћу - наредне фазе цевовода оптимизоваће за прецизност.

Цевовод наставља са фазама предфилтрирања, у којима примјењујемо основну хеуристику и прве филтере да уклонимо очигледно нереспонзиван или застарео садржај из скупа кандидата.

Затим користимо више фаза прогресивно напредног рангирања. Раније фазе се ослањају на системе оцјењивања засноване на лексици и уградњи који су оптимизовани за брзину. Како се скуп кандидата полако смањује, затим користимо моћније моделе поновног рангирања са унакрсним енкодером да извршимо коначно обликовање скупа резултата. Захваљујући нашим бројним улагањима у перформансе инференције, у могућности смо да искористимо врхунске архитектонске моделе за ове касније фазе уз одржавање ниског укупног кашњења рангирања.

Кроз овај цевовод, преузимамо и оцјењујемо резултате на нивоу документа и поддокумента. Као што је горе описано, AI захтијева пажљив инжењеринг контекста. Наш цевовод је дизајниран да избаци најзначајније могуће атомичне јединице моделу, тако да низводни потрошачи могу да инкорпорирају те прецизне јединице без повлачења нерелевантног контекста са других мјеста у изворним документима.

Осигурање високог квалитета у свакој фази овог цевовода могуће је само кроз заједнички дизајн са портфолиом производа Perplexity-ја. Сваки детаљ стека за рангирање дизајниран је да искористи богати сигнал који производе милиони корисничких захтјева које опслужујемо сваког сата у дану. Велика већина овог сигнала је аутоматизована, при чему сваки генерисани Perplexity одговор пружа емпиријску тачку података о квалитету претраге која се користи у току рада са активним агентима. Комбинујемо евалуације вођене вјештачком интелигенцијом са повратним информацијама живих људи како бисмо обогатили податке за обуку за наше моделе уградње и рангирања далеко изнад онога што било који ручно конструисан скуп података може понудити.

Ова синергија између претраге и производа је јединствена за Perplexity. Стари претраживачи су ограничени на груби сигнал који пружа телеметрија плавих веза. Нове понуде претраге покушавају да имплементирају неке од ових концепата усмјерених на вјештачку интелигенцију, али им недостају окружења из стварног свијета која могу да потврде квалитет претраге и обезбеде богатство сигнала потребног за петље брзог усавршавања. Срећни смо што имамо састојку који недостаје: пробно тгло уживо за квалитет претраге, покретано границама LLM модела и континуирано тестирано у борби од стране милиона радозналих корисника широм свијета.

Успостављање нове границе за квалитет и перформансе

Након изградње Perplexity Search API-ја и SDK-ја како бисмо нашу инфраструктуру за претрагу учинили доступном програмерима широм свијета, жељели смо да разумијемо како се различите понуде комерцијалних API-ја показују у случајевима употребе AI-ја у стварном свијету. Постало је уобичајено евалуирати саме AI моделе, али нам је био потребан преокрет на овај образац: да евалуирамо квалитет API-ја за претрагу када их позову AI модели.

Прво смо се окренули екосистему отвореног кода да разумијемо претходне радове. Нашли смо многе кључне састојке за ригорозну евалуацију, али ниједан оквир који је интегрисао ове састојке у рјешење за упоређивање спремно за употребу. Стога смо кренули да развијемо оквир за евалуацију који не би могао да користи само Perplexity, већ и било који истраживач или програмер који жели да упореди API-је за претрагу.

Користећи овај оквир за евалуацију, ригорозно смо упоредили Perplexity Search API заједно са другим понудама. Оптимизација перформанси претраге је сложена, са многим нијансираним компромисима између квалитета и брзине. У побједи за програмере, утврдили смо да Perplexity Search API поставља нови стандард за најсавременије перформансе како за квалитет тако и за кашњење. Програмери више не морају да бирају између изградње ултрабрзих апликација и осигуравања резултата високог квалитета: са Perplexity-јем могу имати обоје.

Квалитет претраге у односу на кашњење на SimpleQA, FRAMES, BrowseComp и HLE.

Пројектовање поузданих евалуација за токове рада агента претраге

Почели смо дефинисањем три водећа принципа за наш оквир евалуације:

Спектар сложености: оквир за евалуацију треба да мјери перформансе на једноставним и сложеним случајевима употребе AI агента.

Неутралност: оквир за евалуацију треба да процијени све API-је под истим условима.

Једноставност: иако одређени случајеви употребе могу бити сложени, сам оквир треба да буде што је могуће једноставнији како би га други могли разумијети, репродуковати резултате и проширити оквир уз минимални замор.

Наш лагани оквир за евалуацију, search_evals, постиже ове циљеве кроз једноставан модуларни дизајн. Развили смо два уређаја за AI агенте да ухватимо и класичне случајеве претраге у једном покушају и напредне токове рада агента (иллустроване разним производима „дубинског истраживања“ који су широко доступни на потрошачком тржишту). Оба уређаја су имплементирана на једноставан начин који оставља мало простора за скривену предност.

Да покренемо наше евалуације, усвојили смо четири мјерила: SimpleQA и FRAMES за претрагу у једном кораку, заједно са BrowseComp и HLE за дубинско истраживање. Заједно, ова мјерила пружају добро прихваћене мјере за агенте знања. Пратећи утврђену конвенцију, оцјењујемо све референтне вриједности користећи исту методологију класификатора са упитама која је коришћена у оригиналном раду. Прецизне имплементације мјерила (укључујући логику оцјењивача) могу се погледати у нашем GitHub репоу.

Дизајнирали смо оквир имајући на уму поновљивост и проширивост. И резултати на нивоу задатка и основни излази агента чувају се са сваким покретањем. Додатни уређаји, мјерила и понуде API-ја за претрагу могу се лако интегрисати. Истраживачи и програмери могу прочитати наше GitHub документе за више информација о проширивању оквира како би се ријешиле ваше прецизне потребе.

Резултати евалуације

Наоружани овим оквиром за евалуацију, кренули смо да процијенимо наш Search API у поређењу са другим API понудама. Кроз све тестиране бенчмаркове, Perplexity се истиче као најбржи и најквалитетнији API на тржишту.

Кашњење упита на p50, p75 и p95 перцентилу међу провајдерима претраге.

Утврдили смо да су се наша горе описана улагања у индекс, проналажење и ефикасност рангирања богато исплатила. Медијана кашњења Perplexity-ја износи 358ms, више од 150ms испред другог најбржег добављача. Кашњење у 95. перцентилу остаје удобно испод 800ms. Са дугим Метрикама TTFT (времена до првог токена) данашњих модела граница, свака милисекунда је важна у стварању пријатних корисничких искустава. Провели смо протекле двије године оптимизујући кашњење за наше сопствене кориснике и захвални смо што ће та иста улагања сада користити и заједници програмера.

Кашњење Search API-ја

(захтјеви покренути из AWS us-east-1)

p50

p75

p90

p95

Perplexity

358ms

443ms

604ms

763ms

Exa

1375ms

1499ms

1798ms

2188ms

Brave

513ms

637ms

728ms

808ms

Засновано на SERP-у*

1342ms

1586ms

1743ms

1790ms

Перцентили кашњења Search API за захтјеве покренуте из AWS us-east-1.

* Многи добављачи API-ја за претрагу користе стругање SERP-а као основу за своје резултате. Да бисмо ухватили перформансе таквих приступа, користимо репрезентативни API заснован на Google SERP-у који нуди Tavily.

Ова предност у брзини не долази на рачун квалитета. Perplexity Search API даје најсавременије перформансе и у поставкама претраге у једном кораку и дубинског истраживања. На сваком тестираном бенчмарку, Perplexity води у пружању резултата високог квалитета који могу покретати AI токове рада различите сложености. Маргина између Perplexity-ја и најбоље алтернативе посебно је изражена на SimpleQA и HLE, што указује на то да су ови резултати робусни широм спектра сложености задатака.

Оцјене квалитета претраге на једнокорачним бенчмарковима претраге SimpleQA и FRAMES и на бенчмарковима дубинског истраживања BrowseComp и HLE.

Као и код кашњења, наше лидерство у квалитету претраге произилази из нашег лидерства у изградњи дивних, високо посјећених AI производа. Наши милиони корисника користе Perplexity да задовоље своју радозналост о свакој замисливој теми, а настали сигнали квалитета и релевантности омогућавају нашим моделима претраге да се побољшавају са количином протеклих сати.

Мјерила квалитета Search API-ја

Претрага у једном кораку

Дубинско истраживање

SimpleQA

FRAMES

BrowseComp

HLE

Perplexity

.930

.453

.371

.288

Exa

.781

.399

.265

.242

Brave

.822

.320

.221

.191

Засновано на SERP-у*

.890

.437

.348

.248

Оцјене квалитета Search API-ја на SimpleQA, FRAMES, BrowseComp и HLE.

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

Грађевенски блок за сљедеће поглавље AI-ја

Будућност система агента и интелигентних помоћника зависиће од доступности богатих програмских интерфејса у колективно знање свијета. Данашњи стари претраживачи су засићени по употреби са отприлике 10¹⁰ упита дневно, цифра која је вјероватно достигла врхунац. Сљедећа генерација система претраге и проналажења опслуживаће много више захтјева, јер се све већи универзум AI агената ослања на њих за тачне информације у стварном времену.

Наши напори до данас су нас позиционирали као најбржи, најперформативнији претраживач доступан путем API-ја. Али још амбициозније иновације биће потребне да подстакнемо сљедеће поглавље AI-ја. Како ефикасно скалирамо ове системе суочени са све већом потражњом? Како ови системи претраге могу бити оптимизовани у свјетлу нових приступа инжењерству контекста и пост-обуци? И како управљамо свеприсутном тензијом између потпуности, новине и кашњења? Ово су отворена питања која Perplexity, са нашом комбинацијом отиска производа, скале и техничког талента, јединствено позициониран да рјешава.

Цитат

BibTeX
@online{perplexity2025ArchitectingAndEvaluatingAnAiFirstSearchApi,
  author = {{Perplexity} and Aleksandr Bogutskii and Aleksandr Nikolenko and Aleksei Bykov and Alexander Pecheny and Alexandr Yarats and Arsenii Shevchenko and Denis Bykov and Dmitry Pervukhin and Ismail Gadzhiev and James Liounis and Kevin Hu and Kirill Priemko and Maksim Gaiduk and Maksim Morozov and Marko Kevac and Michael Liang and Mikhail Galanin and Nandor Licker and Nataliya Pevgova and Nikita Kireev and Nikolai Tretiak and Paul Schofield and Saif Ali Raja and Saleh Alghusson and Sebastian Sepulveda and Sergei Miller and Svyatoslav Feldsherov and Vitalii Polshkov and Vladimir Zaytsev and Denis Yarats},
  title = {{Architecting and evaluating an AI-first Search API}},
  date = {2025-09-25},
  url = {https://www.perplexity.ai/hub/blog/architecting-and-evaluating-an-ai-first-search-api}
}