Wyszukiwarki

Poza słowami kluczowymi: dlaczego algorytm BM25 wciąż wygrywa z semantyką

Współczesna architektura systemów wyszukiwania stoi na rozdrożu pomiędzy matematyczną precyzją a semantyczną intuicją. Przez dekady standardem rynkowym był BM25 (Best Matching 25) – algorytm napędzający silniki takie jak Elasticsearch czy Lucene. Jego dominacja nie wynika z przypadku, lecz z genialnej w swej prostocie statystyki, która pozwala błyskawicznie oceniać relewantność dokumentów bez potrzeby angażowania kosztownych procesorów graficznych.

Matematyka ukryta w tekście

BM25 operuje na modelu „worka słów” (bag-of-words), ignorując gramatykę na rzecz trzech kluczowych parametrów: częstotliwości występowania terminu, rzadkości słowa w całym zbiorze (IDF) oraz długości dokumentu. To, co odróżnia go od prymitywnego liczenia słów, to mechanizm nasycenia częstotliwości (term frequency saturation). Dzięki parametrowi k₁, algorytm rozumie, że jeśli słowo kluczowe pojawi się w tekście dwudziestokrotnie, nie czyni go dwadzieścia razy bardziej wartościowym niż dokument z pięcioma wystąpieniami. To skuteczna bariera przeciwko tak zwanemu keyword stuffingowi, czyli sztucznemu upychaniu fraz w celu oszukania rankingu.

Kolejnym filarem jest normalizacja długości tekstu, kontrolowana przez zmienną b. Zapobiega ona faworyzowaniu obszernych dokumentów, które statystycznie częściej zawierają dowolne słowa tylko ze względu na swoją objętość. Mimo tej precyzji, BM25 pozostaje „ślepy” na znaczenie. Szukając frazy „atrakcyjne oprocentowanie”, algorytm nie znajdzie dokumentu o „tanich kredytach”, jeśli te konkretne wyrazy się w nim nie pojawią.

Rewolucja wektorowa i model RAG

Tu do gry wchodzi Retrieval-Augmented Generation (RAG) oparty na embeddingach, czyli reprezentacjach wektorowych. W przeciwieństwie do BM25, wyszukiwanie wektorowe nie szuka identycznych znaków, lecz podobieństwa pojęć w wielowymiarowej przestrzeni matematycznej. Dokumenty i zapytania są tłumaczone na gęste wektory; jeśli dwa koncepty są bliskie znaczeniowo – jak „zawał serca” i „ostry zespół wieńcowy” – ich wektory będą wskazywać ten sam kierunek, co zmierzymy podobieństwem cosinusowym (cosine similarity).

Metoda ta pozwala systemom RAG na głębokie zrozumienie intencji użytkownika, niwelując barierę niespójnego słownictwa. Jest to jednak rozwiązanie kosztowne operacyjnie – wymaga generowania embeddingów w czasie rzeczywistym i wiąże się z większymi opóźnieniami (latency) niż błyskawiczne operacje na indeksach odwróconych w BM25.

Hybryda jako jedyna słuszna droga

Krytyczne spojrzenie na oba podejścia prowadzi do wniosku, że żadne z nich nie jest kompletne. BM25 doskonale radzi sobie z unikalnymi nazwami własnymi, kodami produktów czy rzadkimi terminami technicznymi, o które wyszukiwanie wektorowe często „rozmywa” w szerokim kontekście semantycznym. Z kolei wektory ratują sytuację tam, gdzie użytkownik nie potrafi precyzyjnie nazwać obiektu swoich poszukiwań.

W profesjonalnych systemach produkcyjnych standardem stało się wyszukiwanie hybrydowe. Polega ono na jednoczesnym uruchomieniu obu algorytmów i łączeniu ich wyników. Dzięki temu otrzymujemy system, który jest jednocześnie odporny na błędy językowe, rozumie niuanse znaczeniowe, a przy tym nie traci z oczu konkretnych, twardych faktów zawartych w słowach kluczowych.