Wyszukiwanie hybrydowe (Dense + Sparse Search)
Architektura retrievalu w nowoczesnych systemach RAG, łącząca semantyczne wyszukiwanie wektorowe (Dense Embeddings) z klasycznym indeksowaniem pełnotekstowym opartym na słowach kluczowych (Sparse / BM25) za pomocą algorytmów fuzji rankingów (RRF).
1. Przegląd koncepcji i problem systemowy
Na etapie tworzenia systemów RAG inżynierowie często polegają wyłącznie na bazach danych wektorowych: tekst jest dzielony na chunki, przepuszczany przez model embeddings i zapisywany w indeksie HNSW.
W środowisku produkcyjnym takie podejście nieuchronnie napotyka „ślepotę wektorową”:
- Porażka przy dokładnych identyfikatorach: Gdy inżynier szuka kodu błędu
ERR_CONNECTION_REFUSED, wyszukiwanie wektorowe zwraca ogólne artykuły o sieciach, ale pomija dokładną linię w logach. - Porażka przy rzadkich nazwach własnych: Nowe nazwy frameworków, unikalne nazwiska czy specyficzne stałe projektowe nie mają gęstego reprezentowania w wagach modelu embeddings.
- Ograniczenia klasycznego wyszukiwania pełnotekstowego (BM25): Klasyczne wyszukiwanie, odwrotnie, nie jest w stanie zrozumieć abstrakcyjnych koncepcji, synonimów ani parafraz.
Hybrid Search syntetyzuje to, co najlepsze z obu światów: równolegle wyszukuje dokumenty po dokładnych słowach kluczowych (Sparse/BM25) oraz po znaczeniu semantycznym (Dense/Vectors), a następnie łączy wyniki w jeden zrównoważony zestaw wyników.
2. Taksonomia architektoniczna i model mentalny
System wyszukiwania hybrydowego składa się z trzech kluczowych bloków architektonicznych:
- 1. Warstwa wyszukiwania rozrzedzonego (Sparse / Lexical Retrieval): Algorytm BM25 lub TF-IDF nad indeksem odwróconym. Oblicza dokładną częstotliwość występowania terminów z uwzględnieniem długości dokumentu. Gwarantuje znajdowanie dokładnych dopasowań słów, numerów katalogowych, zmiennych i kodów błędów.
- 2. Warstwa wyszukiwania gęstego (Dense / Semantic Retrieval): Wyszukiwanie wektorowe oparte na odległości euklidesowej lub kosinusowej (HNSW/IVF). Odpowiada za wyodrębnianie dokumentów o podobnej treści, nawet jeśli w zapytaniu i tekście nie ma żadnego wspólnego słowa.
- 3. Warstwa fuzji rankingów (Fusion Layer):
- Reciprocal Rank Fusion (RRF): Nie zależy od skal punktacji, operuje wyłącznie na pozycjach (rankingach) w każdej liście. Najbardziej stabilny standard.
- Linear Weighted Fusion (Alfa-fuzja): Normalizacja punktów i ważone sumowanie: $\text{Score} = \alpha \cdot S_{\text{dense}} + (1 - \alpha) \cdot S_{\text{sparse}}$.
- 4. Nauczone modele rozrzedzone (Learned Sparse / SPLADE): Współczesny kierunek łączący analizę sieci neuronowych ze strukturą indeksu odwróconego, samodzielnie rozszerzający zapytanie o ważne słowa kluczowe.
3. Pipeline techniczny i mechanika wewnętrzna
Cykl życia zapytania hybrydowego w silniku wyszukiwania:
- Dual Query Dispatch (Równoległe dystrybuowanie): Przychodzące zapytanie użytkownika jest jednocześnie przekształcane na wektor (przez API embeddings) oraz na zapytanie tekstowe dla parsera pełnotekstowego (FTS query).
- Concurrent Index Lookup (Równoległe wyszukiwanie):
- Ścieżka A: Silnik wektorowy skanuje graf HNSW i zwraca top-50 kandydatów według podobieństwa kosinusowego.
- Ścieżka B: Indeks odwrócony znajduje top-50 kandydatów według formuły BM25.
- Score Normalization & RRF Aggregation (Fuzja): Listy kandydatów są deduplikowane po ID dokumentu. Każdemu kandydatowi przypisywany jest integralny wynik RRF na podstawie jego pozycji w obu zestawach wyników.
- Final Cutoff & Re-ranking (Końcowa selekcja): Top-$K$ dokumentów o najwyższym rankingu jest przekazywanych do końcowego etapu rerankingu krzyżowego enkoderem (Re-ranker) lub bezpośrednio do kontekstu LLM.
4. Praktyczne scenariusze inżynierskie w produkcji
01. Inteligentne wyszukiwanie w repozytoriach kodu
Programista wpisuje: „gdzie zaimplementowano cache sesji redis”.
- BM25 natychmiast znajduje pliki, w których wspomniana jest stała
'REDIS_SESSION_KEY'. - Wyszukiwanie Dense podciąga moduł autoryzacji, gdzie opisano strategię unieważniania sesji bez bezpośredniego użycia słowa „cache”.
- RRF umieszcza na pierwszym miejscu plik
auth/session-cache.ts, który występuje w obu zestawach wyników.
02. Wyszukiwanie E-Commerce z mieszanką cech i nazw
Użytkownik szuka: „cichy odkurzacz bezprzewodowy v15”. BM25 znajduje dokładny model Dyson V15, a wyszukiwanie Dense filtruje modyfikacje pod kątem semantyki niskiego poziomu szumów, zapewniając idealną precyzję konwersji.
03. Referencje medyczne i farmaceutyczne
Wyszukiwanie po objawach („ciężkość w prawym podżebrzu”) w połączeniu z dokładną łacińską nazwą substancji czynnej preparatu lub kodem diagnozy medycznej wg ICD-10.
5. Pułapki, typowe błędy i bezpieczeństwo
- Niespójność skal surowych punktów (Score Incommensurability): Najgrubszy błąd – bezpośrednie dodawanie bliskości kosinusowej (od 0 do 1) do wyniku BM25 (który może wynosić 25 i więcej). To całkowicie niweluje komponentę wektorową. Zawsze stosuj RRF lub normalizację Min-Max.
- Podwójne obciążenie infrastruktury (Latency Overhead): Sekwencyjne wykonywanie najpierw BM25, a potem wyszukiwania wektorowego podwaja opóźnienie. Oba zapytania muszą być wykonywane ściśle asynchronicznie przez
Promise.all()lub równoległe wątki bazy danych. - Przechylenie wagi $\alpha$ ku wartościom skrajnym: Ustawienie wagi $\alpha = 0.9$ zamienia wyszukiwanie hybrydowe w zwykłe wyszukiwanie wektorowe, niwelując koszty utrzymania indeksu odwróconego.
FAQ: Wyszukiwanie hybrydowe (Dense + Sparse Search)
Powiązane pojęcia
Przerankowanie (Cross-Encoder Reranking)
Dwuetapowa metodologia wyszukiwania w systemach RAG: szybka wstępna selekcja kandydatów (Bi-Encoder / BM25) z następowym precyzyjnym rankowaniem za pomocą modelu cross-encoder (Cross-Encoder / Cohere Rerank / BGE-Reranker).
Bazy wektorowe (Vector DBs & ANN Search)
Specjalizowane systemy zarządzania bazami danych (SGBD) oraz rozszerzenia (Qdrant, pgvector, Milvus, Chroma, Turso), zoptymalizowane do przechowywania milionów wielowymiarowych wektorów i błyskawicznego przybliżonego wyszukiwania najbliższych sąsiadów (Approximate Nearest Neighbors).
RAG (Retrieval-Augmented Generation)
Wzorzec architektoniczny AI dla przedsiębiorstw, który dynamicznie wzbogaca okno kontekstowe modelu o zweryfikowane, istotne wiedze z zewnętrznych repozytoriów (baz wektorowych, grafów, indeksów pełnotekstowych) przed wygenerowaniem końcowej odpowiedzi.
Strategia dzielenia dokumentów (Chunking Strategies)
Metodologia dekompozycji dużych dokumentów i baz kodu na samodzielne informacyjnie fragmenty (chunki) w celu generowania wektorowych osadzeń oraz precyzyjnego wyszukiwania w systemach RAG.