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.
01
Chunking
600 atomowych fragmentów (krok przepływu, krok przewodnika, decyzja), każdy z tytułem rodzica. Średnio ~100 znaków.
02
Tagi
Kontrolowany słownik 30 tagów z rdzeniami PL/EN. Pokrywa odmianę polską bez stemmera i łączy języki.
03
BM25
Dokładne słowa, nazwy i kody: to, co embeddingi rozmywają. ~1 ms.
04
Dense
paraphrase-multilingual-MiniLM-L12-v2 (ONNX), 384 wymiary, PL i EN w jednej przestrzeni. ~10 ms.
05
Fuzja RRF
Reciprocal rank fusion łączy rankingi po pozycjach, więc wyniki BM25 i cosinusy nie muszą mieć wspólnej skali.
06
Reranking
jina-reranker-v2 multilingual (cross-encoder) czyta pytanie razem z 12 najlepszymi fragmentami.
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.
| Konfiguracja | Recall@1 | Recall@3 | MRR@10 | p50 ms |
|---|---|---|---|---|
| BM25 | 0.67 | 0.75 | 0.725 | 1 |
| BM25 + tag boost | 0.60 | 0.79 | 0.720 | 1 |
| Dense (multilingual MiniLM) | 0.50 | 0.92 | 0.709 | 10 |
| Hybrid: BM25 + dense (RRF) | 0.62 | 0.94 | 0.770 | 9 |
| Hybrid + tag boost | 0.62 | 0.94 | 0.781 | 9 |
| Hybrid → rerank | 0.75 | 0.96 | 0.859 | 850 |
| Hybrid + tag boost → rerank | 0.75 | 0.94 | 0.854 | 960 |
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.