Arkitektur och utvärdering av ett AI-först sök-API

Bygga ett skalbart sök-API som hanterar 200 miljoner dagliga sökfrågor med hybridhämtning och intelligent kontextkuratering för AI-modeller

FörfattarePerplexity Research

Att bygga ett skalbart, AI-fokuserat sök-API innebär unika forskningsutmaningar i skärningspunkten mellan informationssökning, AI och systemdesign. Till skillnad från traditionella tjänster som hanterar avgränsad data måste ett sök-API kontinuerligt indexera miljarder dokument, förstå avsikten med sökfrågor på olika språk och i olika domäner samt presentera relevanta resultat inom millisekunder. I en värld av AI-agenter måste ett sök-API också noggrant kuratera den kontext som tillhandahålls utvecklarnas modeller för att säkerställa att modellerna presterar optimalt och integrerar maximalt korrekt information. Effektiv kontextteknik kräver att API:et inte bara fångar in relevans på dokumentnivå, utan även behandlar enskilda sektioner och spann i dokument som förstklassiga enheter i sin egen rätt.

I den här artikeln presenterar vi designen och utvärderingen av Perplexity Search API. Vi utforskar först arkitekturen och de nyckeltekniska besluten bakom vår produktionssökarkitektur som hanterar 200 miljoner dagliga sökfrågor. Vår arkitektur kombinerar hybrida sökmetoder, rankningspipelines i flera steg, distribuerad indexering och dynamisk parsning via en självfÖrbättrande modul för innehållsförståelse.

Vi beskriver sedan vår metod för att empiriskt utvärdera sök-API:ets prestanda genom ett nyligen öppenkällkodat utvärderingsramverk. Genom omfattande jämförelser vid sidan av befintliga kommersiella API:er demonstrerar vi banbrytande prestanda vad gäller både kvalitet och latens. Perplexity Search API är tillgängligt för utvecklare över hela världen från och med idag.

[Hitta search_evals på GitHub]

Att bygga ett söksystem optimerat för AI-modeller

Sedan vår grundläggning förstod vi att robusta sökfunktioner skulle vara avgörande för att möjliggöra de kategoridefinierande AI-produkter vi ville lansera. Ursprungligen hoppades vi att dessa funktioner redan fanns i en publikt tillgänglig form. Vi experimenterade med portföljen av sök-API:er som fanns tillgängliga i slutet av 2022, och den allra första versionen av Perplexitys svarstjänst inkorporerade faktiskt några av dessa erbjudanden. Närmare bestämt analyserade vi användarnas sökfrågor, formulerade och skickade förfrågningar till dessa API:er och samlade in resultaten som kontext för vår efterföljande genereringspipeline.

När användarna dock strömmade till Perplexity insåg vi snabbt att dessa API:er inte skulle kunna skalas upp i takt med vår tillväxt. Priserna vi stötte på var exorbitanta, där en ledande API-leverantör tog 200 dollar per tusen sökfrågor. Men ännu mer ödesdigert var att dessa äldre API:er helt enkelt inte var designade för de nya hämtningsparadigm som introducerades av banbrytande AI-system.

En av de tidigaste versionerna av Perplexitys svarstjänst.

Till att börja med var förfrågnings- och svarsformaten för dessa äldre API:er utformade för en värld där människor skulle vara de exklusiva konsumenterna av sökresultat. Som ett resultat av detta prioriterade dessa API:er resultat på dokumentnivå, exklusive mer finkornig information som avslöjas av underliggande dokumentenheter. En AI-modells framgång beror på kvaliteten och kompaktheten hos den tillhandahållna kontexten, och vi såg på första hand hur alltför bred hämtning kunde spåra ur AI-modeller, oavsett hur relevanta de hämtade dokumenten som helhet kunde verka. Våra försök att tvinga fram precision på oprecisa resultat möttes av begränsad framgång.

Vi observerade också att de äldre API:erna var antingen för föråldrade eller för långsamma. Oberoende utvecklade sök-API:er förlitade sig på index som var ofullständiga och uppdaterades alltför sällan. Skrapningsbaserade API:er, såsom de olika inofficiella SERP-API:erna för Google Search, gynnades av ett mer heltäckande index men erbjöd oacceptabelt hög latens på grund av den ineffektivitet som är ärftlig för att fråga en tredjepartssökmotor. Hög latens gjorde API:erna olämpliga för användarvända applikationer, medan föråldring gjorde resultatuppsättningarna oanvändbara för alla AI-system som hoppades vara korrekta och tillförlitliga.

Slutligen såg vi hur AI-ekosystemet delades upp mellan lexikal sökning och semantisk sökning, där system dök upp som var överoptimerade för den ena modaliteten framför den andra. Vi såg framväxten av vektordatabaser som inte ens kunde stödja enkla booleska filter på ett adekvat sätt. Traditionella sökbackend-system presterade inte mycket bättre, med primitivt stöd för de möjligheter till semantisk rankning och sökning som låsts upp av AI.

När vi insåg att det skulle krävas en egen dedikerad sökarkitektur för att göra Perplexity ännu bättre, destillerade vi våra observationer till tre nyckelkriterier:

Fullständighet, aktualitet och hastighet: sökindexet måste vara heltäckande, ständigt uppdaterat och konstruerat för realtidslatens.

Finkornig innehållsförståelse: AI-modellens skörhet och begränsade kontextfönster kräver att sökresultat presenteras och rankas på den mest granulära nivån som är möjlig.

Hybridhämtning och rankning: både hämtnings- och rankningspipelines måste integrera lexikala och semantiska signaler för att resultaten ska vara användbara för AI.

Perplexity idag, som drivs av vår sökarkitektur i internetskala som nu är tillgänglig via Perplexity Search API.

Infrastruktur för webbindexering och webbcrawlning

Att verka i Perplexitys skala kräver infrastruktur som heltäckande kan kartlägga webben och svara på dess ständiga utveckling. Vårt sökindex spårar över 200 miljarder unika URL:er, med kapacitet att spåra många hundratals miljarder till.

Att säkerställa att vårt index täcker en tillräckligt omfattande del av internet och att varje dokument återspeglar det senaste tillståndet är en svår bedrift. Det finns en inbyggd spänning mellan fullständighet och aktualitet: för en fast indexeringsbudget måste uppdateringsåtgärder för befintliga sidor konkurrera med indexeringsåtgärder för nya, osettade sidor. Vi balanserar denna spänning genom en kombination av skalning (vilket mildrar optimeringsbegränsningen genom att öka indexeringsbudgeten) och ML-driven prioritering (vilket säkerställer att varje indexeringsåtgärd är maximalt värdefull för indexet som helhet).

Vi har byggt ett index- och crawler-apparat i exabyteskala som skalas horisontellt med både storlek och förfrågningsvolym. Perplexitys crawler- och indexeringsflottor omfattar kollektivt tiotusentals CPU:er och hundratals terabyte RAM, med avsevärt utrymme för ytterligare skalning. Vi gifter samman denna beräkningsinfrastruktur med en balans mellan kall och varm lagring. Vi använder både inlärda modeller och finjusterade heuristiker för att fastställa vilka dokument som bör hållas varma, där vi prioriterar dokument från auktoritativa domäner, dokument som rör mindre täckta ämnen och andra kategorier med oproportionerlig potential att berika vårt index.

Denna infrastruktur gör det möjligt för Perplexity att bearbeta tiotusentals indexeringsåtgärder per sekund. Men även med denna relativt generösa budget är internet i en allt för stor skala för att indexera varje enskild URL på en frekvent och återkommande basis. Det är här maskininlärning kommer in i bilden. Vi tränar en maskininlärningsmodell för att förutsäga om en given kandidat-URL behöver indexeras. Träningsmålet är utformat för att säkerställa att vi kalibrerar vårt indexeringsbeslut efter både vikten och den sannolika uppdateringsfrekvensen för den specifika URL:en. Vi förlitar oss också på maskininlärning för att tala om för oss exakt när vi ska schemalägga indexeringsåtgärden. För webbplatser med rutiner för publicering och uppdatering gör detta att vi kan skjuta upp åtgärder till den tidpunkt då de sannolikt är till störst nytta. Genom ständiga förbättringar av dessa maskininlärningsmodeller kan vi upprätthålla ett index som lever upp till målen för både fullständighet och aktualitet.

Även om vår crawler-infrastruktur enkelt skalas horisontellt är vi medvetna om att webbplatsoperatörer möter olika tekniska begränsningar. Vi är noga med att upprätthålla en förutsägbar och hanterbar frekvens av förfrågningar till en given domän. PerplexityBot, vår sökcrawler, följer uttryckliga gränser som anges i robots.txt-filer, eller i frånvaro av domänspecifika gränser, branschstandardnormer avseende förfrågningsfrekvenser. Vi justerar också vårt crawler-beteende när vi upptäcker att en webbplats är otillgänglig. Vårt distribuerade system är arkitektoniskt utformat för att upprätthålla dessa gränser även över tiotusentals samtidiga åtgärder.

Självförbättrande innehållsförståelse i internetskala

Även med ett av planetens största och färskaste sökindex hänger resultatvaliteten för varje sökfråga på att vårt system förstår innehållet i varje dokument. Här ställs vi inför en grundläggande utmaning: webben är en rörig plats. Ingen fast uppsättning parsningsregler kan hantera den oändliga variationen av layouter, strukturer och stilar som finns på hela internet.

Vi löste denna utmaning genom att utveckla en innehållsförståelsemodul som tolkar webbplatser och extraherar semantiskt meningsfullt innehåll med hjälp av dynamiska regeluppsättningar. En webbplats med mycket välstrukturerad data i list- eller tabellform kan dra nytta av mer formelstyrda parsnings- och extraktionsregler, medan en annan webbplats som främst innehåller fritt användargenererat innehåll kan kräva en lösare regeluppsättning. Eftersom webben till största del är statisk över korta tidsramar märker vi att livslängden för en given regel är relativt lång. Men i takt med att webbplatser utvecklas över tid och vi lär oss mer om de bästa sätten att extrahera information kräver våra regeluppsättningar också kontinuerligt underhåll.

För att underlätta denna dynamiska anpassning vänder vi oss (såklart) till AI. I Perplexitys skala observerar vi ett otroligt rikt tvärsnitt av webben under vår hantering av miljontals användarförfrågningar varje timme. Detta lägger grunden för en iterativ självförbättringssloop. Vi observerar parsningsbeteendet och de extraherade resultaten för våra nuvarande regeluppsättningar i hela vårt frågeuniversum. Vi använder sedan banbrytande språkmodeller (LLM) för att utvärdera prestandan utifrån två primära dimensioner:

Fullständighet: vårt index bör ta emot så mycket semantiskt meningsfullt innehåll som möjligt, samtidigt som vi undviker att opåkallat extrahera oinformativt eller nonsensartat material.

Kvalitet: vårt index förlitar sig på innehåll som håller hög kvalitet i både substans och form. Information bör samlas in på ett sätt som bevarar det ursprungliga innehållets struktur och layout.

Observera att fullständighet och kvalitet utgör en annan inbyggd spänning: det är möjligt att manuellt optimera för kvalitet, men de resulterande parsningsreglerna kanske inte fångar upp kritisk information. På samma sätt kan vi koda tillåtande regler som tillämpar minimal filtrering på råinnehållet, vilket kan förbättra fullständigheten men på bekostnad av kvaliteten. Det är därför vi vänder oss till AI-driven självförbättring för att utveckla vår regeluppsättning på ett sätt som kan optimera för båda samtidigt på ett domänanpassat sätt.

Konkreta åtgärder efter varje LLM-driven bedömning av parsningsprestanda innebär att vårt system formulerar en uppsättning föreslagna ändringar av regeluppsättningen för att hantera de mest betydande felklasserna. Dessa regeluppsättningar genomgår ytterligare validering, varefter vi distribuerar den nya versionen till vår indexerare. Med tanke på att förbättringar i parsning- och extraktionslogik enbart kan gynna framtida indexeringsåtgärder är våra investeringar i ML-optimerad omindexering särskilt viktiga: att kontinuerligt uppdatera dokument med hög trafik med den senaste versionen av denna logik säkerställer en tät självförbättringssloop.

Dessa regler har betydelse inte bara för grundläggande parsningsprestanda utan också för uppdelning i underdokumentenheter. När det gäller banbrytande LLM-modeller är varje kontexttoken dyrbar. En stor mängd tidigare arbete har dokumenterat hur LLM-prestandan försämras med ökningar i kontextstorlek och förorening av kontext med irrelevant information. Att ha en välstrukturerad och heltäckande parsning gör att vi kan sönderdela dokument i självständiga spann, som vart och ett kan hämtas och rankas individuellt vid sökningstillfället.

Hämtnings- och rankningspipeline

Modern sökning kräver att både fullständighet och relevans säkerställs inom en snäv latensbudget. Perplexitys hämtnings- och rankningspipeline uppnår detta genom en arkitektur i flera steg som successivt förfinar resultat med en serie allt mer sofistikerade moduler. Vi löser potentiella flaskhalsar genom att horisontellt skala alla eventuella trånga pass till maximalaste möjliga mån.

Pipelinen börjar med hämtning från vårt index. Vi tvingar inte fram ett val mellan lexikal och semantiskt sökning. Istället frågar vi sökindexet via båda modaliteterna och slår samman resultaten till en hybrid kandidatuppsättning. I detta skede är prioriteten att uppnå omfattning snarare än precision - efterföljande steg i pipelinen kommer att optimera för precision.

Pipelinen fortsätter med förfiltreringssteg, där vi tillämpar grundläggande heuristiker och första gallringsfilter för att ta bort uppenbart icke-responsivt eller föråldrat innehåll från kandidatuppsättningen.

Vi använder sedan flera steg av progressivt avancerad rankning. Tidigare steg förlitar sig på lexikala och inbäddningsbaserade poängsättare som är optimerade för hastighet. I takt med att kandidatuppsättningen gradvis gallras ut använder vi mer kraftfulla tvärkodande omrankningsmodeller för att utföra den slutliga formningen av resultatuppsättningen. Tack vare våra många investeringar i inferensprestanda kan vi utnyttja banbrytande modellarkitekturer för dessa senare steg samtidigt som vi håller den totala rankningslatensen låg.

Under hela denna pipeline hämtar och poängsätter vi resultat på både dokument- och underdokumentsnivå. Som diskuterats ovan kräver AI noggrann kontextteknik. Vår pipeline är utformad för att exponera de mest atomära enheterna som möjligt för modellen, så att nedströms konsumenter kan integrera just dessa enheter utan att dra in irrelevant kontext från andra ställen i källdokumenten.

Att säkerställa hög kvalitet i varje skede av denna pipeline är endast möjligt genom samexistens och samdesign med Perplexitys produktportfölj. Varje detalj i rankningsstaketet är utformad för att utnyttja de rika signaler som produceras av de miljontals användarförfrågningar vi hanterar varje timme på dygnet. Den stora majoriteten av dessa signaler är automatiserade, där varje genererat Perplexity-svar ger en empirisk datapunkt om sökvalitet som används i ett levande agentbaserat arbetsflöde. Vi kombinerar AI-drivna utvärderingar med levande mänsklig feedback för att berika träningsdata för våra inbäddnings- och rankningsmodeller långt bortom vad någon manuellt konstruerad datamängd kan erbjuda.

Denna synergi mellan sökning och produkt är unik för Perplexity. Äldre sökmotorer är begränsade till de grova signaler som tillhandahålls av telemetri för blå länkar. Nyare sökutbud har försökt implementera några av dessa AI-framåtblickande koncept, men de saknar verkliga miljöer som kan validera sökvalitet och tillhandahålla den signalrikedom som krävs för snabba förbättringssloopar. Vi har turen att ha den saknade ingrediensen: en levande testbänk för sökvalitet, som drivs av banbrytande LLM-modeller och ständigt stridstestas av miljontals nyfikna användare över hela världen.

Etablera en ny gräns för kvalitet och prestanda

Efter att ha byggt Perplexity Search API och SDK för att göra vår sökinfrastruktur tillgänglig för utvecklare över hela världen ville vi förstå hur de olika kommersiella API-erbjudandena stod sig i verkliga AI-användningsfall. Det har blivit vanligt att utvärdera själva AI-modellerna, men vi behövde en tvist på detta mönster: att utvärdera kvaliteten på sök-API:er när de anropas av AI-modeller.

Vi tittade först på ekosystemet med öppen källkod för att förstå det tidigare arbetet. Vi fann många av de viktigaste ingredienserna för rigorös utvärdering, men inget ramverk som integrerade dessa ingredienser i en färdig och plug-and-play-kompatibel benchmarklösning. Vi satte därför igång med att utveckla ett utvärderingsramverk som kunde användas inte bara av Perplexity, utan av alla forskare eller utvecklare som vill utvärdera sök-API:er.

Med hjälp av detta utvärderingsramverk jämförde vi noggrant Perplexity Search API med andra erbjudanden. Att optimera sökprestanda är komplext, med många nyanserade avvägningar mellan kvalitet och hastighet. I en vinst för utvecklare fann vi att Perplexity Search API sätter en ny standard för topprestanda för både kvalitet och latens. Utvecklare behöver inte längre välja mellan att bygga blixtsnabba applikationer och att säkerställa resultat av hög kvalitet: med Perplexity kan de få båda delarna.

Sökkvalitet kontra latens på SimpleQA, FRAMES, BrowseComp och HLE.

Designa tillförlitliga utvärderingar för agentbaserade sökarbetsflöden

Vi började med att definiera tre vägledande principer för vårt utvärderingsramverk:

Komplexitetsspektrum: utvärderingsramverk bör mäta prestanda för både enkla och komplexa agentbaserade AI-användningsfall.

Neutralitet: utvärderingsramverket bör utvärdera alla API:er på lika villkor.

Enkelhet: även om vissa användningsfall kan vara komplexa bör själva ramverket vara så enkelt som möjligt så att andra kan förstå det, reproducera resultaten och utöka ramverket med minimalt besvär.

Vårt lätta utvärderingsramverk, search_evals, uppnår dessa mål genom en enkel modulär design. Vi utvecklade två AI-agentmoduler för att fånga upp både klassiska enskotts-sökfall och avancerade agentbaserade arbetsflöden (exemplifierade av olika "djupgående forskning"-produkter som är brett tillgängliga på konsumentmarknaden). Båda modulerna implementerades på ett okomplicerat sätt som lämnar lite utrymme för dolda fördelar.

För att driva våra utvärderingar antog vi fyra riktmärken: SimpleQA och FRAMES för enstegsökning, tillsammans med BrowseComp och HLE för djupgående forskning. Tillsammans tillhandahåller dessa riktmärken välkomnade måttstockar för kunskapsagenter. I enlighet med etablerad konvention betygsätter vi alla riktmärken med samma promptade klassificeringsmetod som användes i det ursprungliga arbetet. De exakta benchmark-implementeringarna (inklusive bedömarlogik) kan granskas i vårt GitHub-repo.

Vi designade ramverket med reproducerbarhet och utökbarhet i åtanke. Både poängen på uppgiftsnivå och de underliggande agentutdata lagras för varje körning. Ytterligare moduler, riktmärken och sök-API-erbjudanden kan enkelt integreras. Forskare och utvecklare kan läsa våra GitHub-dokument för mer information om hur man utökar ramverket för att möta era specifika behov.

Utvärderingsresultat

Beväpnade med detta utvärderingsramverk satte vi oss för att utvärdera vår Search API i jämförelse med andra API-erbjudanden. Över alla testade riktmärken står Perplexity som både det snabbaste och högsta kvalitets-API:et på marknaden.

Frågelatens vid percentilerna p50, p75 och p95 över sökleverantörer.

Vi fann att våra tidigare beskrivna investeringar i index-, hämtnings- och rankningseffektivitet lönade sig rikligt. Perplexitys medianlatens ligger på 358 ms, över 150 ms före den näst snabbaste leverantören. Latensen för den 95:e percentilen stannar bekvämt under 800 ms. Med de långa TTFT-måtten (tid till första token) hos dagens banbrytande modeller spelar varje millisecond roll för att skapa underbara användarupplevelser. Vi har tillbringat de senaste två åren med att optimera latensen för våra egna användare, och vi är glada över att samma investeringar nu kommer att gynna även utvecklarcommunityt.

Latens för Search API

(förfrågningar initierade från AWS us-east-1)

p50

p75

p90

p95

Perplexity

358 ms

443 ms

604 ms

763 ms

Exa

1375 ms

1499 ms

1798 ms

2188 ms

Brave

513 ms

637 ms

728 ms

808 ms

SERP-baserad*

1342 ms

1586 ms

1743 ms

1790 ms

Söklatenspercentiler för förfrågningar initierade från AWS us-east-1.

* Många leverantörer av sök-API:er använder SERP-skrapning som grund för sina resultat. För att fånga prestandan för sådana tillvägagångssätt använder vi ett representativt Google SERP-baserat API som erbjuds av Tavily.

Denna hastighetsfördel sker inte på bekostnad av kvaliteten. Perplexity Search API ger toppmodern prestanda i både enstegsökning och miljöer för djupgående forskning. På varje testat riktmärke leder Perplexity i att tillhandahålla resultat av hög kvalitet som kan driva AI-arbetsflöden med varierande komplexitet. Marginalen mellan Perplexity och det bästa alternativet är särskilt påtaglig för SimpleQA och HLE, vilket indikerar att dessa resultat är robusta över hela spektrumet av uppgiftskomplexitet.

Sökkvalitetspoäng på de stegvisa sök-benchmarkerna SimpleQA och FRAMES samt de djupgående forsknings-benchmarkerna BrowseComp och HLE.

Precis som med latensen kommer vår ledande position inom sökvalitet som en naturlig följd av vår ledande ställning när det gäller att bygga underbara, mycket besökta AI-produkter. Våra miljontals användare använder Perplexity för att stilla sin nyfikenhet i alla tänkbara ämnen, och de resulterande kvalitets- och relevanssignalerna gör att våra sökmodeller kan förbättras för varje timme som går.

Kvalitetsriktmärken för Search API

Enstegsökning

Djupgående forskning

SimpleQA

FRAMES

BrowseComp

HLE

Perplexity

,930

,453

,371

,288

Exa

,781

,399

,265

,242

Brave

,822

,320

,221

,191

SERP-baserad*

,890

,437

,348

,248

Sök-API:ets kvalitetspoäng på SimpleQA, FRAMES, BrowseComp och HLE.

Vi befinner oss fortfarande i ett tidigt skede för AI-inbyggda sökmotorer, och konsten och vetenskapen kring mätning kommer utan tvekan att utvecklas. Vi bjuder in communityt att bidra genom att utveckla rigorösa och kreativa metoder för att utvärdera sökmotorer i AI-agenternas tidsålder.

Byggstenen för AI:s nästa kapitel

Framtiden för agentbaserade system och intelligenta assistenter kommer att bero på tillgången till rika programmeringsgränssnitt till världens kollektiva kunskap. Dagens äldre sökmotorer har mättats i användning vid ungefär 10¹⁰ sökfrågor per dag, en siffra som troligen har nått sin topp. Nästa generations sök- och hämtningssystem kommer att betjäna storleksordningar fler förfrågningar, eftersom ett ständigt växande universum av AI-agenter förlitar sig på dem för korrekt realtidsinformation.

Våra insatser hittills har positionerat oss som den snabbaste, mest prestandastarka sökmotorn som är tillgänglig via API. Men ännu mer ambitiös innovation kommer att krävas för att vi ska kunna driva AI:s nästa kapitel. Hur skalar vi effektivt dessa system inför en ständigt ökande efterfrågan? Hur kan dessa sökmotorer optimeras i ljuset av nya metoder för kontextteknik och efterträning? Och hur navigerar vi i den ständigt närvarande spänningen mellan fullständighet, färskhet och latens? Detta är öppna frågor som Perplexity, med vår kombination av produktfotavtryck, skala och teknisk talang, är unikt rustat för att tackla.

Citering

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}
}