Arquitecturando y evaluando una API de búsqueda de IA primero
Construcción de una API de búsqueda escalable que maneja 200 millones de consultas diarias utilizando recuperación híbrida y curación de contexto inteligente para modelos de IA
La creación de una API de búsqueda escalable y orientada a la IA presenta desafíos de investigación únicos en la intersección de la recuperación de información, la IA y el diseño de sistemas. A diferencia de los servicios tradicionales que operan con datos limitados, una API de búsqueda debe indexar continuamente miles de millones de documentos, comprender la intención de las consultas en diversos idiomas y dominios, y proporcionar resultados relevantes en milisegundos. En un mundo de agentes de IA, una API de búsqueda también debe seleccionar cuidadosamente el contexto proporcionado a los modelos de los desarrolladores para asegurar que dichos modelos funcionen de manera óptima e incorporen información con la máxima precisión. La ingeniería de contexto efectiva requiere que la API no solo capture la relevancia a nivel de documento, sino que también trate las secciones y los fragmentos individuales de los documentos como unidades de primer nivel por derecho propio.
En este artículo, presentamos el diseño y la evaluación de la API de búsqueda de Perplexity. Primero exploramos la arquitectura y las decisiones técnicas clave detrás de nuestra infraestructura de búsqueda de producción, la cual procesa 200 millones de consultas diarias. Nuestra arquitectura combina mecanismos de recuperación híbridos, canales de clasificación multietapa, indexación distribuida y análisis dinámico a través de un módulo de comprensión de contenido que mejora automáticamente.
Luego, describimos nuestro enfoque para evaluar empíricamente el rendimiento de la API de búsqueda mediante un marco de evaluación recientemente publicado en código abierto. A través de pruebas comparativas exhaustivas frente a las API comerciales existentes, demostramos un rendimiento de vanguardia tanto en calidad como en latencia. La API de búsqueda de Perplexity está disponible para desarrolladores de todo el mundo a partir de hoy.
[Encuentra search_evals en GitHub]
Creación de un sistema de búsqueda optimizado para modelos de IA
Desde nuestra fundación, entendimos que unas capacidades de búsqueda sólidas serían fundamentales para permitir los productos de IA que definen la categoría que queríamos lanzar. Originalmente, esperábamos que estas capacidades ya existieran de forma pública. Experimentamos con la cartera de API de búsqueda disponibles a finales de 2022, y la primera versión del motor de respuestas de Perplexity incorporó algunas de estas ofertas. Específicamente, analizábamos las consultas de los usuarios, formulábamos y enviábamos solicitudes a estas API, y reuníamos los resultados como contexto para nuestra canalización de generación posterior.
Sin embargo, a medida que los usuarios acudían a Perplexity, nos dimos cuenta rápidamente de que estas API no escalarían con nuestro crecimiento. Los precios que encontramos eran exorbitantes; un proveedor de API líder cobraba 200 dólares por cada mil consultas. Pero, de manera más crítica, estas API heredadas simplemente no fueron diseñadas para los nuevos paradigmas de recuperación introducidos por los sistemas de IA de vanguardia.
Para empezar, los formatos de solicitud y respuesta de estas API heredadas fueron diseñados para un mundo en el que los humanos eran los consumidores exclusivos de los resultados de búsqueda. Como resultado, estas API priorizaban los resultados a nivel de documento, excluyendo información más detallada revelada por unidades subdocumentales. El éxito de un modelo de IA depende de la calidad y la compacidad del contexto proporcionado, y observamos de primera mano cómo una recuperación excesivamente amplia podía descarrilar los modelos de IA, independientemente de lo relevantes que pudieran parecer los documentos recuperados en su conjunto. Nuestros intentos de forzar la precisión en resultados imprecisos tuvieron un éxito limitado.
También observamos que las API heredadas eran demasiado obsoletas o demasiado lentas. Las API de búsqueda desarrolladas de forma independiente dependían de índices incompletos y actualizados con poca frecuencia. Las API basadas en web scraping, como las diversas API no oficiales de SERP para la Búsqueda de Google, se beneficiaban de un índice más completo, pero ofrecían una latencia inaceptablemente alta debido a la ineficiencia inherente de consultar un motor de búsqueda de terceros. La alta latencia hacía que las API no fueran adecuadas para aplicaciones orientadas al usuario, mientras que la obsolescencia hacía que los conjuntos de resultados fueran inutilizables para cualquier sistema de IA que pretendiera ser preciso y confiable.
Finalmente, observamos que el ecosistema de IA se bifurcaba entre la búsqueda léxica y la búsqueda semántica, con sistemas que surgían optimizados excesivamente para una modalidad sobre la otra. Vimos el auge de las bases de datos vectoriales que no podían admitir adecuadamente ni siquiera filtros booleanos simples. Los backends de búsqueda tradicionales no obtuvieron mejores resultados, con un soporte primitivo para las oportunidades de clasificación y recuperación semántica desbloqueadas por la IA.
Al darnos cuenta de que mejorar aún más Perplexity requeriría construir nuestra propia infraestructura de búsqueda dedicada, destilamos nuestras observaciones en tres criterios clave:
Integridad, frescura y velocidad: el índice de búsqueda debe ser exhaustivo, actualizarse constantemente y estar diseñado para una latencia en tiempo real.
Comprensión detallada del contenido: la fragilidad de los modelos de IA y las ventanas de contexto limitadas requieren que los resultados de búsqueda se presenten y clasifiquen al nivel más granular posible.
Recuperación y clasificación híbridas: tanto la recuperación como las canalizaciones de clasificación deben incorporar señales léxicas y semánticas para que los resultados sean útiles para la IA.
Infraestructura de rastreo e indexación
Operar a la escala de Perplexity requiere una infraestructura capaz de mapear la web de forma exhaustiva y responder a su constante evolución. Nuestro índice de búsqueda rastrea más de 200 mil millones de URL únicas, con capacidad para rastrear muchos cientos de miles de millones más.
Garantizar que nuestro índice cubra una parte suficientemente completa de Internet y que cada documento refleje el estado más reciente es una tarea difícil. Existe una tensión inherente entre la integridad y la frescura: para un presupuesto de indexación fijo, las operaciones de actualización para páginas existentes deben competir con las operaciones de indexación para nuevas páginas no visitadas. Equilibramos esta tensión mediante una combinación de escalado (que relaja la restricción de optimización al aumentar el presupuesto de indexación) y priorización impulsada por ML (que garantiza que cada operación de indexación sea lo más valiosa posible para el índice en su conjunto).
Hemos construido un índice y un aparato de rastreo a escala de exabytes que se escala horizontalmente tanto en tamaño como en volumen de consultas. Las flotas de rastreo e indexación de Perplexity comprenden colectivamente decenas de miles de CPU y cientos de terabytes de RAM, con un margen considerable para un mayor escalado. Combinamos esta infraestructura informática con un equilibrio de almacenamiento en frío y en caliente. Utilizamos tanto modelos aprendidos como heurísticas ajustadas para determinar qué documentos deben mantenerse activos, priorizando los documentos de dominios autorizados, documentos que involucran temas poco cubiertos y otras categorías con un potencial excepcional para enriquecer nuestro índice.
Esta infraestructura permite a Perplexity procesar decenas de miles de operaciones de indexación por segundo. Pero incluso con este presupuesto relativamente generoso, la escala de Internet es demasiado vasta para indexar cada URL de forma frecuente y recurrente. Aquí es donde entra el ML. Entrenamos un modelo de ML para predecir si una URL candidata determinada necesita ser indexada. El objetivo de entrenamiento está diseñado para asegurar que calibremos nuestra decisión de indexación tanto en función de la importancia como de la probable frecuencia de actualización de la URL específica. También confiamos en el ML para que nos indique con precisión cuándo programar la operación de indexación. Para los sitios con cadencias rutinarias de publicación y actualización, esto nos permite diferir las operaciones hasta el momento en que probablemente sean más útiles. A través del refinamiento continuo de estos modelos de ML, podemos mantener un índice que cumple con los objetivos de integridad y frescura.
Aunque nuestra infraestructura de rastreo se escala fácilmente de forma horizontal, somos conscientes de que los operadores de sitios web enfrentan diferentes restricciones técnicas. Tenemos cuidado de mantener una tasa predecible y manejable de solicitudes a cualquier dominio determinado. PerplexityBot, nuestro rastreador de búsqueda, cumple con los límites explícitos establecidos en los archivos robots.txt o, en ausencia de límites especificados por el dominio, con las normas estándar de la industria relativas a las tasas de solicitud. También ajustamos nuestro comportamiento de rastreo cuando detectamos la indisponibilidad de un sitio. Nuestro sistema distribuido está diseñado para hacer cumplir estos límites incluso a través de decenas de miles de operaciones simultáneas.
Comprensión de contenido que mejora automáticamente a escala de Internet
Incluso con uno de los índices de búsqueda más grandes y frescos del planeta, la calidad de los resultados de cada consulta depende de la comprensión que nuestro sistema tenga del contenido de cada documento. Aquí, nos enfrentamos a un desafío fundamental: la web es un lugar desordenado. Ningún conjunto fijo de reglas de análisis puede manejar la variedad infinita de diseños, estructuras y estilos que se encuentran en toda Internet.
Resolvimos este desafío desarrollando un módulo de comprensión de contenido que analiza sitios web y extrae contenido semánticamente significativo mediante conjuntos de reglas dinámicos. Un sitio web con muchos datos bien estructurados en forma de lista o tabla puede beneficiarse de reglas de análisis y extracción más formularias, mientras que otro sitio web que presenta principalmente contenido de formato libre generado por el usuario puede requerir un conjunto de reglas más flexible. Debido a que la web es mayormente estática en intervalos de tiempo cortos, encontramos que la vida útil de una regla determinada es relativamente larga. Pero a medida que los sitios evolucionan con el tiempo y aprendemos más sobre las mejores formas de extraer información, nuestros conjuntos de reglas también requieren un mantenimiento continuo.
Para facilitar esta adaptación dinámica, recurrimos (por supuesto) a la IA. A la escala de Perplexity, observamos una sección transversal increíblemente rica de la web durante el servicio de millones de consultas de usuarios cada hora. Esto forma la base para un ciclo iterativo de mejora automática. Observamos el comportamiento de análisis y las salidas extraídas de nuestros conjuntos de reglas actuales en todo nuestro universo de consultas. Luego usamos LLM de frontera para evaluar el rendimiento a través de dos dimensiones principales:
Integridad: nuestro índice debe recibir tanto contenido semánticamente significativo como sea posible, evitando al mismo tiempo la extracción espuria de material sin información o sin sentido.
Calidad: nuestro índice depende de contenido que sea de alta calidad tanto en sustancia como en forma. La información debe capturarse de una manera que preserve la estructura y el diseño del contenido original.
Tenga en cuenta que la integridad y la calidad presentan otra tensión inherente: es posible optimizar manualmente la calidad, pero las reglas de análisis resultantes pueden no capturar contenido crítico. De manera similar, podríamos codificar manualmente reglas permisivas que apliquen un filtrado mínimo al contenido sin procesar, lo que podría mejorar la integridad pero a expensas de la calidad. Es por eso que recurrimos a la mejora automática impulsada por IA para desarrollar nuestro conjunto de reglas de una manera que pueda optimizar ambos al mismo tiempo de una manera adaptativa al dominio.
Concretamente, después de cada evaluación impulsada por LLM del rendimiento del análisis, nuestro sistema formula un conjunto de cambios propuestos en el conjunto de reglas para abordar las clases de error más importantes. Estos conjuntos de reglas se someten a una validación adicional, después de lo cual implementamos la nueva versión en nuestro indexador. Dado que las mejoras en la lógica de análisis y extracción solo pueden beneficiar futuras operaciones de indexación, nuestras inversiones en reindexación optimizada por ML son especialmente importantes: actualizar continuamente los documentos de alto tráfico utilizando la última versión de esta lógica garantiza un ciclo estricto de mejora automática.
Estas reglas son importantes no solo para el rendimiento básico del análisis, sino también para la segmentación en unidades subdocumentales. Cuando se trata de LLM de frontera, cada token de contexto es valioso. Un gran cuerpo de trabajo previo ha documentado cómo el rendimiento de los LLM se degrada con los aumentos en el tamaño del contexto y la contaminación del contexto con información irrelevante. Tener un análisis bien estructurado y completo nos permite descomponer los documentos en fragmentos autónomos, cada uno de los cuales puede recuperarse y clasificarse individualmente en el momento de la consulta.
Canalización de recuperación y clasificación
La búsqueda moderna requiere garantizar tanto la integridad como la relevancia dentro de un presupuesto de latencia ajustado. La canalización de recuperación y clasificación de Perplexity logra esto a través de una arquitectura multietapa que refina progresivamente los resultados con una serie de módulos cada vez más sofisticados. Resolvemos los posibles cuellos de botella escalando horizontalmente cualquier punto de congestión tanto como sea posible.
La canalización comienza con la recuperación de nuestro índice. No forzamos una elección entre la recuperación léxica y la semántica. Más bien, consultamos el índice de búsqueda a través de ambas modalidades y combinamos los resultados en un conjunto de candidatos híbridos. En esta etapa, la prioridad es la exhaustividad sobre la precisión; las etapas posteriores de la canalización optimizarán la precisión.
La canalización continúa con etapas de prefiltrado, en las que aplicamos heurísticas básicas y filtros de primer corte para eliminar contenido claramente no receptivo u obsoleto del conjunto de candidatos.
Luego empleamos múltiples etapas de clasificación progresivamente avanzada. Las etapas anteriores dependen de clasificadores léxicos y basados en incrustaciones optimizados para la velocidad. A medida que el conjunto de candidatos se reduce gradualmente, utilizamos modelos de clasificación cruzada más potentes para realizar la escultura final del conjunto de resultados. Gracias a nuestras numerosas inversiones en rendimiento de inferencia, podemos aprovechar arquitecturas de modelos de vanguardia para estas etapas posteriores mientras mantenemos baja la latencia general de clasificación.
A lo largo de esta canalización, recuperamos y puntuamos resultados tanto a nivel de documento como de subdocumento. Como se discutió anteriormente, la IA requiere una ingeniería de contexto cuidadosa. Nuestra canalización está diseñada para mostrar las unidades más atómicas posibles al modelo, de modo que los consumidores posteriores puedan incorporar esas unidades precisas sin extraer contexto irrelevante de otras partes de los documentos de origen.
Garantizar una alta calidad en cada etapa de esta canalización solo es posible mediante el co-diseño con la cartera de productos de Perplexity. Cada detalle de la pila de clasificación está diseñado para aprovechar la rica señal producida por los millones de solicitudes de usuario que atendemos cada hora del día. La gran mayoría de esta señal está automatizada, y cada respuesta generada por Perplexity proporciona un punto de datos empírico sobre la calidad de búsqueda tal como se utiliza en un flujo de trabajo agéntico en vivo. Combinamos evaluaciones impulsadas por IA con comentarios humanos en vivo para enriquecer los datos de entrenamiento para nuestros modelos de incrustación y clasificación mucho más allá de lo que cualquier conjunto de datos construido manualmente puede ofrecer.
Esta sinergia entre búsqueda y producto es única en Perplexity. Los motores de búsqueda heredados se limitan a la señal gruesa proporcionada por la telemetría de enlaces azules. Las nuevas ofertas de búsqueda han intentado implementar algunos de estos conceptos orientados a la IA, pero carecen de entornos del mundo real que puedan validar la calidad de la búsqueda y proporcionar la riqueza de señal necesaria para ciclos de mejora rápida. Tenemos la suerte de contar con el ingrediente faltante: un campo de pruebas en vivo para la calidad de búsqueda, impulsado por LLM de frontera y continuamente probado en combate por millones de usuarios curiosos en todo el mundo.
Estableciendo una nueva frontera para la calidad y el rendimiento
Después de construir la API de búsqueda de Perplexity y el SDK para poner nuestra infraestructura de búsqueda a disposición de los desarrolladores de todo el mundo, queríamos comprender cómo se comparaban las diversas ofertas de API comerciales en casos de uso de IA del mundo real. Se ha vuelto común evaluar los modelos de IA por sí mismos, pero necesitábamos un giro en este patrón: evaluar la calidad de las API de búsqueda cuando son invocadas por modelos de IA.
Primero recurrimos al ecosistema de código abierto para comprender el estado de la técnica. Encontramos muchos de los ingredientes clave para una evaluación rigurosa, pero ningún marco que integrara estos ingredientes en una solución de evaluación comparativa lista para usar. Por lo tanto, nos propusimos desarrollar un marco de evaluación que pudiera ser utilizado no solo por Perplexity, sino por cualquier investigador o desarrollador que busque comparar API de búsqueda.
Usando este marco de evaluación, comparamos rigurosamente la API de búsqueda de Perplexity junto con otras ofertas. Optimizar el rendimiento de la búsqueda es complejo, con muchas compensaciones matizadas entre calidad y velocidad. En una victoria para los desarrolladores, descubrimos que la API de búsqueda de Perplexity establece un nuevo estado de la técnica tanto en calidad como en latencia. Los desarrolladores ya no necesitan elegir entre crear aplicaciones ultrarrápidas y garantizar resultados de alta calidad: con Perplexity, pueden tener ambos.
Diseño de evaluaciones fiables para flujos de trabajo de búsqueda agéntica
Comenzamos definiendo tres principios rectores para nuestro marco de evaluación:
Espectro de complejidad: el marco de evaluación debe medir el rendimiento tanto en casos de uso de IA agéntica directos como complejos.
Neutralidad: el marco de evaluación debe evaluar todas las API en igualdad de condiciones.
Simplicidad: aunque ciertos casos de uso pueden ser complejos, el marco en sí debe ser lo más simple posible para que otros puedan entenderlo, reproducir los resultados y extender el marco con una tediosidad mínima.
Nuestro marco de evaluación ligero, search_evals, logra estos objetivos a través de un diseño modular simple. Desarrollamos dos arneses de agentes de IA para capturar tanto los casos de uso de búsqueda de disparo único clásicos como los flujos de trabajo agénticos avanzados (ejemplificados por varios productos de "investigación profunda" ampliamente disponibles en el mercado de consumo). Ambos arneses se implementaron de una manera directa que deja poco espacio para ventajas ocultas.
Para impulsar nuestras evaluaciones, adoptamos cuatro pruebas comparativas: SimpleQA y FRAMES para la búsqueda de un solo paso, junto con BrowseComp y HLE para la investigación profunda. Colectivamente, estas pruebas comparativas proporcionan puntos de referencia bien aceptados para los agentes de conocimiento. Siguiendo la convención establecida, calificamos todas las pruebas comparativas utilizando la misma metodología de clasificador con avisos utilizada en el trabajo original. Las implementaciones precisas de las pruebas comparativas (incluida la lógica del calificador) se pueden revisar en nuestro repositorio de GitHub.
Diseñamos el marco teniendo en cuenta la reproducibilidad y la extensibilidad. Tanto las puntuaciones a nivel de tarea como las salidas subyacentes del agente se almacenan con cada ejecución. Se pueden integrar fácilmente arneses, pruebas comparativas y ofertas de API de búsqueda adicionales. Los investigadores y desarrolladores pueden leer nuestros documentos de GitHub para obtener más información sobre cómo extender el marco para abordar sus necesidades precisas.
Resultados de la evaluación
Armados con este marco de evaluación, nos propusimos evaluar nuestra API de búsqueda en comparación con otras ofertas de API. En todas las pruebas comparativas probadas, Perplexity se destaca como la API más rápida y de mayor calidad en el mercado.
Descubrimos que nuestras inversiones descritas anteriormente en la eficiencia del índice, la recuperación y la clasificación dieron sus frutos considerablemente. La latencia media de Perplexity se sitúa en 358 ms, más de 150 ms por delante del segundo proveedor más rápido. La latencia en el percentil 95 se mantiene cómodamente por debajo de los 800 ms. Con las métricas de largo TTFT (tiempo hasta el primer token) de los modelos de frontera actuales, cada milisegundo cuenta para crear experiencias de usuario encantadoras. Hemos pasado los últimos dos años optimizando la latencia para nuestros propios usuarios, y estamos satisfechos de que esas mismas inversiones ahora también beneficien a la comunidad de desarrolladores.
Latencia de la API de búsqueda
(solicitudes iniciadas desde 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 |
Basado en SERP* | 1342 ms | 1586 ms | 1743 ms | 1790 ms |
Percentiles de latencia de la API de búsqueda para solicitudes iniciadas desde AWS us-east-1.
* Muchos proveedores de API de búsqueda utilizan el raspado de SERP como base para sus resultados. Para capturar el rendimiento de tales enfoques, utilizamos una API representativa basada en SERP de Google ofrecida por Tavily.
Esta ventaja de velocidad no se produce a expensas de la calidad. La API de búsqueda de Perplexity produce un rendimiento de vanguardia tanto en la búsqueda de un solo paso como en los entornos de investigación profunda. En cada prueba comparativa probada, Perplexity lidera el grupo en la provisión de resultados de alta calidad que pueden impulsar flujos de trabajo de IA de diversa complejidad. El margen entre Perplexity y la mejor alternativa es especialmente pronunciado en SimpleQA y HLE, lo que indica que estos resultados son robustos en todo el espectro de complejidad de las tareas.
Al igual que con la latencia, nuestro liderazgo en la calidad de búsqueda se deriva de nuestro liderazgo en la creación de productos de IA encantadores y muy transitados. Nuestros millones de usuarios utilizan Perplexity para satisfacer su curiosidad sobre cualquier tema imaginable, y las señales de calidad y relevancia resultantes permiten que nuestros modelos de búsqueda mejoren con cada hora que pasa.
Pruebas comparativas de calidad de la API de búsqueda
Búsqueda de un solo paso | Investigación profunda | |||
SimpleQA | FRAMES | BrowseComp | HLE | |
Perplexity | .930 | .453 | .371 | .288 |
Exa | .781 | .399 | .265 | .242 |
Brave | .822 | .320 | .221 | .191 |
Basado en SERP* | .890 | .437 | .348 | .248 |
Puntuaciones de calidad de la API de búsqueda en SimpleQA, FRAMES, BrowseComp y HLE.
Todavía estamos en los primeros días de los motores de búsqueda nativos de IA, y el arte y la ciencia de la medición sin duda evolucionarán. Invitamos a la comunidad a contribuir desarrollando métodos rigurosos y creativos para evaluar los motores de búsqueda en la era de los agentes de IA.
El bloque de construcción para el próximo capítulo de la IA
El futuro de los sistemas agénticos y los asistentes inteligentes dependerá de la disponibilidad de interfaces programáticas ricas en el conocimiento colectivo del mundo. Los motores de búsqueda heredados de hoy han saturado su uso a aproximadamente 10¹⁰ consultas por día, una cifra que probablemente haya alcanzado su punto máximo. La próxima generación de sistemas de búsqueda y recuperación atenderá órdenes de magnitud más solicitudes, a medida que un universo cada vez mayor de agentes de IA dependa de ellos para obtener información precisa en tiempo real.
Nuestros esfuerzos hasta la fecha nos han posicionado como el motor de búsqueda más rápido y con mayor rendimiento accesible a través de API. Pero se necesitará una innovación aún más ambiciosa para que impulsemos el próximo capítulo de la IA. ¿Cómo escalamos eficientemente estos sistemas frente a una demanda cada vez mayor? ¿Cómo se pueden optimizar estos sistemas de búsqueda a la luz de nuevos enfoques para la ingeniería de contexto y el post-entrenamiento? ¿Y cómo navegamos la tensión siempre presente entre la exhaustividad, la actualidad y la latencia? Estas son preguntas abiertas que Perplexity, con nuestra combinación de huella de producto, escala y talento técnico, está en una posición única para abordar.
Citación
@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}
}