Osadzenia kontekstowe poza złotym fragmentem

Nowa metoda treningowa, model i benchmark do wyszukiwania odpowiedzi oraz wspierającego je kontekstu.

AutorzyPerplexity Research & turbopuffer

Wprowadzenie

Osadzenia kontekstowe uchwytują znaczenie każdego fragmentu w kontekście całego dokumentu. Ich trening i ocena zazwyczaj zakładają pojedynczy istotny fragment na zapytanie, zwany „złotym fragmentem”. Jednak w praktyce złoty fragment często nie wystarcza. Może on zawierać odpowiedź, ale brak mu kontekstu pomocniczego potrzebnego do jej zrozumienia lub zweryfikowania, co sprawia, że w izolacji jest wieloznaczny.

Przedstawiamy pplx-embed-v2-context-9b-preview, nasz nowy model osadzeń kontekstowych. Model jest trenowany za pomocą nowatorskiego podejścia, które wykorzystuje model kompresji kontekstu od Perplexity jako nauczyciela. Agregujemy jego przewidywania na poziomie tokenów w wyniki istotności na poziomie fragmentów, ucząc model osadzeń pobierania zarówno fragmentów odpowiedzi, jak i kontekstu pomocniczego zamiast pojedynczego złotego fragmentu. Model produkuje jedno osadzenie na fragment bez dodatkowego kosztu wnioskowania i obsługuje osadzenia 1024-wymiarowe oraz int8.

Osiąga on najnowocześniejsze wyniki w context-bench, nowym benchmarku wyszukiwania uwzględniającego kontekst, utworzonym i utrzymywanym prywatnie przez turbopuffer, oraz w ConTEB, szeroko stosowanym publicznym benchmarku. Nasz model został opracowany niezależnie od context-bench i oceniony jako zgłoszenie w ciemno.

Context-bench składa się z 2099 zapytań dotyczących 38 894 długich dokumentów w 21 domenach i ocenia trzy zdolności osadzeń kontekstowych: dezambiguację dokumentów wśród niemal duplikatów, wyszukiwanie złotych fragmentów, których znaczenie zależy od odległego kontekstu, oraz przywoływanie dowodów pomocniczych wymaganych do zweryfikowania odpowiedzi.

Wersja zapoznawcza modelu jest publicznie dostępna w serwisie Hugging Face. Benchmark jest przechowywany prywatnie przez firmę turbopuffer, aby ograniczyć ryzyko zanieczyszczenia danych treningowych i zachować jego wartość jako miary postępów. Aby poprosić o ewaluację, skontaktuj się z firmą turbopuffer pod adresem contextbench@turbopuffer.com.

Więcej informacji o metodologii i wynikach ewaluacji znajdziesz w naszym raporcie technicznym.

Rysunek 1: Answer@K, Document@K, Evidence Recall@K oraz All-Evidence@10 w context-bench, porównujące Perplexity v2 preview 9B z Voyage Context 4, Voyage 4 Large oraz Perplexity context v1 4B.

Dlaczego kontekst ma znaczenie dla wyszukiwania

Systemy wyszukiwania zazwyczaj dzielą długie dokumenty na mniejsze fragmenty, które mogą być indeksowane i przeszukiwane niezależnie. Dzielenie na fragmenty jest wygodne w praktyce, ale usuwa kontekst, w którym każdy fragment pierwotnie się pojawił, tworząc kompromis pomiędzy ziarnistością kompresji informacji a kontekstem używanym podczas kodowania. Fragment może odnosić się do encji wprowadzonej wcześniej, dziedziczyć swoje znaczenie z nagłówka sekcji lub opierać się na definicjach znajdujących się w innym miejscu dokumentu. Po wyodrębnieniu może już nie zawierać wystarczających informacji, aby zostać niezawodnie dopasowanym do zapytania. Zakodowanie całego dokumentu jako pojedynczego wektora nie rozwiąże tego problemu, ponieważ jedna spooled reprezentacja nie jest w stanie wiernie uchwycić każdego aspektu długiego dokumentu.

Modele osadzeń kontekstowych rozwiązują ten problem, reprezentując każdy fragment w kontekście jego otaczającej treści, najczęściej poprzez późne dzielenie na fragmenty: dokument jest kodowany w jednym przebiegu, a reprezentacje fragmentów są następnie pulowane, dzięki czemu każdy wektor fragmentu jest obliczany przy uwzględnieniu całego dokumentu. Poprzednie prace, takie jak ConTEB i nasz własny pplx-embed-context-v1, wykazały, że kontekstualizowane reprezentacje fragmentów znacznie poprawiają wyszukiwanie w porównaniu z niezależnie kodowanymi fragmentami, szczególnie w przypadku długich dokumentów.

Ograniczenia nadzoru opartego na złotych fragmentach

Trening modeli osadzeń kontekstowych wymaga nadzoru identyfikującego, które części dokumentu są istotne dla danego zapytania. Powszechnym podejściem są adnotacje złotych fragmentów: dla każdego zapytania anotator, zazwyczaj duży model językowy (LLM), identyfikuje fragment dokumentu, który na nie odpowiada.

Trening zazwyczaj łączy dwie straty kontrastowe: stratę kontrastową między dokumentami, która przeciwstawia złoty fragment fragmentom z innych dokumentów, oraz stratę kontrastową wewnątrz dokumentu, która przeciwstawia go innym fragmentom w tym samym dokumencie.

To podejście ma kilka ograniczeń:

  1. Tylko jeden fragment jest istotny. Traktuje on każdy inny fragment w dokumencie jako negatywny, w tym te z użytecznymi informacjami pomocniczymi. Nadzór na poziomie dokumentu działa w skrajnie odmiennym zakresie. Identyfikuje on dokument jako istotny bez sprecyzowania, które fragmenty w jego wnętrzu mają znaczenie. W praktyce istotność często leży pomiędzy tymi skrajnościami. Fragment zawierający odpowiedź może zależeć od kilku fragmentów pomocniczych, które wprowadzają encję, rozwiązują odniesienie lub dostarczają uzupełniający fakt, podczas gdy reszta dokumentu jest nieistotna. Model musi zatem nauczyć się odpowiedniego poziomu selektywności: szerszego niż pojedynczy złoty fragment, ale bardziej skupionego niż dokument jako całość.
  2. Zgrubny nadzór. Ponieważ każda adnotacja identyfikuje pojedynczy złoty fragment zamiast uchwycić stopnie istotności w całym dokumencie, zapewnia ona ograniczony sygnał treningowy w stosunku do ilości obliczeń poświęconych na jej wygenerowanie.
  3. Wysoki koszt skalowania. Każda para treningowa wymaga od LLM przeczytania dokumentu i wybrania istotnego fragmentu, przez co koszt adnotacji rośnie liniowo wraz z wielkością zestawu treningowego i ogranicza skalę oraz różnorodność danych treningowych.
  4. Wrażliwość na granice fragmentów. Etykiety są również powiązane z granicami fragmentów używanymi podczas adnotacji. Złota etykieta przypisana do stałego okna rozmiaru tokena nie określa, które krótsze zdania lub dłuższe akapity są istotne. Zmiana strategii dzielenia na fragmenty lub trening na wielu podziałach w celu poprawy odporności na to, jak dokumenty są dzielone w czasie indeksowania, może zatem wymagać ponownego oznaczenia korpusu.

Nowatorskie podejście do uczenia kontekstowego

Rozwiązujemy ograniczenia nadzoru opartego na złotych fragmentach poprzez destylację ocen istotności z modelu kompresji kontekstu uwzględniającego zapytanie. Model ten pełni rolę nauczyciela: czyta zapytanie i dokument wspólnie oraz przypisuje każdemu tokenowi dokumentu wynik istotności. Jego przewidywania oferują kilka zalet przy treningu osadzeń kontekstowych:

  1. Elastyczne granice fragmentów. Wyniki istotności na poziomie tokenów mogą być agregowane w dowolnych wybranych granicach fragmentów, co pozwala tym samym przewidywaniom nauczyciela nadzorować różne podziały na fragmenty bez konieczności ponownego oznaczania.
  2. Ciągła istotność. W przeciwieństwie do binarnych etykiet złotych fragmentów, nauczyciel zapewnia ciągłe wyniki, które uchwytują stopnie istotności naturalnie odróżniające fragmenty zawierające odpowiedź, kontekst pomocniczy oraz treść nieistotną.
  3. Niższy koszt adnotacji. Nauczyciel jest kompaktowy i wyspecjalizowany w ocenianiu istotności, dzięki czemu jego nadzór na skalę masową jest znacznie tańszy niż w przypadku ogólnego LLM.

Trenujemy nasz model za pomocą ważonej sumy straty kontrastowej na poziomie dokumentu oraz straty destylacji na poziomie fragmentu nad partiami par zapytanie-dokument. Dla każdego zapytania sparowany dokument służy jako pozytywny, podczas gdy pozostałe dokumenty w tej samej partii służą jako negatywne.

Dla każdej partii losowo wybieramy strategię dzielenia na fragmenty, odpowiednio dzielimy dokumenty i wstawiamy tokeny separatorów pomiędzy fragmentami. Następnie przetwarzamy każdy dokument w jednym przejściu w przód i średnio pulujemy reprezentacje tokenów wewnątrz każdego fragmentu, aby uzyskać osadzenia kontekstowe fragmentów. Zapytania są kodowane osobno, z uśrednianiem pulowania reprezentacji ich tokenów. Na koniec obliczamy podobieństwo cosinusowe pomiędzy każdym osadzeniem zapytania a każdym osadzeniem fragmentu w partii.

Funkcja straty

Strata kontrastowa na poziomie dokumentu

Chociaż nasz model osadzeń produkuje jedynie podobieństwa na poziomie fragmentów, możemy naturalnie wyprowadzić z nich podobieństwa na poziomie dokumentu. Uznajemy dokument d za tak samo istotny dla zapytania q, jak jego najbardziej istotny fragment. Ta zasada punktacji jest inspirowana operacją MaxSim z ColBERT, zastosowaną tutaj do fragmentów zamiast tokenów.

W szczególności, mając zapytanie q z osadzeniem q oraz dokument d jako uporządkowaną listę fragmentów c z osadzeniami c, definiujemy podobieństwo na poziomie dokumentu jako:

s(q,d):=max⁡c∈dq⊤c.s(q,d):=\max_{c\in d}\mathbf{q}^{\top}\mathbf{c}.

Mając te podobieństwa na poziomie dokumentu, możemy sformułować cel InfoNCE na poziomie dokumentu nad negatywami wewnątrz partii.

Dla zapytania q niech d⁺ oznacza jego istotny dokument, a 𝒟 dokumenty w partii. Strata kontrastowa ma następującą postać, pomijając temperatury dla czytelności:

Ldoc(q,d+)=−log⁡exp⁡(s(q,d+))∑d∈Dexp⁡(s(q,d))\mathcal{L}_{\mathrm{doc}}(q,d^{+})=-\log\frac{\exp(s(q,d^{+}))}{\sum_{d\in\mathcal{D}}\exp(s(q,d))}

Strata destylacji na poziomie fragmentu

Strata kontrastowa uczy model, który dokument jest istotny dla zapytania. Strata destylacji uczy go, gdzie w tym dokumencie leży istotność, co jest kluczowe dla modelu kontekstowego.

Podczas treningu przekazujemy każdą pozytywną parę zapytanie-dokument do naszego modelu kompresji kontekstu, który przypisuje wynik istotności każdemu tokenowi w dokumencie. Podobnie jak w przypadku punktacji na poziomie dokumentu, wywodzimy istotność każdego fragmentu z jego najbardziej istotnych treści. Aby zmniejszyć wrażliwość na tokeny odstające, w tym te na granicach fragmentów, definiujemy istotność na poziomie fragmentu jako średnią z n najwyższych wyników tokenów w obrębie fragmentu.

Dla każdego zapytania stosujemy funkcję softmax przeskalowaną temperaturą do wyników istotności nauczyciela na poziomie fragmentów wewnątrz pozytywnego dokumentu, aby uzyskać docelowy rozkład. Fragmenty w pozostałych dokumentach w partii otrzymują zerowe prawdopodobieństwo docelowe. Trenujemy model osadzeń tak, aby dopasował się do tego celu poprzez minimalizację dywergencji KL w przód pomiędzy celem a jego przewidywanym rozkładem dla wszystkich fragmentów w partii:

Ldist(q,d+)=KL ⁣(pT∥pS)\mathcal{L}_{\mathrm{dist}}(q,d^{+})=\mathrm{KL}\!\left(p^{\mathrm{T}}\parallel p^{\mathrm{S}}\right)
pT(cj)=exp⁡(rj)∑ck∈d+exp⁡(rk)p^{\mathrm{T}}(c_j)=\frac{\exp(r_j)}{\sum_{c_k\in d^{+}}\exp(r_k)}
pS(c)=exp⁡(q⊤c)∑d∈D∑ck∈dexp⁡(q⊤ck)p^{\mathrm{S}}(c)=\frac{\exp(\mathbf{q}^{\top}\mathbf{c})}{\sum_{d\in\mathcal{D}}\sum_{c_k\in d}\exp(\mathbf{q}^{\top}\mathbf{c}_k)}

Tutaj indeksy górne T i S oznaczają nauczyciela i ucznia, a rⱼ to wynik istotności nauczyciela dla fragmentu cⱼ w pozytywnym dokumencie d⁺. Docelowy rozkład nauczyciela przypisuje zerowe prawdopodobieństwo fragmentom we wszystkich innych dokumentach w partii.

W przeciwieństwie do pojedynczej etykiety złotego fragmentu, ten cel uchwytuje stopnie istotności. Fragmenty pomocnicze otrzymują wagę zgodnie z wynikami nauczyciela zamiast być traktowane jako negatywne, co uczy model pobierania kontekstu pomocniczego oraz odpowiedzi.

Połączona strata

Nasz połączony cel treningowy to ważona suma straty kontrastowej na poziomie dokumentu i straty destylacji na poziomie fragmentu. Uśredniamy tę ważoną stratę po partiach par zapytanie-dokument.

Rysunek 2 ilustruje nasze podejście treningowe. Kompresor kontekstu służy jako nauczyciel tylko podczas treningu. W czasie wnioskowania model osadzeń produkuje jedno osadzenie kontekstowe na fragment, bez dodatkowej kompresji lub etapu ponownego rankingowania. Podejście to usprawnia uczenie osadzeń kontekstowych bez zwiększania pamięci masowej indeksu i bez dodawania opóźnienia modelu nauczyciela w czasie wyszukiwania.

Rysunek 2: Konfiguracja treningowa naszego modelu. Koder kontekstowy (uczeń, po lewej) przetwarza dokumenty, z których każdy składa się z kilku fragmentów. Każdy fragment jest osadzany względem otaczającego go kontekstu dokumentu. Zapytanie A jest znanym dopasowaniem do Dokumentu A i jest oceniane względem fragmentów wszystkich dokumentów w celu uzyskania przewidywanych podobieństw. Te wyniki na poziomie fragmentów są max-pulowane do wyników na poziomie dokumentu. Trenujemy przewidywania na poziomie fragmentów i przewidywania na poziomie dokumentu tak, aby pasowały do rozkładów docelowych (po prawej). Cel na poziomie fragmentu jest obliczany w czasie treningu jako przewidywanie kompresora kontekstu wewnątrz znanego istotnego dokumentu i jest ustawiany na zero wewnątrz znanych nieistotnych dokumentów. Docelowy rozkład na poziomie dokumentu jest ustawiany jako one-hot na znanym istotnym dokumencie.

Dane treningowe

Dane treningowe składają się z około 430 publicznych i wewnętrznych zestawów danych z zapytaniami i dokumentami, obejmujących ponad 50 języków.

Tworzymy wewnętrzne zestawy danych par na podstawie przefiltrowanych pod kątem PII danych produkcyjnych oraz poprzez syntetyzowanie istotnych zapytań dla długich dokumentów. Dla każdego przejścia w przód wybieramy jeden zestaw danych i pobieramy z niego całą partię, aby zwiększyć trudność negatywów wewnątrz partii i uniknąć uczenia się na skróty. Żaden z naszych zestawów danych treningowych nie zawiera adnotacji na poziomie fragmentów: cały nadzór w obrębie dokumentu pochodzi z modelu kompresji, a do treningu nie są używane żadne dane ConTEB. Co więcej, żadne dane z context-bench nie były dostępne podczas opracowywania modelu.

Konfiguracja treningowa

Model opiera się na wewnętrznym modelu pobierania ColBERT z parametrami 9B i generuje osadzenia 2048-wymiarowe za pomocą liniowej warstwy projekcyjnej. Oznaczamy granice fragmentów wyuczonym tokenem <|chunk_sep|> i tworzymy każde osadzenie fragmentu poprzez uśrednienie osadzeń jego tokenów. Zapytania są kodowane przez ten sam model, a osadzenia ich tokenów są uśredniane do pojedynczego wektora.

Używamy treningu Matryoshka, aby wspierać zarówno 1024-, jak i 2048-wymiarowe osadzenia, oraz treningu uwzględniającego kwantyzację, aby wspierać natywne osadzenia int8. Podczas treningu stopniowo zwiększamy współczynnik uczenia, utrzymujemy go na stałym poziomie, a następnie zmniejszamy.

Wydany model to zupa modeli, która uśrednia wagi kilku punktów kontrolnych z tego samego przebiegu treningowego.

Nowy benchmark do wyszukiwania na poziomie fragmentów

Publiczne benchmarki wyszukiwania kontekstowego, takie jak ConTEB, podzielają założenie leżące u podstaw nadzoru złotych fragmentów: każde zapytanie ma pojedynczy istotny fragment, a model jest nagradzany tylko za umieszczenie tego fragmentu na pierwszym miejscu. Dziedziczą one również jego ograniczenia.

Po pierwsze, ConTEB testuje wyszukiwanie w zadaniach, w których fragment jest wieloznaczny bez otaczającego go kontekstu. W takich zadaniach modele kontekstowe przewyższały modele kodujące każdy fragment niezależnie. Nie bada on jednak, czy model uwidacznia także inne części dokumentu, które sprawiają, że fragment jest zrozumiały.

Po drugie, nie testuje on systematycznie, czy można odnaleźć właściwy dokument, gdy niemal identyczne dokumenty w tym samym korpusie różnią się wyłącznie kontekstem otaczającym w inny sposób identyczne zdanie.

Obie te zdolności mają znaczenie, gdy agent wyszukiwania lub użytkownik musi zrozumieć i zweryfikować odpowiedź na podstawie kilku wyszukanych zdań, a nie całego dokumentu. Dlatego zbudowaliśmy context-bench, kontrolowany benchmark do wyszukiwania w długich dokumentach, zaprojektowany tak, aby odróżnić wykorzystanie kontekstu dokumentu od ogólnej jakości wyszukiwania. Testuje on, czy osadzenia kontekstowe wykorzystują informacje z innych części dokumentu do wspierania trzech zdolności:

  1. Dezambiguacja dokumentów: Identyfikacja poprawnego dokumentu spośród niemal identycznych alternatyw.
  2. Wyszukiwanie odpowiedzi: Pobieranie fragmentów zawierających odpowiedź, których znaczenie zależy od szczegółów w innych częściach dokumentu.
  3. Wyszukiwanie dowodów: Pobieranie fragmentów pomocniczych, które wyjaśniają lub uzasadniają odpowiedź.

Context-bench zawiera 2099 zapytań i 38 894 dokumentów. Używane są fragmenty o długości zdań, co daje łącznie 2 458 072 fragmentów. Zapytania obejmują 21 domen, w tym dokumenty korporacyjne, badania kliniczne, podróże, rozrywkę, edukację, administrację rządową, umowy prawne oraz dokumentację oprogramowania.

Każde zapytanie ma na celu przetestowanie jednej z dwunastu zdolności kontekstowych. Główne dokumenty docelowe są celowo długie: 1061 z 1197 różnych głównych dokumentów docelowych ma co najmniej 200 zdań, a ich mediana długości wynosi około 6100 tokenów. Każde zapytanie ma dokładnie jedną poprawną odpowiedź w korpusie. W przypadkach, gdy ten sam fakt jest podany więcej niż raz w złotym dokumencie, na przykład w zdaniu podsumowującym i w wierszu tabeli, każde z tych zdań jest akceptowane jako odpowiedź.

Ścieżka odpowiedzi to jedna poprawna kombinacja fragmentu odpowiedzi i dowodów pomocniczych niezbędnych do jej zinterpretowania lub zweryfikowania. Wśród 2099 zapytań ścieżka odpowiedzi głównego dokumentu docelowego ma jedną grupę dowodów dla 964 zapytań, dwie dla 735, trzy lub więcej dla 332, a żadnej dla 68. Alternatywne poprawne ścieżki odpowiedzi mogą wymagać innych grup dowodów.

Tabela 1: Statystyki benchmarku.

Statystyka

Wartość

Zapytania

2099

Dokumenty

38 894

Fragmenty zdań

2 458 072

Mediana długości głównego dokumentu docelowego

6100 tokenów

Domeny

21

Grupy dowodów na zapytanie (ścieżka odpowiedzi głównego dokumentu docelowego)

1: 964; 2: 735; 3+: 332; brak: 68

Tabela 2: Dwanaście zdolności kontekstowych testowanych przez context-bench, wraz z ilustratywnymi przykładami.

Zdolność

Przykładowe zapytanie

Fragment z odpowiedzią

Wymagany kontekst dokumentu

1. Tożsamość encji

Ile Northlake wydało na odkup akcji?

Firma odkupiła akcje o wartości 12,8 miliarda dolarów.

We wprowadzeniu Northlake jest określane jako „firma”. Podobny raport dotyczący Southlake nie jest istotny.

2. Okres lub wersja

Jaki wkład pasuje do rewizji B modelu M40?

Zainstaluj wkład KC-42.

Sekcja dotycząca stosowania wskazuje, że instrukcje te obejmują rewizję B, a nie rewizję C.

3. Definicje i aliasy

Jaki wskaźnik wycofań miała grupa przyjmująca 15 mg?

Zeta miała wskaźnik wycofań na poziomie 12,7%.

Raport definiuje Zetę jako grupę 15 mg. Bez tej definicji fragment nie identyfikuje żądanej grupy.

4. Struktura tabeli

Jaka jest pojemność baterii modelu Max?

Typowa pojemność: 4250 | 4700 | 5150.

Nagłówek tabeli ustanawia Mini | Base | Max, mierzona w mAh. Odpowiedź wynosi zatem 5150 mAh.

5. Warunki i wyjątki

Jak długo trwa ochrona baterii do użytku komercyjnego?

Ochrona baterii trwa 18 miesięcy.

Wprowadzenie do sekcji ogranicza tę ochronę do instalacji komercyjnych; instalacje domowe mają inną gwarancję.

6. Odniesienia i zaimki

Kiedy Mara została zastępcą burmistrza?

Objęła urząd w 2021 roku.

Poprzednia narracja ustala, że „ona” odnosi się do Mary, a nie do Elin, która również jest omawiana.

7. Kolejność i pozycja na liście

Która piosenka otwierała bis?

14. Lantern Road.

Uwaga w innym miejscu wskazuje, że piosenki 14–16 stanowiły bis. Utwór 14 jest więc utworem otwierającym.

8. Zakres sekcji

Jakiego obiektywu użyto do realizacji zdjęć filmowych?

Przez cały czas używano stałoogniskowego obiektywu 35 mm.

Ten fragment należy do sekcji „Zdjęcia główne”, a nie do osobnej sekcji dotyczącej fotografii promocyjnych.

9. Przypisanie wypowiedzi

Jaka data ponownego otwarcia została obiecana przez burmistrza?

Zostaniemy ponownie otwarci 12 czerwca.

Transkrypcja identyfikuje burmistrza jako mówcę. Te same słowa wypowiedziane przez wykonawcę nie dowodziłyby obietnicy burmistrza.

10. Zmiany w czasie

Jaki okres wypowiedzenia obowiązywał po majowej nowelizacji?

Okres wypowiedzenia wynosi obecnie 45 dni.

Historia nowelizacji wskazuje, że zmiana ta weszła w życie w maju, zastępując wcześniejszą zasadę 30 dni.

11. Związki przyczynowe

Dlaczego pompa zachodnia zatrzymała się?

Ta usterka spowodowała wyłączenie.

Śledztwo wskazuje „tę usterkę” jako zatarte łożysko w pompie zachodniej i odróżnia ją od niezwiązanego z nią zatoru wlocie.

12. Znaczenie figuratywne lub międzyjęzykowe

Figuratywne:

Co symbolizuje „zimowy pokój” w wierszu?

Międzyjęzykowe:

Który element francuska instrukcja nakazuje usunąć technikowi?

Figuratywne:

Reprezentuje wygnanie, a nie fizyczny pokój.

Międzyjęzykowe:

Retirez le capot. (Usuń pokrywę.)

Figuratywne:

Komentarz identyfikuje „to” jako powracający w wierszu motyw „zimowego pokoju”.

Międzyjęzykowe:

Słowniczek przewodnika precyzuje, że „capot” oznacza ochronną maskę silnika, a nie osłonę transportową.

Dokumenty i zapytania

Zapytania, dokumenty i testowane zdolności są inspirowane rozmowami z klientami turbopuffer.

Dla przykładu rozważmy potrzeby wyszukiwania firmy zarządzającej nieruchomościami. Firmy te posiadają setki, czasem tysiące umów najmu, które różnią się jedynie nazwiskami najemców, datami i kilkoma innymi kluczowymi szczegółami. Typowe zapytanie dla takiego zestawu danych może brzmieć: „kiedy kończy się umowa najmu dla 5 Park Avenue i jaki jest obecny czynsz?”. Umowy najmu mogą być również długie, a krytyczne elementy dezambiguujące, które potwierdzałyby odnalezienie właściwego dokumentu (takie jak data, adres, nazwisko najemcy itp.), często znajdują się bardzo daleko od kluczowego zdania z odpowiedzią zawierającego kwotę miesięcznego czynszu. W praktyce identyczne zdania, takie jak „Miesięczny czynsz wynosi X XXX $”, mogą pojawiać się w wielu dokumentach w korpusie.

Dobre model osadzeń kontekstowych powinien wykorzystywać kontekst z całego dokumentu do identyfikacji poprawnego dokumentu oraz pobrania zarówno odpowiedzi, jak i wspierających ją zdań. Pozwala to użytkownikowi lub agentowi wyszukiwania szybko zweryfikować odpowiedź i potwierdzić, że pochodzi ona z właściwego dokumentu.

Eykiety odpowiedzi i dowodów

Dla każdego zapytania oznaczamy zdania „odpowiedzi” i „dowodów” w docelowym dokumencie. Model zalicza nasz test „wystarczalności dla czytelnika”, jeśli pobierze zdanie odpowiedzi wraz z co najmniej jednym zdaniem z każdej grupy dowodów. Razem zdania te zapewniają wystarczający kontekst, aby czytelnik mógł zweryfikować odpowiedź za pomocą dowodów pomocniczych.

Gdy modele osadzeń kontekstowych radzą sobie z tym dobrze, mogą drastycznie zmniejszyć liczbę tokenów, które agenci wyszukiwania muszą przejrzeć, a także znacznie ułatwić człowiekowi szybkie potwierdzenie zlokalizowania poprawnej odpowiedzi na oryginalne zapytanie bez konieczności czytania całego dokumentu.

Każda grupa dowodów musi zostać odzyskana, ale wystarczy dowolna alternatywa z danej grupy, aby ją odzyskać. Często ten sam fakt jest podawany w kilku miejscach w tych długich dokumentach. Pobranie tylko jednego zdania z każdej grupy dowodów spełnia kryteria wystarczalności dla czytelnika i jako takie zostanie zaakceptowane jako idealne przywołanie dowodów.

Metryki

Każdy dokument jest dzielony na zdania, a dla wszystkich modeli używane są te same granice. Testowane są dwa warunki dla modeli osadzeń niekontekstowych: jeden, w którym każde zdanie jest osadzane niezależnie, oraz drugi, w którym cały dokument jest osadzany jako pojedynczy fragment.

Używamy warunku na poziomie zdań do pomiaru przywołania odpowiedzi i przywołania dowodów. Testuje on, czy model niekontekstowy potrafi zidentyfikować poprawną odpowiedź i dowody pomocnicze, gdy każde zdanie jest osadzane bez dostępu do otaczającego dokumentu. Jest to celowo trudne. W wielu zapytaniach samo zdanie z odpowiedzią nie zawiera szczegółów niezbędnych do odróżnienia go od podobnych zdań w innych miejscach korpusu.

Używamy warunku na poziomie dokumentu jako punktu odniesienia dla przywołania dokumentu. Testuje on, czy ziarniste osadzenia zdań zapewniają wystarczające korzyści z wyszukiwania, aby uzasadnić ich dodatkowy koszt pamięci masowej w porównaniu z przechowywaniem jednego wektora na dokument. Indeks na poziomie zdań tworzy znacznie więcej wektorów niż indeks na poziomie dokumentu, więc powinien przewyższać punkt odniesienia wynoszący jeden wektor na dokument, aby uzasadnić ten koszt.

Wszystkie oceny wykorzystują wyczerpujące rankingi względem wszystkich 2 458 072 fragmentów. Różnice między modelami odzwierciedlają zatem reprezentacje, a nie konfigurację indeksu. Skupiamy się na trzech kluczowych metrykach:

Document@K jest definiowany jako:

Document@K=1[rank⁡(d∗)≤K]\text{Document@K}=1[\operatorname{rank}(d^{*})\le K]

gdzie d∗d^{*} to dokument o najwyższym rankingu w DqD_q.

Answer@K jest definiowany jako:

Answer@K=1[Aq∩CK(q)≠∅]\text{Answer@K}=1[A_q\cap C_K(q)\ne\varnothing]

gdzie CK(q)C_K(q) to górne KK fragmentów z całego korpusu, a AqA_{q} to zbiór zaakceptowanych fragmentów odpowiedzi.

Evidence Recall@K jest mierzona w ramach d∗d^{*} w następujący sposób: uszereguj zdania d∗d^{*} według podobmiństwa, usuń zdanie odpowiedzi o najwyższym rankingu i niech RK(q)R_K(q) będzie górnym KK, które pozostaną. Dla grup dowodów Gq={g1,…,gm}G_q=\{g_1,\ldots,g_m\}, grupa gjg_j zostaje odzyskana, jeśli jakaś alternatywa E∈gjE\in g_j spełnia E⊆RK(q)E\subseteq R_K(q), oraz

EvidenceRecall@K=1[rank⁡(d∗)≤10]⋅1m∑j=1m1[gj recovered].\text{EvidenceRecall@K}=1[\operatorname{rank}(d^{*})\le10]\cdot\frac{1}{m}\sum_{j=1}^{m}1[g_j\ \text{recovered}].

Document@K pyta, czy kontekstualizacja pozwala poprawnemu dokumentowi wygrać z rodzeństwem i dystraktorami dzielącymi z nim słownictwo.

Answer@K pyta, czy samo zdanie z odpowiedzią znajduje się w czołowych fragmentach.

Evidence Recall@K pyta, jaka część kontekstu pomocniczego została odzyskana wśród czołowych K fragmentów poprawnego dokumentu, po wykluczeniu fragmentu odpowiedzi o najwyższym rankingu. Usunięcie odpowiedzi zapobiega podwójnemu liczeniu przez przywołanie dowodów tego, co Answer@K już mierzy, i pozostawia wszystkie sloty KK na kontekst pomocniczy. Wymóg, aby złoty dokument znajdował się w 10 najlepszych pobranych dokumentach, oznacza, że żaden model nie otrzymuje kredyty za dokument, którego by nie wyświetlił. Raportujemy również All-Evidence@K, czyli odsetek zapytań, w których odzyskano każdą grupę.

Razem metryki te rozkładają na czynniki pierwsze wyzwania, z jakimi mierzą się modele osadzeń kontekstowych: znalezienie właściwego dokumentu, znalezienie właściwej odpowiedzi oraz odzyskanie minimalnego kontekstu pokazującego, dlaczego odpowiedź jest poprawna.

Rysunek 3 ilustruje metryki na przykładzie zarządzania nieruchomościami.

Rysunek 3: Metryki context-bench zilustrowane na przykładzie zapytania dotyczącego umowy najmu. Document@K testuje wyszukiwanie poprawnego dokumentu; Answer@K testuje wyszukiwanie jego fragmentu odpowiedzi; Evidence Recall@K mierzy odzyskanie grup dowodów pomocniczych w docelowym dokumencie. W tym przykładzie weryfikacja czynszu wymaga dowodu dotyczącego zarówno adresu, jak i roku najmu. Przywołanie dowodów wyklucza czołowy fragment odpowiedzi i wymaga, aby docelowy dokument uplasował się w pierwszej dziesiątce.

Wyniki ewaluacji

Oceniamy nasz model w porównaniu z modelami osadzeń kontekstowych i niekontekstowych na czterech frontach.

Naszymi bazowymi modelami kontekstowymi są pplx-embed-context-v1-4B i voyage-context-4. Naszymi bazowymi modelami niekontekstowymi są voyage-4-large oraz Nemotron-3-Embed-8B-BF16 od firmy NVIDIA, które kodują fragmenty niezależnie. Zestaw bazowy różni się w zależności od eksperymentu, co wskazano na każdym rysunku.

Zaczynamy od context-bench, który bezpośrednio testuje zdolności motywujące tę pracę, a następnie raportujemy wyniki w ConTEB, standardowym publicznym benchmarku dla osadzeń kontekstowych. Aby sprawdzić, czy te zyski nie odbywają się kosztem ogólnej jakości wyszukiwania, oceniamy również dedykowane dziedzinowo benchmarki wyszukiwania dokumentów i fragmentów, które zbudowaliśmy na podstawie publicznych zestawów danych. Na koniec badamy dwie właściwości praktyczne dla wdrażania: jakość wyszukiwania a koszty pamięci masowej na wektor oraz wrażliwość na rozmiar fragmentu używany w czasie indeksowania. Wszystkie oceny kodują dokumenty o wielkości do 32 768 tokenów w jednym przebiegu.

Context-bench

Jak pokazano na rys. 1 we wprowadzeniu, nasz podgląd prowadzi w zakresie Answer@K i Evidence Recall@K przy każdym raportowanym odcięciu, a także All-Evidence@10. Przy K = 10 osiąga 45,5% przywołania odpowiedzi, 40,6% przywołania dowodów oraz 31,1% przywołania wszystkich dowodów. Prowadzi również w Document@1 i Document@10, osiągając odpowiednio 15,2% i 61,6%. Przy K = 10 nasz podgląd przewyższa voyage-context-4 o 14,4 punktu procentowego w przywołaniu odpowiedzi i 5,0 punktu w przywołaniu dowodów.

ConTEB

Nasz model w wersji zapoznawczej osiąga najwyższy średni nDCG@10 spośród modeli pokazanych w ConTEB na rysunku 4. Nie prowadzi w każdym zadaniu: pplx-context-v1-4B uzyskuje wyższy wynik w NarrativeQA, podczas gdy Nemotron-3-8B uzyskuje najwyższy wynik w COVID-QA. Jak zauważyli główni autorzy w artykule o ConTEB, COVID-QA zawiera głównie pary zapytanie-fragment, które mają charakter wysoce ekstraktywny i mogą być obsłużone za pomocą prostego powierzchniowego dopasowania leksykalnego w zakresie medycznych terminów technicznych. W efekcie zrozumienie kontekstu jest mniej przydatne w tym zadaniu i modele niekontekstowe zazwyczaj przewyższają kontekstowe.

Rysunek 4: nDCG@10 na poziomie zadań w ConTEB w ustawieniu zapytanie-do-fragmentu. Średnia to nieważona średnia z ośmiu zadań.

Ogólna jakość wyszukiwania w różnych domenach

Poza benchmarkami zaprojektowanymi dla osadzeń kontekstowych ocenia się wydajność naszego modelu specyficzną dla danej domeny.

Nasz pakiet zapytanie-do-fragmentu (Q2C) wykorzystuje zadania MTEB, takie jak LegalBench i FinanceBench, obok dodatkowych zadań wyszukiwania, które wyselekcjonowaliśmy z publicznych zestawów danych. W obrębie każdego istotnego dokumentu fragment jest oznaczany jako istotny, jeśli zawiera dokładny zakres odpowiedzi, gdy zadanie takowy dostarcza, a w przeciwnym razie na podstawie oceny istotności względem zapytania dokonywanej przez LLM. Pakiet zapytanie-do-dokumentu (Q2D) wykorzystuje te same zadania i ocenia, czy istotny dokument został wyszukany.

Nasz model osiąga najwyższy średni wynik w wyszukiwaniu fragmentów na rysunku 5 i prowadzi w domenach prawniczej, technicznej oraz zdrowotnej. Nie prowadzi w każdej domenie: voyage-context-4 uzyskuje wyższy wynik w finansach i wyszukiwaniu wielojęzycznym, a Nemotron-3-8B uzyskuje najwyższy wynik w wyszukiwaniu konwersacji. W wyszukiwaniu dokumentów na rysunku 6 nasz model wypada średnio nieznacznie poniżej voyage-context-4, jednocześnie prowadząc w domenie technicznej. Model bazowy pplx-context-v1-4B osiąga średnio niższe wyniki w obu pakietach, co jest spójne z faktem, że został przeszkolony wyłącznie na zestawie treningowym ConTEB, co pokazuje, że nadzór powiązany ze złotymi fragmentami jednego benchmarku słabo przenosi się na inne domeny.

Rysunek 5: Średni nDCG@10 w zadaniach zapytanie-do-fragmentu (Q2C), pogrupowany według domen. Słupki domen to nieważone średnie wyników na poziomie zadań w danej domenie; ogólna średnia to nieważona średnia ze wszystkich wyświetlanych zadań.
Rysunek 6: Średni wynik wyszukiwania w zadaniach zapytanie-do-dokumentu (Q2D), pogrupowany według domen. Każdy słupek w domenie to nieważona średnia jego głównych wyników na poziomie zadań; ogólna średnia to nieważona średnia ze wszystkich wyświetlanych zadań.

Jakość wyszukiwania a koszty pamięci masowej

Model osadzeń kontekstowych produkuje jeden wektor na fragment, więc indeks zbudowany za pomocą naszego modelu zawiera dokładnie tyle samo wektorów co konwencjonalny indeks na poziomie fragmentów z tą samą strategią dzielenia na fragmenty. Kontekstualizacja zmienia to, co koduje każdy wektor, a nie liczbę przechowywanych wektorów. Ślad pamięci masowej jest więc uwarunkowany rozmiarem każdego wektora. Model oferuje dwa sposoby jego zmniejszenia: obcięcie osadzenia z 2048 do 1024 wymiarów oraz jego kwantyzację do int8.

Rysunek 7 pokazuje korzystny kompromis pomiędzy jakością wyszukiwania a pamięcią masową wektorów. Przy 1024 wymiarach nasze osadzenia int8 zużywają 1 KB na wektor, jednocześnie nieznacznie przewyższając wynik wyszukiwania fragmentów dla voyage-context-4 przy 2048 wymiarach we float32, który zużywa 8 KB na wektor. Zwiększenie rozmiaru osadzenia do 2048 wymiarów dodatkowo podnosi jakość wyszukiwania przy koszcie 2 KB na wektor. Te dane dotyczące pamięci masowej odnoszą się wyłącznie do wektorów, a nie do reszty indeksu.

Rysunek 7: Jakość wyszukiwania fragmentów (średni nDCG@10) w funkcji pamięci masowej na wektor. Linie ciągłe oznaczają float32, a linie przerywane oznaczają int8; etykiety określają wymiar osadzenia.

Wrażliwość na rozmiar fragmentu

Rysunek 8 pokazuje jedynie niewielką zmianę jakości wyszukiwania wraz ze wzrostem rozmiaru fragmentu z 64 do 512 tokenów: średni wynik spada z 81,0% do 79,9%, co stanowi spadek o 1,1 punktu procentowego. Sugeruje to, że model pozostaje skuteczny w testowanych rozmiarach fragmentów, dając potokom indeksowania elastyczność w sposobie dzielenia dokumentów.

Rysunek 8: Wrażliwość naszego modelu na rozmiar fragmentu. Każdy punkt to nieważona średnia nDCG@10 z 74 zadań MTEB, przy dokumentach zindeksowanych dla danego rozmiaru fragmentu.

Wydanie

turbopuffer przechowuje pełny korpus, zapytania i etykiety benchmarku context-bench w tajemnicy oraz raportuje wyniki dla przesłanych modeli. Publiczny benchmark tego typu zachęca do bezpośredniego trenowania na jego zapytaniach i dokumentach, co prowadziłoby do jego stopniowego nasycenia i utraty wartości w śledzeniu postępów w czasie. Jeśli chcesz, aby Twój model został oceniony w benchmarku, skontaktuj się z turbopuffer pod adresem contextbench@turbopuffer.com.

Podgląd naszego modelu jest dostępny na platformie Hugging Face, a wszystkie wyniki w tym poście są raportowane dla tego podglądu. Pracujemy nad udostępnieniem modelu za pośrednictwem API Perplexity oraz nad dalszym ulepszaniem wyszukiwania w długich dokumentach we współpracy z turbopuffer.

Cytowanie

BibTeX
@online{perplexity2026ContextualEmbeddingBeyondTheGoldPassage,
  author = {{Perplexity} and Sarah Eslami and William Barber and Markus Krimmel and Antoine Chaffin and Bo Wang and Louis Milliken and Jarrod Bryan and Claire Beamer and Jeremy Yang},
  title = {{Contextual embedding beyond the gold passage}},
  date = {2026-09-30},
  url = {https://www.perplexity.ai/hub/blog/contextual-embedding-beyond-the-gold-passage}
}