Przejdź do treści
sapiqa

Context Engine

Agent nie zgaduje. Szuka, i widać jak.

Każde pytanie do agenta przechodzi przez ten sam silnik wyszukiwania. Wpisz pytanie i zobacz każdy etap: które fragmenty znalazło BM25, które embeddingi, jak je połączyła fuzja i co wybrał reranker.

  1. 01

    Chunking

    600 atomowych fragmentów (krok przepływu, krok przewodnika, decyzja), każdy z tytułem rodzica. Średnio ~100 znaków.

  2. 02

    Tagi

    Kontrolowany słownik 30 tagów z rdzeniami PL/EN. Pokrywa odmianę polską bez stemmera i łączy języki.

  3. 03

    BM25

    Dokładne słowa, nazwy i kody: to, co embeddingi rozmywają. ~1 ms.

  4. 04

    Dense

    paraphrase-multilingual-MiniLM-L12-v2 (ONNX), 384 wymiary, PL i EN w jednej przestrzeni. ~10 ms.

  5. 05

    Fuzja RRF

    Reciprocal rank fusion łączy rankingi po pozycjach, więc wyniki BM25 i cosinusy nie muszą mieć wspólnej skali.

  6. 06

    Reranking

    jina-reranker-v2 multilingual (cross-encoder) czyta pytanie razem z 12 najlepszymi fragmentami.

  7. 07

    Small-to-big

    Agent dostaje całe sekcje nadrzędne najlepszych fragmentów, nie same zdania.

Zadaj pytanie silnikowi

Evale: co daje każdy etap

48 pytań po polsku i angielsku, sformułowanych innymi słowami niż strona. Mierzymy na poziomie sekcji, bo to sekcje czyta agent.

KonfiguracjaRecall@1Recall@3MRR@10p50 ms
BM250.670.750.7251
BM25 + tag boost0.600.790.7201
Dense (multilingual MiniLM)0.500.920.70910
Hybrid: BM25 + dense (RRF)0.620.940.7709
Hybrid + tag boost0.620.940.7819
Hybrid → rerank0.750.960.859850
Hybrid + tag boost → rerank0.750.940.854960

Chmura tagów korpusu

30 tagów z kontrolowanego słownika, wspólnych dla obu języków. Wielkość to liczba fragmentów.

…

Decyzje

Atomowe fragmenty, odpowiedź z sekcji

Cięcie po liniach wyrywało kroki z kontekstu: na pytanie o zwrot reranker wybierał „odpowiada na głos”. Fragmenty budowane ze struktury treści niosą tytuł rodzica, a agent czyta całą sekcję.

Tagi tam, gdzie pomagają

Tagi jako trzecia lista w fuzji obniżały Recall@1. Jako mnożnik po fuzji pomagają bez modeli (R@3 0,75 → 0,79), ale po rerankingu już nie, więc w produkcji są wyłączone, a włączone w trybie awaryjnym.

Modele w osobnej usłudze

Modele potrzebują ~1,5 GB i sekund na start. Osobna usługa Cloud Run (tylko z IAM) nie spowalnia rezerwacji, a API ma w zapasie BM25 i odpowiada zawsze.

Indeks wbudowany i pilnowany

Wektory liczą się przy budowie obrazu. Indeks zna skrót korpusu i nazwę modelu i odmawia działania, jeśli treść strony się zmieniła, zamiast po cichu zwracać złe wyniki.

Masz proces, który powinien działać sam?

30 minut, bez opłat. Powiem, czy to ma sens, jak bym to zbudował i ile kosztowałoby utrzymanie.

Umów rozmowę