Search API: Lepsza ekstrakcja, dynamiczne testy

Jakość fragmentów naszego Search API została zoptymalizowana pod dwoma względami: trafności i rozmiaru.

We wrześniu opublikowaliśmy przegląd techniczny architektury API Perplexity Search i udostępniliśmy search_evals, nasze otwartoźródłowe środowisko programistyczne do testowania porównawczego API wyszukiwania w ramach przepływów pracy typu agentic. Od tego czasu nasza najważniejsza inwestycja skupiała się na jakości fragmentów (snippets), zoptymalizowanej w dwóch wymiarach: trafności i rozmiarze. Zwrot właściwej treści w odpowiedniej ilości bezpośrednio determinuje dokładność odpowiedzi końcowych oraz efektywność tokenów. Prace nad osiągnięciem tego celu obejmowały stworzenie nowych systemów ekstrakcji, etykietowania na poziomie fragmentów oraz ewaluacji, a w szczególności potoku etykietowania fragmentów, który identyfikuje, które części dokumentu źródłowego odpowiadają na dane zapytanie.

Ewaluacja fragmentów na poziomie fragmentów tekstu

Aby systematycznie poprawiać jakość fragmentów, zaprojektowaliśmy nowy system ewaluacji. Dla danego zapytania i dokumentu system identyfikuje i etykietuje fragmenty wewnątrz dokumentu w zależności od ich relacji do zapytania: „istotne” fragmenty, które muszą znaleźć się wewnątrz fragmentu, różne klasy „nieistotnych” fragmentów, które powinny zostać wykluczone, duplikaty oraz inne kategorie. Takie etykietowanie na poziomie fragmentów pozwala nam oceniać jakość fragmentów z precyzją, która wcześniej nie była możliwa, mierząc zarówno to, co zostało poprawnie uwzględnione, jak i to, co zostało poprawnie pominięte.

W praktyce te ulepszenia pozwalają nam generować mniejsze fragmenty, które są bardziej trafne w odniesieniu do zapytania. Nasz samodoskonalący się potok rozumienia treści obsługuje teraz szerszy zakres ustrukturyzowanych formatów danych, w tym tabele, zagnieżdżone listy oraz dynamicznie renderowaną treść, której wcześniejsze zestawy reguł nie potrafiły poprawnie przetworzyć.

Ulepszenia te wyłoniły się z naszych własnych systemów produkcyjnych. Gdy nasze wewnętrzne badania zwiększyły trafność i rozmiar fragmentów, wewnętrzne oceny wykazały, że mniejsze budżety treści faktycznie przyniosły bardziej dokładne wyniki po serii usprawnień jakościowych. Wprowadziliśmy pewne modyfikacje w naszych domyślnych konfiguracjach, aby odzwierciedlić nasze ustalenia, redukując rozmiar ładunku odpowiedzi i opóźnienia, przy jednoczesnym dostarczaniu bardziej użytecznych treści na wynik. Dla programistów mniejsze, bardziej trafne fragmenty przekładają się bezpośrednio na niższe koszty tokenów i lepsze zarządzanie kontekstem dla dalszych modeli LLM.

SEAL: testowanie porównawcze wyszukiwania wrażliwego na czas

Test porównawczy SEAL sprawdza, czy system wyszukiwania potrafi odpowiadać na pytania, których prawidłowa odpowiedź zmienia się w czasie. Niezawodne odpowiadanie wymaga świeżości indeksu w czasie rzeczywistym, inteligentniejszej ekstrakcji fragmentów z różnych stale aktualizowanych źródeł danych oraz parsowania, które potrafi zidentyfikować aktualną wartość zamiast historycznej.

Kiedy uruchomiliśmy search_evals w odniesieniu do wydania SEAL z 22 lutego, korzystając z modelu Claude Sonnet 4.5, wyniki Perplexity wzrosły, podczas gdy wyniki innych dostawców w teście SEAL-Hard spadły:

Rozszerzyliśmy nasze środowisko search_evals, aby uwzględnić SEAL obok testów porównawczych zgłoszonych w naszym wrześniowym poście. Zaktualizowane wyniki i metodologia są dostępne w zaktualizowanym repozytorium na GitHubie.

Obsługa wielu zapytań

API obsługuje teraz do 5 zapytań w jednym żądaniu. Wyniki są zwracane w grupach dla każdego zapytania w tej samej kolejności, w jakiej zostały przesłane. Zmniejsza to liczbę rund komunikacyjnych dla aplikacji, które muszą wykonywać powiązane wyszukiwania równolegle, takich jak agenci rozkładający złożone pytanie na wiele podzadań wyszukiwania.

Rozszerzone filtrowanie

Oprócz filtrowania domen (lista dozwolonych i lista zabronionych, do 20 domen) oraz filtrowania pod kątem aktualności, API obsługuje teraz filtrowanie języka według kodu ISO 639-1 oraz wyszukiwanie regionalne według kodu kraju ISO. Można je łączyć, aby precyzyjnie określić zakres wyników, na przykład ograniczając je do wyników w języku angielskim z domen niemieckich.

SDK i dostępność

Python SDK (pip install perplexityai) zapewnia teraz natywne wsparcie dla Search API obok Agent API i Sonar API.

Pełna dokumentacja znajduje się pod adresem docs.perplexity.ai