Arquitetando e avaliando uma Search API voltada para IA
Como construir uma Search API escalável que processa 200 milhões de consultas diárias usando recuperação híbrida e curadoria inteligente de contexto para modelos de IA
A construção de uma Search API escalável e voltada para IA apresenta desafios de pesquisa únicos na interseção entre recuperação de informações, IA e design de sistemas. Ao contrário dos serviços tradicionais que operam com dados delimitados, uma API de pesquisa deve indexar continuamente bilhões de documentos, entender a intenção de consultas em vários idiomas e domínios, e apresentar resultados relevantes em poucos milissegundos. Em um mundo de agentes de IA, uma API de pesquisa também deve fazer a curadoria cuidadosa do contexto fornecido aos modelos dos desenvolvedores para garantir que esses modelos tenham um desempenho ideal e incorporem informações com a máxima precisão. A engenharia de contexto eficaz exige que a API não apenas capture a relevância em nível de documento, mas trate as seções e trechos individuais dos documentos como unidades de primeira classe por direito próprio.
Neste artigo, apresentamos o design e a avaliação da Perplexity Search API. Primeiro, exploramos a arquitetura e as principais decisões técnicas por trás da nossa infraestrutura de pesquisa de produção, que processa 200 milhões de consultas diárias. Nossa arquitetura combina mecanismos de recuperação híbridos, pipelines de classificação em vários estágios, indexação distribuída e análise dinâmica por meio de um módulo de compreensão de conteúdo que se autoaperfeiçoa.
Em seguida, descrevemos nossa abordagem para avaliar empiricamente o desempenho da API de pesquisa por meio de uma estrutura de avaliação recém-com código aberto. Por meio de benchmarking abrangente juntamente com APIs comerciais existentes, demonstramos desempenho de ponta em qualidade e latência. A Perplexity Search API está disponível para desenvolvedores em todo o mundo a partir de hoje.
[Encontre o search_evals no GitHub]
Construindo um sistema de pesquisa otimizado para modelos de IA
Desde a nossa fundação, entendemos que recursos de pesquisa robustos seriam fundamentais para viabilizar os produtos de IA definidores de categoria que queríamos lançar. Originalmente, esperávamos que esses recursos já existissem em uma forma publicamente disponível. Experimentamos o portfólio de APIs de pesquisa disponíveis no final de 2022, e a primeira versão do mecanismo de resposta da Perplexity incorporou algumas dessas ofertas. Especificamente, analisávamos as consultas dos usuários, formulávamos e enviávamos solicitações para essas APIs e coletávamos os resultados como contexto para o nosso pipeline de geração subsequente.
No entanto, à medida que os usuários afluíram ao Perplexity, percebemos rapidamente que essas APIs não acompanhariam nosso crescimento. Os preços que encontramos eram exorbitantes, com um provedor líder de API cobrando US$ 200 por mil consultas. Mas, de forma mais fatal, essas APIs legadas simplesmente não foram desenhadas para os novos paradigmas de recuperação introduzidos por sistemas de IA de ponta.
Para começar, os formatos de solicitação e resposta dessas APIs legadas foram projetados para um mundo em que os humanos seriam os consumidores exclusivos dos resultados de pesquisa. Como resultado, essas APIs priorizavam resultados em nível de documento, em detrimento de informações mais granulares reveladas por unidades subdocumentais. O sucesso de um modelo de IA depende da qualidade e da compacidade do contexto fornecido, e vimos em primeira mão como uma recuperação excessivamente ampla poderia desviar modelos de IA, independentemente de quão relevantes os documentos recuperados como um todo pudessem parecer. Nossas tentativas de forçar precisão em resultados imprecisos tiveram sucesso limitado.
Também observamos que as APIs legadas eram antiquadas ou lentas demais. As APIs de pesquisa desenvolvidas de forma independente dependiam de índices incompletos e atualizados com pouca frequência. As APIs baseadas em raspagem (scraping), como as várias APIs SERP não oficiais para a Pesquisa Google, beneficiavam-se de um índice mais abrangente, mas ofereciam uma latência inaceitavelmente alta devido àineficiência inerente de consultar um mecanismo de pesquisa de terceiros. A alta latência tornava as APIs inadequadas para aplicativos voltados para o usuário, enquanto a defasagem tornava os conjuntos de resultados inutilizáveis para qualquer sistema de IA que esperasse ser preciso e confiável.
Por fim, observamos o ecossistema de IA se bifurcar entre pesquisa lexical e pesquisa semântica, com o surgimento de sistemas excessivamente otimizados para uma modalidade em detrimento da outra. Vimos o surgimento de bancos de dados vetoriais que não conseguiam dar suporte adequado nem mesmo a filtros booleanos simples. Backends de pesquisa tradicionais saíram-se pouco melhores, com suporte primitivo às oportunidades de classificação semântica e recuperação desbloqueadas pela IA.
Ao percebermos que tornar a Perplexity ainda melhor exigiria a construção de nossa própria infraestrutura de pesquisa dedicada, sintetizamos nossas observações em três critérios principais:
Completude, atualização e velocidade: o índice de pesquisa deve ser abrangente, constantemente atualizado e projetado para latência em tempo real.
Compreensão de conteúdo de granulação fina: a fragilidade do modelo de IA e as janelas de contexto limitadas exigem que os resultados da pesquisa sejam apresentados e classificados no nível mais granular possível.
Recuperação e classificação híbridas: tanto os pipelines de recuperação quanto os de classificação devem incorporar sinais lexicais e semânticos para que os resultados sejam úteis para a IA.
Infraestrutura de rastreamento e indexação
Operar na escala da Perplexity requer infraestrutura capaz de mapear a web de forma abrangente e responder à sua evolução constante. Nosso índice de pesquisa rastreia mais de 200 bilhões de URLs exclusivas, com capacidade para rastrear muitas centenas de bilhões a mais.
Garantir que nosso índice cubra uma parcela suficientemente abrangente da internet e que cada documento reflita o estado mais recente é um feito difícil. Existe uma tensão inerente entre completude e atualização: para um orçamento de indexação fixo, as operações de atualização para páginas existentes devem competir com as operações de indexação para novas páginas não visitadas. Equilibramos essa tensão por meio de uma combinação de dimensionamento (que suaviza a restrição de otimização ao aumentar o orçamento de indexação) e priorização orientada por aprendizado de máquina (ML) (o que garante que cada operação de indexação seja o mais valiosa possível para o índice como um todo).
Construímos um índice e um aparato de rastreamento em escala de exabytes que escalam horizontalmente tanto com o tamanho quanto com o volume de consultas. Os crawlers e as frotas de indexação da Perplexity compreendem coletivamente dezenas de milhares de CPUs e centenas de terabytes de RAM, com margem considerável para expansão futura. Combinamos essa infraestrutura de computação com um equilíbrio de armazenamento a frio e a quente. Usamos modelos aprendidos e heurísticas ajustadas para determinar quais documentos devem ser mantidos ativos (hot), priorizando documentos de domínios autorizados, documentos que abordam tópicos pouco cobertos e outras categorias com potencial desproporcional para enriquecer nosso índice.
Essa infraestrutura permite que a Perplexity processe dezenas de milhares de operações de indexação por segundo. Mas mesmo com esse orçamento relativamente generoso, a escala da internet é vasta demais para indexar todas as URLs de forma frequente e recorrente. É aqui que o aprendizado de máquina (ML) entra. Treinamos um modelo de ML para prever se uma determinada URL candidata precisa ser indexada. O objetivo de treinamento é elaborado para garantir que calibremos nossa decisão de indexação tanto para a importância quanto para a frequência de atualização provável da URL específica. Também contamos com o ML para nos dizer com precisão quando agendar a operação de indexação. Para sites com cadências rotineiras de publicação e atualização, isso nos permite adiar as operações para o momento em que provavelmente serão mais úteis. Por meio do aprimoramento contínuo desses modelos de ML, conseguimos manter um índice que atinge a marca de completude e atualização.
Embora nossa infraestrutura de rastreamento seja dimensionada horizontalmente com facilidade, estamos cientes de que os operadores de sites enfrentam restrições técnicas diferentes. Temos o cuidado de manter uma taxa previsível e gerenciável de solicitações para qualquer domínio específico. O PerplexityBot, nosso crawler de pesquisa, cumpre os limites explícitos estabelecidos nos arquivos robots.txt ou, na ausência de limites especificados pelo domínio, nas normas padrão da indústria referentes a taxas de solicitação. Também ajustamos nosso comportamento de rastreamento quando detectamos indisponibilidade do site. Nosso sistema distribuído é arquitetado para impor esses limites mesmo em dezenas de milhares de operações concorrentes.
Compreensão de conteúdo com autoaperfeiçoamento em escala de internet
Mesmo com um dos maiores e mais atualizados índices de pesquisa do planeta, a qualidade dos resultados de cada consulta depende da compreensão que nosso sistema tem do conteúdo de cada documento. Aqui, enfrentamos um desafio fundamental: a web é um lugar confuso. Nenhum conjunto fixo de regras de análise pode lidar com a variedade infinita de layouts, estruturas e estilos encontrados em toda a internet.
Resolvemos esse desafio desenvolvendo um módulo de compreensão de conteúdo que analisa sites e extrai conteúdo semanticamente significativo usando conjuntos de regras dinâmicas. Um site com muitos dados bem estruturados em formato de lista ou tabela pode se beneficiar de regras de análise e extração mais formulaicas, enquanto outro site que apresente principalmente conteúdo gerado pelo usuário em formato livre pode exigir um conjunto de regras mais flexível. Como a web é majoritariamente estática em curtos períodos de tempo, descobrimos que a vida útil de uma determinada regra é relativamente longa. Mas à medida que os sites evoluem ao longo do tempo e aprendemos mais sobre as melhores maneiras de extrair informações, nossos conjuntos de regras também exigem manutenção contínua.
Para facilitar essa adaptação dinâmica, recorremos (é claro) à IA. Na escala da Perplexity, observamos um corte transversal incrivelmente rico da web no decorrer do atendimento a milhões de consultas de usuários por hora. Isso forma a base para um loop de autoaperfeiçoamento iterativo. Observamos o comportamento de análise e as saídas extraídas de nossos conjuntos de regras atuais em todo o nosso universo de consultas. Em seguida, usamos LLMs de ponta para avaliar o desempenho em duas dimensões principais:
Completude: nosso índice deve receber tanto conteúdo semanticamente significativo quanto possível, evitando a extração espúria de material não informativo ou sem sentido.
Qualidade: nosso índice depende de conteúdo de alta qualidade tanto em substância quanto em forma. As informações devem ser capturadas de maneira a preservar a estrutura e o layout originais do conteúdo.
Note que completude e qualidade apresentam outra tensão inerente: otimizar manualmente para qualidade é possível, mas as regras de análise resultantes podem falhar em capturar conteúdo crítico. Da mesma forma, poderíamos codificar manualmente regras permissivas que aplicam filtragem mínima ao conteúdo bruto, o que pode melhorar a completude, mas à custa da qualidade. É por isso que recorremos ao autoaperfeiçoamento impulsionado por IA para evoluir nosso conjunto de regras de uma maneira que possa otimizar para ambos simultaneamente de maneira adaptativa ao domínio.
Concretamente, após cada avaliação de desempenho de análise impulsionada por LLM, nosso sistema formula um conjunto de alterações propostas no conjunto de regras para abordar as classes de erro mais significativas. Esses conjuntos de regras passam por validação adicional, após a qual implantamos a nova versão em nosso indexador. Dado que as melhorias na lógica de análise e extração só podem beneficiar operações futuras de indexação, nossos investimentos em reindexação otimizada por ML são especialmente importantes: atualizar continuamente documentos de alto tráfego usando a versão mais recente dessa lógica garante um loop de autoaperfeiçoamento rigoroso.
Essas regras importam não apenas para o desempenho de análise de linha de base, mas também para a segmentação em unidades subdocumentais. Quando se trata de LLMs de ponta, cada token de contexto é precioso. Um grande corpo de trabalho anterior documentou como o desempenho de LLMs se degrada com aumentos no tamanho do contexto e a poluição do contexto com informações irrelevantes. Ter uma análise bem estruturada e abrangente nos permite decompor documentos em trechos autossuficientes, cada um dos quais pode ser recuperado e classificado individualmente no momento da consulta.
Pipeline de recuperação e classificação
A pesquisa moderna exige garantir completude e relevância sob um orçamento de latência rigoroso. O pipeline de recuperação e classificação da Perplexity alcança isso por meio de uma arquitetura de vários estágios que refina progressivamente os resultados com uma série de módulos cada vez mais sofisticados. Resolvemos potenciais gargalos escalando horizontalmente quaisquer pontos de estrangulamento potenciais ao máximo possível.
O pipeline começa com a recuperação do nosso índice. Não forçamos uma escolha entre recuperação lexical e semântica. Em vez disso, consultamos o índice de pesquisa por meio de ambas as modalidades e mesclamos os resultados em um conjunto de candidatos híbrido. Nesta etapa, a prioridade é a abrangência sobre a precisão — os estágios subsequentes do pipeline otimizarão para precisão.
O pipeline continua com estágios de pré-filtragem, nos quais aplicamos heurísticas básicas e filtros de primeira etapa para remover conteúdo claramente não responsivo ou obsoleto do conjunto de candidatos.
Em seguida, empregamos vários estágios de classificação progressivamente avançada. Os estágios anteriores dependem de pontuadores lexicais e baseados em embeddings otimizados para velocidade. À medida que o conjunto de candidatos é gradualmente reduzido, usamos modelos de reclassificação de codificador cruzado (cross-encoder) mais poderosos para realizar a modelagem final do conjunto de resultados. Graças aos nossos inúmeros investimentos em desempenho de inferência, conseguimos aproveitar arquiteturas de modelos de última geração para esses estágios posteriores, mantendo baixa a latência geral de classificação.
Ao longo deste pipeline, recuperamos e pontuamos resultados nos níveis de documento e subdocumento. Conforme discutido acima, a IA requer engenharia de contexto cuidadosa. Nosso pipeline foi projetado para expor as unidades mais atômicas possíveis ao modelo, de modo que os consumidores downstream possam incorporar essas unidades precisas sem puxar contexto irrelevante de outras partes dos documentos de origem.
Garantir alta qualidade em cada estágio deste pipeline só é possível por meio de codesign com o portfólio de produtos da Perplexity. Cada detalhe da pilha de classificação é projetado para aproveitar o rico sinal produzido pelos milhões de solicitações de usuários que atendemos a cada hora do dia. A grande maioria desse sinal é automatizada, com cada resposta gerada pela Perplexity fornecendo um ponto de dados empírico sobre a qualidade da pesquisa conforme usada em um fluxo de trabalho de agente ativo. Combinamos avaliações impulsionadas por IA com feedback humano em tempo real para enriquecer os dados de treinamento para nossos modelos de embedding e classificação muito além do que qualquer conjunto de dados construído manualmente pode oferecer.
Essa sinergia entre pesquisa e produto é exclusiva da Perplexity. Mecanismos de pesquisa legados limitam-se ao sinal bruto fornecido pela telemetria de links azuis. Novas ofertas de pesquisa tentaram implementar alguns desses conceitos voltados para IA, mas carecem de ambientes do mundo real que possam validar a qualidade da pesquisa e fornecer a riqueza de sinal necessária para loops de aprimoramento rápido. Temos a sorte de ter o ingrediente ausente: um campo de testes em tempo real para a qualidade da pesquisa, alimentado por LLMs de ponta e continuamente testado em batalha por milhões de usuários curiosos em todo o mundo.
Estabelecendo uma nova fronteira para qualidade e desempenho
Depois de construir a Perplexity Search API e o SDK para disponibilizar nossa infraestrutura de pesquisa para desenvolvedores em todo o mundo, queríamos entender como as várias ofertas de APIs comerciais se saíam em casos de uso de IA do mundo real. Tornou-se comum avaliar os próprios modelos de IA, mas precisávamos de uma reviravolta nesse padrão: avaliar a qualidade das APIs de pesquisa quando invocadas por modelos de IA.
Primeiro, olhamos para o ecossistema de código aberto para entender o estado da arte anterior. Encontramos muitos dos principais ingredientes para uma avaliação rigorosa, mas nenhuma estrutura que integrasse esses ingredientes em uma solução de benchmarking pronta para uso. Portanto, nos propusemos a desenvolver uma estrutura de avaliação que pudesse ser usada não apenas pela Perplexity, mas por qualquer pesquisador ou desenvolvedor que buscasse fazer benchmark de APIs de pesquisa.
Usando esta estrutura de avaliação, fizemos um benchmark rigoroso da Perplexity Search API em comparação com outras ofertas. Otimizar o desempenho da pesquisa é complexo, com muitas compensações sutis entre qualidade e velocidade. Em uma vitória para os desenvolvedores, descobrimos que a Perplexity Search API define um novo padrão de referência (state-of-the-art) para qualidade e latência. Os desenvolvedores não precisam mais escolher entre criar aplicativos extremamente rápidos e garantir resultados de alta qualidade: com a Perplexity, eles podem ter ambos.
Projetando avaliações confiáveis para fluxos de trabalho de pesquisa de agentes
Começamos definindo três princípios orientadores para nossa estrutura de avaliação:
Espectro de complexidade: a estrutura de avaliação deve medir o desempenho em casos de uso de IA de agentes diretos e complexos.
Neutralidade: a estrutura de avaliação deve avaliar todas as APIs em igualdade de condições.
Simplicidade: embora certos casos de uso possam ser complexos, a estrutura em si deve ser o mais simples possível para que outros possam entendê-la, reproduzir os resultados e estender a estrutura com o mínimo de tédio.
Nossa estrutura de avaliação leve, search_evals, atinge esses objetivos por meio de um design modular simples. Desenvolvemos dois conjuntos de ferramentas para agentes de IA para capturar casos de uso de pesquisa clássica de tiro único (single-shot) e fluxos de trabalho avançados de agentes (exemplificados por vários produtos de “pesquisa aprofundada” amplamente disponíveis no mercado consumidor). Ambos os conjuntos foram implementados de maneira direta que deixa pouco espaço para vantagens ocultas.
Para conduzir nossas avaliações, adotamos quatro benchmarks: SimpleQA e FRAMES para pesquisa em etapa única, juntamente com BrowseComp e HLE para pesquisa aprofundada. Coletivamente, esses benchmarks fornecem parâmetros bem aceitos para agentes de conhecimento. Seguindo a convenção estabelecida, classificamos todos os benchmarks usando a mesma metodologia de classificador por prompt usada no trabalho original. As implementações precisas de benchmark (incluindo a lógica do classificador) podem ser revisadas em nosso repositório do GitHub.
Projetamos a estrutura tendo em mente a reprodutibilidade e a extensibilidade. Tanto as pontuações em nível de tarefa quanto as saídas de agentes subjacentes são armazenadas a cada execução. Arnêses adicionais, benchmarks e ofertas de APIs de pesquisa podem ser facilmente integrados. Pesquisadores e desenvolvedores podem ler a documentação do GitHub para obter mais informações sobre como estender a estrutura para atender às suas necessidades exatas.
Resultados da avaliação
Munidos desta estrutura de avaliação, partimos para avaliar nossa Search API em comparação com outras ofertas de API. Em todos os benchmarks testados, a Perplexity destaca-se como a API mais rápida e de maior qualidade no mercado.
Constatamos que nossos investimentos descritos acima no índice, na recuperação e na eficiência de classificação valeram muito a pena. A latência mediana da Perplexity registra-se em 358ms, mais de 150ms à frente do segundo provedor mais rápido. A latência no percentil 95 permanece confortavelmente abaixo de 800ms. Com as longas métricas de TTFT (tempo até o primeiro token) dos modelos de ponta de hoje, cada milissegundo importa na criação de experiências de usuário encantadoras. Passamos os últimos dois anos otimizando a latência para nossos próprios usuários e estamos gratos por esses mesmos investimentos beneficiarem agora também a comunidade de desenvolvedores.
Latência da Search API
(solicitações iniciadas a partir de AWS us-east-1)
p50 | p75 | p90 | p95 | |
Perplexity | 358ms | 443ms | 604ms | 763ms |
Exa | 1375ms | 1499ms | 1798ms | 2188ms |
Brave | 513ms | 637ms | 728ms | 808ms |
Baseado em SERP* | 1342ms | 1586ms | 1743ms | 1790ms |
Percentis de latência da Search API para solicitações iniciadas a partir de AWS us-east-1.
* Muitos fornecedores de APIs de pesquisa usam a raspagem de SERP como base para seus resultados. Para capturar o desempenho de tais abordagens, usamos uma API representativa baseada em SERP do Google oferecida pela Tavily.
Essa vantagem de velocidade não vem à custa da qualidade. A Perplexity Search API oferece desempenho de última geração em configurações de pesquisa em etapa única e pesquisa aprofundada. Em cada benchmark testado, a Perplexity lidera o grupo no fornecimento de resultados de alta qualidade que podem alimentar fluxos de trabalho de IA de complexidade variada. A margem entre a Perplexity e a melhor alternativa é especialmente pronunciada em SimpleQA e HLE, indicando que esses resultados são robustos em todo o espectro de complexidade de tarefas.
Assim como com a latência, nossa liderança em qualidade de pesquisa decorre de nossa liderança na construção de produtos de IA encantadores e altamente acessados. Nossos milhões de usuários usam a Perplexity para saciar sua curiosidade sobre todos os tópicos imagináveis, e os sinais resultantes de qualidade e relevância permitem que nossos modelos de pesquisa melhorem a cada hora que passa.
Benchmarks de qualidade da Search API
Pesquisa em etapa única | Pesquisa aprofundada | |||
SimpleQA | FRAMES | BrowseComp | HLE | |
Perplexity | .930 | .453 | .371 | .288 |
Exa | .781 | .399 | .265 | .242 |
Brave | .822 | .320 | .221 | .191 |
Baseado em SERP* | .890 | .437 | .348 | .248 |
Scores de qualidade da Search API em SimpleQA, FRAMES, BrowseComp e HLE.
Ainda estamos nos primeiros dias dos mecanismos de pesquisa nativos de IA, e a arte e a ciência da medição sem dúvida evoluirão. Convidamos a comunidade a contribuir desenvolvendo métodos rigorosos e criativos para avaliar mecanismos de pesquisa na era dos agentes de IA.
O bloco de construção para o próximo capítulo da IA
O futuro dos sistemas de agentes e assistentes inteligentes dependerá da disponibilidade de interfaces programáticas ricas para o conhecimento coletivo do mundo. Os mecanismos de pesquisa legados de hoje saturaram em uso em aproximadamente 10¹⁰ consultas por dia, um número que provavelmente atingiu o pico. A próxima geração de sistemas de busca e recuperação atenderá a ordens de grandeza a mais de solicitações, à medida que um universo em constante crescimento de agentes de IA passa a depender deles para obter informações precisas em tempo real.
Nossos esforços até o momento nos posicionaram como o mecanismo de pesquisa mais rápido e com melhor desempenho acessível via API. Mas inovações ainda mais ambiciosas serão necessárias para impulsionar o próximo capítulo da IA. Como dimensionamos esses sistemas com eficiência diante de uma demanda sempre crescente? Como esses sistemas de pesquisa podem ser otimizados à luz de abordagens inovadoras para engenharia de contexto e pós-treinamento? E como navegamos pela tensão sempre presente entre abrangência, recenticidade e latência? Estas são questões em aberto que a Perplexity, com nossa combinação de pegada de produto, escala e talento técnico, está posicionada de maneira única para enfrentar.
Citação
@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}
}