Kontekstowe odzyskiwanie informacji w RAG: Co ukrywa wartość 67%, jakie są jej koszty i kiedy zawodzi.
Pobieranie kontekstowe w RAG: jak prefiksy pomagają naprawić odosobnione fragmenty, dlaczego wartość 67% odnosi się do trzech zmian, co oszczędza buforowanie promptów i kiedy to zawodzi.
Źródła: Your RAG Chunk Doesn’t Know Whose Revenue Grew 3% — Contextual Retrieval
„Przychody firmy wzrosły o 3% w porównaniu z poprzednim kwartałem”. Baza danych wektorowych może przechowywać tysiące takich zdań, a każde z nich jest funkcjonalnie bezużyteczne, dopóki nie stanie się jasne, o której firmie i którym kwartalem mowa.
Błąd nie leży w modelu, który generuje ostateczną odpowiedź. Leży w fragmentach tekstu, które trafiły do indeksu bez określenia ich tożsamości. Każdy pipeline RAG oparty na dokumentach, umowach, dokumentacji technicznej lub kodzie źródłowym jest narażony na takie problemy, ponieważ te zbiory tekstu powtarzają te same wzorce językowe w dziesiątkach miejsc i nie dają narzędziom do ich identyfikacji.
Lek jest tani. Jego cena jest wyrażana w dolarach za milion tokenów, a wystarczy jedno wygenerowane zdanie, napisane raz podczas tworzenia indeksu. W testach Anthropic takie prefiks zmniejszyło liczbę nieudanych wyszukiwań o aż 67%. Ta podana liczba ukrywa pewną strukturę, a przypadek użycia wybrany w celu jej pokazania przyciągnął później kontrprzykład. Istnieją również cztery ustawienia, w których wydatek trudno uzasadnić.
Podsumowanie głównej idei
Gdy indeks dzieli dokumenty na fragmenty składające się z kilkuset tokenów, niektóre z tych fragmentów tracą swoją tematykę oraz okres czasowy. Zdanie „Przychody wzrosły o 3%” nie wskazuje ani firmy, ani kwartału, a żaden model embeddingu nie może tego przywrócić, ponieważ ta informacja nie znajduje się w tekście.
Contextual Retrieval rozwiązuje ten problem raz, podczas indeksowania. Model językowy otrzymuje cały dokument wraz z jednym fragmentem i generuje krótki prefiks opisowy składający się z pięćdziesięciu do stu tokenów, który określa, czym jest ten fragment, kogo dotyczy i kiedy.
W wielu streszczeniach pomija się drugi krok, który jest najważniejszy. Wzbogacony tekst jest wprowadzany do indeksu wektorowego oraz do indeksu BM25 – narzędzia do rankowania leksykalnego, które istniały przed embeddingami i porównują dokładne słowa, a nie ich znaczenie. Jedna interwencja naprawia zatem obie części mechanizmu wyszukiwania, przy jednorazowym koszcie indeksowania, a nie przy dodatkowym koszcie za każde zapytanie.
W ocenie Anthropic same prefiksy embeddingowe zmniejszyły liczbę nieudanych wyszukiwań o 35%. Pełny mechanizm, włączając BM25 i ponowne rankowanie, obniżył tę liczbę o 67%. Caching promptów sprawia, że cała operacja jest tania, ponieważ cały dokument jest czytany tylko raz, a nie od nowa dla każdego fragmentu.
Technika ta nie jest uniwersalna, i właśnie w tym tkwi jej urok. Najpierw mechanizm oraz sam prompt.
Przedrostek nadający identyfikator fragmentowi
Intuicja przychodzi przed mechaniką. Fragment wycięty z dokumentu to strona wyrwana z teczki, bez nagłówka, numeru sprawy czy daty. Przeczytana osobno, nie pozwalałaby stwierdzić, czy wzrosły przychody której firmy i kiedy. Model embeddingowy boryka się z taką samą pustką, tylko że nie ma sposobu, by ją zaznaczyć.
Mechanizm przywraca brakujący nagłówek. Podczas indeksowania model otrzymuje dwa dane wejściowe – pełny dokument źródłowy oraz jeden z jego fragmentów – i ma jeden cel: napisać krótki kontekst, który umieści ten fragment w całości.
Prompt firmy Anthropic mieści się w kilku liniach:
<document>
{{WHOLE_DOCUMENT}}
</document>
Here is the chunk we want to situate within the whole document
<chunk>
{{CHUNK_CONTENT}}
</chunk>
Please give a short succinct context to situate this chunk within the
overall document for the purposes of improving search retrieval of the
chunk. Answer only with the succinct context and nothing else.
Gdy zastosujemy to do przykładowego fragmentu, wynik może wyglądać tak: „Ten fragment pochodzi z dokumentu SEC dotyczącego wyników firmy ACME Corp w II kwartale 2023 roku; przychody z poprzedniego kwartału wyniosły 314 milionów dolarów”. Zaraz po tym następuje oryginalne stwierdzenie o wzroście o 3%. Około stu tokenów przekształca ten odosobniony fragment w rekord zawierający klucz.”
Wzbogacony tekst jest następnie zapisywany do dwóch indeksów. Jeden to indeks embeddingów (Contextual Embeddings), a drugi indeks słów kluczowych (Contextual BM25). Dzięki podaniu pełnej nazwy ACME w każdym fragmencie, BM25 może odnaleźć tę firmę na dowolnej stronie raportu, podczas gdy wcześniej wzmiankowano o niej tylko na okładce.
To również nie była pierwsza wypróbowana idea. Anthropic opisał wcześniejsze eksperymenty z ogólnymi streszczeniami dokumentów dołączanymi do fragmentów, które przyniosły „bardzo ograniczone korzyści”, a także z technologią HyDE i indeksowaniem opartym na streszczeniach, które również nie okazały się zbyt skuteczne (Anthropic, wrzesień 2024 r.). Pozostał więc tylko prefiks.
Różnica pomiędzy streszczeniem a prefiksem jest czysto mechaniczna. Jedno streszczenie jest wspólne dla wszystkich fragmentów dokumentu, więc nie może odróżnić fragmentu A od fragmentu B w tym samym rocznym raporcie, podczas gdy każdy prefiks jest tworzony specjalnie dla konkretnej pozycji w dokumencie.
Korpora złożone z dokumentacji, umów, materiałów technicznych lub bazy kodu, w których jeden wzorzec językowy pojawia się w wielu miejscach, to dokładnie tam obecnie giną fragmenty. Sam prefiks embeddingowy zapewnia już 35% redukcji błędów, a to jest dopiero pierwszy poziom.
Drabina wewnątrz jednej liczby
Często przytacza się wartość „67%” jako efekt stosowania pojedynczej techniki. Opublikowana tabela pokazuje coś innego – lepiej ją interpretować jako sekwencję kroków niż jako jeden skok.
Wyniki mierzy się jako 1 minus recall@20: to odsetek zapytań, których poprawne fragmenty nie znalazły się w pierwszych dwudziestu wynikach. Anthropic nazywa to wskaźnikiem niepowodzeń i przedstawia go dla baz kodu, utworów fikcyjnych, artykułów z arXiv oraz publikacji naukowych.
Cztery konfiguracje budują się na sobie nawzajem:
- Baseline – z zwykłymi embeddingami na surowych fragmentach: 5,7% zapytań zawodzi.
- Tylko z embeddingami kontekstowymi: 3,7%, co stanowi 35% redukcji dzięki samemu prefiksowi.
- Z dodanymi embeddingami kontekstowymi BM25: 2,9%, co daje łącznie 49% redukcji, przy czym dodatkowy efekt pochodzi od indeksu słów kluczowych.
- Z dodanym ponownym sortowaniem: 1,9%, od czego pochodzi wartość 67% w nagłówkach, dzięki ostatniemu etapowi.
Reranker to drugi model, który łącznie analizuje zapytanie oraz kandydatów na odpowiedzi. Jest wolniejszy od pierwszej fazy przetwarzania, ale znacznie dokładniejszy. W tym przypadku zmniejszył liczbę kandydatów z 150 do dwudziestu. Wszystkie cztery wykresy przedstawiają najskuteczniejszą konfigurację embeddingów w teście – Gemini Text 004 – i nie stanowią średniej dla wszystkich modeli embeddingowych wypróbowanych przez Anthropic.
Taka analiza zmienia decyzję, a nie tylko opis sytuacji. Zespół, który już stosuje hybrydowe wyszukiwanie i reranking w produkcji, powinien oczekiwać, że sama kontekstualizacja przyniesie wynik bliższy trzydziestu pięciu procentom niż sześćdziesięciu siedmiu, ponieważ pozostałe dwa elementy są już płatne. Błędem jest traktowanie tego liczby jako jedynego czynnika wpływającego na wynik, a znaczna część redukcji wynika z normalnego funkcjonowania standardowych komponentów do wyszukiwania informacji.
W temacie na Hacker News pojawia się ważna uwaga: nikt nie opublikował wyników prostego algorytmu BM25, bez żadnej kontekstualizacji, w tym samym teście. Bez tej informacji nie można ustalić, w jakim stopniu wzrost do 49% wynika z kontekstu w indeksie leksykalnym, a w jakim z prostego wyszukiwania hybrydowego.
Pułapka przy cytowaniu danych
Każdy, kto cytuje te wyniki, może również wpaść w pułapkę obliczeniową. Przewodnik Anthropic zawiera mniejszy zbiór danych składający się z dziewięciu baz kodu i 248 zapytań, oceniany według innego wskaźnika: Pass@20 wzrasta z 90% w przypadku bazowego rozwiązania do 97% w przypadku pełnego zestawu narzędzi. Różny zbiór danych, różny wskaźnik – dlatego łączenie tych wartości z wcześniejszymi to po prostu błąd.
To obniżenie nie jest bezkosztowe. Kosztuje pieniądze podczas indeksowania, ale jeden mechanizm sprawia, że ten koszt wynosi mniej więcej dolar, a nie tysiąc.
Dlaczego dolar, a nie tysiąc
Rozważmy prosty podejście. Dokument składający się z 8 000 tokenów jest dzielony na dziesięć fragmentów. Bez żadnej optymalizacji każde wezwanie ponownie odczytuje cały dokument, więc identyczny tekst jest przetwarzany dziesięć razy w celu opisania dziesięciu różnych akapitów.
To właśnie taki profil kosztów przez lata blokował tę ideę. Ludzie odrzucali ją jako metodę siłową i sprzeciwiali się jej przy planowaniu budżetu, na długo zanim udało się zmierzyć korzyści związane z jakością.
Caching promptów zmienia te obliczenia w jednym miejscu. Dokument jest wysyłany raz jako stały prefiks. Pierwsze żądanie wiąże się z zapisem do pamięci cache w cenie około 1,25 raza wyższej od ceny bazowej, natomiast każde kolejne żądanie dotyczące tego samego dokumentu wiąże się z odczytem z pamięci cache w cenie stanowiącej około jednej dziesiątej ceny bazowej.
Przy założeniu typowych rozmiarów fragmentów i dokumentów, kontekstualizacja kosztuje jednorazowo 1,02 dolara za milion tokenów tekstu źródłowego. Ta kwota jest podawana wraz z parametrami, takimi jak fragmenty o długości 800 tokenów i dokumenty o długości 8 000 tokenów, których koszty rzadko są publikowane. Dzięki temu można przeprowadzić ponowne obliczenia na podstawie lokalnych danych, zamiast polegać na nich ślepo.
W przykładzie z książki kucharskiej obejmującym 737 fragmentów, blisko 62% tokenów wejściowych pochodziło z pamięci cache. Całkowity koszt spadł z około 9,20 dolara do około 2,85 dolara. Lepszy model nie był przyczyną oszczędności wynoszących dwie trzecie – decydujące okazało się przeczytanie dokumentu tylko raz.
Detal uporządkowania, który decyduje o wszystkim
Kluczowy detal decyduje o tym, czy cokolwiek z tego się urzeczywistni. Cache działa na podstawie dopasowań prefiksów, więc wszystkie fragmenty jednego dokumentu muszą być przetwarzane kolejno, aby móc ponownie wykorzystać jedną pozycję w cache’u. Paralelizm pomiędzy dokumentami jest dozwolony – jeden procesor na dokument – ale łączenie fragmentów z kilku dokumentów w jednej kolejce nie jest możliwe. Typowy, prosty pipeline rozdziela fragmenty między wspólny pool wątków, co skutkuje dostępem do cache’u tylko od czasu do czasu i koniecznością płacenia pełnej stawki.
Do tego wykresu należy również dodatkowe ostrzeżenie. Cena 1,02 dolara odzwierciedla ceny modelu z 2024 roku i nie jest stałą. Następna generacja tego modelu pobiera cztery razy większą opłatę za dane wejściowe, więc powtarzanie tej kwoty dzisiaj bez ponownego obliczenia kosztów daje przestarzałą informację.
Z punktu widzenia ekonomii sytuacja wygląda doskonale w przypadku dokumentów składanych do SEC, których typ właśnie został użyty jako przykład. Jednak ktoś przetestował dokładnie ten sam typ dokumentu i uzyskał odwrotny wynik.
Przykład flagowy, który nie przejdzie własnego testu
Tutaj zaczyna się część, którą pomijają większość streszczeń.
Illustracja wykorzystała fragment z dokumentu składanego do SEC, ale lista mierzonych domen pomija te dokumenty. Wymienia ona bazy kodowe, utwory fikcyjne, arXiv oraz publikacje naukowe, więc dokumenty finansowe służą jako przykład narracyjny, a nie jako przetestowany korpus.
Inni wypełnili tę lukę i odkryli coś przeciwnego. Inżynierowie Snowflake (Tarakad, Yu, Samdani, Merrick, marzec 2025) użyli około 23 000 prawdziwych dokumentów typu 10-K i 10-Q jako korpusu i ocenili swoją metodę na podstawie około 500 ręcznie napisanych zapytań.
Wzbogacanie każdego fragmentu obszernym, unikalnym streszczeniem napisanym przez model, które zespół nazwał kontekstowym wyszukiwaniem, obniżyło wyniki o 5,8 punktu w przypadku jednego modelu i o 0,4 w przypadku drugiego. Rezultatem była strata, przy znacznie wyższych kosztach obliczeniowych.
Kiedy tanie metadane przewyższają drogie modele
Bardziej interesującym odkryciem jest to, co zadziałało w tym samym eksperymencie. Dodanie metadanych na poziomie dokumentu, a mianowicie nazwy firmy, daty składania i typu formularza, podniosło dokładność odpowiedzi z około 50 do 60% na poziom 72–75%, przy czym w ogóle nie wykorzystano modelu językowego.
Ten kontrast pokazuje kluczową lekcję. Problem był rzeczywisty, ponieważ dany fragment rzeczywiście nie znał swojej firmy. Mimo to najtańsze rozwiązanie okazało się skuteczniejsze od najdroższego, ponieważ nazwa firmy pozostaje niezmienna przez cały proces składania dokumentu, a jej dołączenie nie wymaga żadnego modelu.
To porównanie nie jest czystą replikacją, co należy otwarcie podkreślić. Snowflake użyło własnego promptu, modelu embedowania, rozmiaru fragmentów oraz metod oceny, więc wyniki nie można porównywać bezpośrednio, jakby pochodziły z jednego narzędzia. Mimo to dotyczą one tego samego typu dokumentu, dlatego są istotne.
Dwa kolejne wyniki łagodzą entuzjazm. Badanie z 2026 roku, oparte na T²-RAGBench i niezależne od studium Snowflake, sprawdzało kontekstualizację w dokumentach finansowych zawierających tabele. Wykazało ono wzrost wyniku recall@5 o 2,8 punktu procentowego przy gęstym wyszukiwaniu oraz o 2,2 przy wyszukiwaniu hybrydowym (arXiv). Ten wzrost jest rzeczywisty i powtarzalny, ale jest daleki od 67%.
To samo badanie, obejmujące ponad 23 000 zapytań w 7 318 dokumentach, zawiera również informację, która powinna zaniepokoić wszystkich pracujących z raportami: większość pozostałych błędów wynika z niezgodności struktury tabel. Przedrostek tekstowy nie może w tym pomóc, ponieważ jedynie dokładnie oznacza fragment, który pozostaje nieczytelny.
Drugi punkt dotyczy zasobów obliczeniowych. W badaniu ConTEB (2025) porównano metodę w stylu Anthropic z modelem embeddingowym wyszkolonym specjalnie do tego celu. Model wyszkolony osiągnął średnio nieco lepsze wyniki i przetwarzał każdy dokument mniej więcej sto razy szybciej (arXiv). Różnice w jakości są niewielkie – podejście oparte na prefiksach wygrywa w niektórych zbiorkach danych, takich jak korpus ubezpieczeniowy, natomiast przegrywa niewielką różnicą w innych. To, co faktycznie oferuje model wyszkolony, to niższe koszty obliczeniowe.
Istnieje również inne rozwiązanie konkurencyjne. Late Chunking (Jina AI, wrzesień 2024) rozwiązuje ten sam problem na niższym poziomie, poprzez embeddingowanie całego dokumentu i dzielenie go na fragmenty dopiero po zastosowaniu transformera, bez wykorzystywania modelu językowego. Jego słabością strukturalną jest to, że do indeksu słów kluczowych nic nie jest dodawane, co oznacza utratę połowy korzyści, jakie zapewnia Contextual BM25.
Dla większości korpusów korporacyjnych to właśnie ta asymetria, a nie różnica metryczna, prawdopodobnie decyduje o wyborze. Jest to decyzja subiektywna, a przytaczany benchmark ConTEB nie testuje jej bezpośrednio, ponieważ BM25 nie znajduje się wśród komponentów, które ocenia.
Gdy okazuje się, że przykład pokazowy ma kontrprzykład, istotne staje się pytanie, w jakich przypadkach ta technika okazuje się nieskuteczna oraz jak można sprawdzić dany korpus w ciągu pięciu minut.
Pięć minut testowania przed jakimikolwiek wydatkami
Należy zacząć od testu, a nie od implementacji. Wybierz dziesięć losowych fragmentów z indeksu i przeczytaj każdy z nich osobno. Jeśli można określić, o czym jest dany fragment i skąd pochodzi, oznacza to, że fragmenty te już zawierają kontekst, a dodanie prefiksu przyniosłoby jedynie dodatkowe tokeny, a nie informacje.
Test nie wymaga kodu i trwa pięć minut. Jest to również jedyny dowód dotyczący rzeczywistych danych, a nie danych kogoś innego.
Cztery udokumentowane sytuacje, w których ta technika nie pomaga:
- Korpus liczący mniej niż dwieście tysięcy tokenów. W takiej skali własna rada Anthropic poleca umieszczenie całej bazy wiedzy w promptzie i całkowite pominięcie procesu wyszukiwania. Kontekstualizacja jest przeznaczona do sytuacji, gdy korpus nie mieści się już w oknie kontekstowym.
- Części, które już funkcjonują samodzielnie. Pary z FAQ, karty produktów oraz hasła w słowniku zawierają już sam temat, więc prefiks jedynie go powtarza.
- Korpus, który często się zmienia. Koszt występuje tylko raz, jeśli dokumenty są stabilne. Dokumenty aktualizowane co tydzień są opłacane ponownie każdego tygodnia.
- Tabele i raporty finansowe. Jeśli problemem jest struktura tabeli, a nie brak nazwy firmy, część ta zostaje dokładnie opisana, ale nadal pozostaje nieczytelna.
Takie ujęcie mieści się w trzech liniach. Mały, stabilny korpus nadaje się do długich kontekstów z wykorzystaniem buforowania. Duży korpus z niejednoznacznymi fragmentami pasuje do wyszukiwania kontekstowego. Krótkie, samodzielne wpisy nadają się do zwykłej hybrydowej wyszukiwarki bez dodatkowych opłat.
Porządek wdrażania ma znaczenie i to właśnie on najczęściej powoduje rozczarowanie. Kontekstualizacja zwiększa wartość hybrydowej wyszukiwarki, ale jej nie zastępuje. Zespół bez BM25 i mechanizmu ponownego rankingu powinien najpierw je dodać – pominięcie tego porządku oznacza konieczność zakupu trzeciego poziomu, podczas gdy pierwszy wciąż jest brakujący.
Oblicz koszty przed wdrożeniem, a nie później. Formuła jest znana, rozmiary fragmentów i dokumentów są ustalone, a jedyną prawdziwą nieznanną wielkością jest to, czy proces faktycznie korzysta z bufora.
Co zabrać na przegląd projektu
Wróćmy do pierwszego zdania. Stwierdzenie „Przychody wzrosły o 3%” nigdy nie było błędne. Było pozbawione tematu. Rozwiązaniem nie był ani inteligentniejszy model, ani lepsze wplecenie danych, tylko jeden nagłówek dodawany raz, podczas indeksowania.
- Niezależnie od siły modelu generującego odpowiedzi, fragment bez kontekstu jest bezużyteczny. Przyczyną jest indeksowanie, a nie halucynacje.
- Trzy interwencje łącznie dają 67% efektywności, a nie jedna. Sam prefiks daje już blisko trzydzieści pięć procent, a hybrydowe wyszukiwanie z ponownym sortowaniem dostarcza resztę.
- Caching promptów sprawił, że technika stała się dostępna cenowo, a nie dzięki silniejszemu modelowi, przy czym oszczędności znikają bez przetwarzania dokumentów pojedynczo.
- Typ dokumentu użyty w przykładzie ma udokumentowany przypadek przeciwny: w dokumentach SEC tańsze metadane dokumentów przewyższyły efektywność drogiego modelu działającego na poziomie poszczególnych fragmentów.
- Pięciominutowa weryfikacja rzeczywistego indeksu ma większe znaczenie niż jakikolwiek nagłówek. Przeczytaj dziesięć fragmentów osobno.
W praktyce sprowadza się to do trzech kroków, wykonywanych w kolejności: przeprowadź test dziesięciu fragmentów, sprawdź, czy korpus odpowiada jednemu z czterech negatywnych przypadków, a dopiero potem oblicz koszt indeksowania za pomocą opublikowanej formuły. Tylko trzeci krok wymaga budżetu, a pierwsze dwa decydują o tym, czy warto go zażądać.
Nie da się uniknąć jednej zastrzeżenia. Anthropic opublikował szczegółowy rozkład wyników w załączniku, w formie statycznego pliku PDF, a nie jako surowy zbiór danych, a zespoły niezależne, które próbowały odtworzyć te liczby, wskazują to jako problem z powtarzalnością. Oceny przeprowadzone bezpośrednio na korpusach w językach innych niż angielski są również rzadkie. Dopóki te luki nie zostaną zamknięte, każdy przedstawiony tu wynik pochodzi z konkretnej konfiguracji, a nie z prawa fizyki, a najbardziej brakuje obecnie pomiarów związanych z wykorzystaniem tego rozwiązania w korpusach w językach innych niż angielski.