Contextafhankelijke embedding voorbij de gouden passage

Een nieuwe trainingsmethode, model en benchmark voor het ophalen van antwoorden en de bijbehorende ondersteunende context.

AuteursPerplexity Research & turbopuffer

Inleiding

Contextafhankelijke embeddings vangen de betekenis van elke passage of elk fragment op in de context van het gehele document. Hun training en evaluatie gaan meestal uit van één enkel relevant fragment per zoekopdracht, bekend als de “gouden passage”. Een gouden passage is in de praktijk echter vaak niet genoeg. Deze bevat mogelijk wel het antwoord, maar mist de ondersteunende context die nodig is om dit te begrijpen of te verifiëren, waardoor het op zichzelf ambigue blijft.

We introduceren pplx-embed-v2-context-9b-preview, ons nieuwe model voor contextafhankelijke embeddings. Het model is getraind met een vernieuwende benadering waarbij Perplexity's contextcompressiemodel als leraar wordt gebruikt. We aggregeren de voorspellingen op tokenniveau tot relevantiescores op fragmentniveau, waardoor het embedding-model leert om zowel antwoordfragmenten als ondersteunende context op te halen in plaats van één enkel gouden fragment. Het model produceert één embedding per fragment zonder extra inferentiekosten en ondersteunt embeddings van 1024 dimensies en int8.

Het behaalt state-of-the-art resultaten op context-bench, een nieuwe benchmark voor contextbewust ophalen die is gecreëerd en privé wordt gehouden door turbopuffer, en op ConTEB, een veelgebruikte openbare benchmark. Ons model is onafhankelijk van context-bench ontwikkeld en geëvalueerd als een blinde inzending.

Context-bench bestaat uit 2.099 zoekopdrachten over 38.894 lange documenten in 21 domeinen en evalueert drie capaciteiten van contextafhankelijke embeddings: documentdisambiguatie tussen bijna-dubbele documenten, het ophalen van gouden fragmenten waarvan de betekenis afhangt van verre context, en het terughalen van het ondersteunende bewijsmateriaal dat nodig is om een antwoord te verifiëren.

Een voorbeeld van het model is openbaar beschikbaar op Hugging Face. De benchmark wordt door turbopuffer privé gehouden om het risico op trainingscontaminatie te verminderen en de waarde ervan voor het meten van de voortgang te behouden. Neem voor het aanvragen van een evaluatie contact op met turbopuffer via contextbench@turbopuffer.com.

Figuur 1: Answer@K, Document@K, Evidence Recall@K en All-Evidence@10 op context-bench, waarbij Perplexity v2 preview 9B wordt vergeleken met Voyage Context 4, Voyage 4 Large en Perplexity context v1 4B.

Waarom context belangrijk is voor het ophalen

Ophaalsystemen verdelen lange documenten meestal in kleinere fragmenten die onafhankelijk kunnen worden geïndexeerd en doorzocht. Fragmentatie is in de praktijk handig, maar verwijdert de context waarin elk fragment oorspronkelijk verscheen, waardoor er een afweging ontstaat tussen de granulariteit van informatiecompressie en de context die tijdens het coderen wordt gebruikt. Een fragment kan verwijzen naar een eerder geïntroduceerde entiteit, de betekenis ervan ontlenen aan een sectiekop, of vertrouwen op definities die elders in het document staan. Eenmaal geëxtraheerd, bevat het mogelijk niet langer voldoende informatie om betrouwbaar te worden gematcht met een zoekopdracht. Het coderen van het volledige document als één enkele vector lost dit niet op, aangezien één samengevoegde representatie niet getrouw elk facet van een lang document kan weergeven.

Modellen voor contextafhankelijke embeddings pakken deze beperking aan door elk fragment te representeren in de context van de omringende inhoud, meestal door middel van late chunking: het document wordt gecodeerd in een enkele pass en fragmentrepresentaties worden daarna samengevoegd, zodat elke fragmentvector wordt berekend met het volledige document in zicht. Eerder werk, zoals ConTEB en onze eigen pplx-embed-context-v1, heeft aangetoond dat gecontextualiseerde fragmentrepresentaties het ophalen aanzienlijk verbeteren ten opzichte van onafhankelijk gecodeerde fragmenten, met name bij lange documenten.

De grenzen van supervisie met gouden fragmenten

Het trainen van modellen voor contextafhankelijke embeddings vereist supervisie die identificeert welke delen van een document relevant zijn voor een bepaalde zoekopdracht. Een veelvoorkomende benadering zijn annotaties van gouden fragmenten: voor elke zoekopdracht identificeert een annotator, meestal een groot taalmodel (LLM), het fragment van het document dat de vraag beantwoordt.

Training combineert gewoonlijk twee contrastieve verliezen: een cross-document verlies dat het gouden fragment contrasteert met fragmenten uit andere documenten, en een within-document verlies dat het contrasteert met de andere fragmenten in hetzelfde document.

Deze benadering heeft een paar beperkingen:

  1. Slechts één fragment is relevant. Elk ander fragment in het document wordt behandeld als een negatief, inclusief fragmenten met nuttige ondersteunende informatie. Supervisie op documentniveau opereert op het andere uiterste. Het identificeert het document als relevant zonder te specificeren welke fragmenten daarbinnen ertoe doen. In de praktijk ligt de relevantie vaak tussen deze uitersten in. Het antwoorddragende fragment kan afhangen van een paar ondersteunende fragmenten die een entiteit introduceren, een verwijzing oplossen of een complementair feit aanleveren, terwijl de rest van het document irrelevant is. Het model moet daarom de juiste mate van selectiviteit leren: breder dan één gouden fragment, maar meer gefocust dan het document als geheel.
  2. Grofmazige supervisie. Omdat elke annotatie één enkel gouden fragment identificeert in plaats van gradaties van relevantie over het hele document vast te leggen, biedt dit beperkte trainingssignalen voor de hoeveelheid rekencapaciteit die is besteed aan het produceren ervan.
  3. Kostbaar om te schalen. Voor elk trainingspaar is een LLM nodig om het document te lezen en het relevante fragment te selecteren, waardoor de annotatiekosten lineair groeien met de grootte van de trainingsset en dit beperkt hoeveel en hoe divers de trainingsgegevens kunnen zijn.
  4. Gevoelig voor fragmentgrenzen. De labels zijn ook gekoppeld aan de fragmentgrenzen die tijdens de annotatie zijn gebruikt. Een gouden label dat is toegewezen aan een vast venster met een token-grootte specificeert niet welke kortere zinnen of langere alinea's relevant zijn. Het wijzigen van de fragmentatiestrategie, of het trainen over meerdere fragmentaties om de robuustheid te verbeteren ten opzichte van hoe documenten worden opgesplitst op het moment van indexeren, kan daarom vereisen dat het corpus opnieuw wordt geannoteerd.

Een vernieuwende benadering van contextafhankelijk leren

We pakken de beperkingen van supervisie met gouden fragmenten aan door relevantiebeoordelingen te distilleren uit een zoekopdrachtbewust contextcompressiemodel. Dit model fungeert als een leraar: het leest de zoekopdracht en het document gezamenlijk en wijst aan elk documenttoken een relevantiescore toe. De voorspellingen ervan bieden verschillende voordelen voor het trainen van contextafhankelijke embeddings:

  1. Flexibele fragmentgrenzen. Relevantscores op tokenniveau kunnen worden samengevoegd over gekozen fragmentgrenzen, waardoor dezelfde leraarvoorspellingen verschillende fragmentaties kunnen superviseren zonder dat her-annotatie nodig is.
  2. Continue relevantie. In tegenstelling tot binaire gouden-fragmentlabels biedt de leraar continue scores die gradaties van relevantie vastleggen die op natuurlijk wijze antwoorddragende fragmenten, ondersteunende context en irrelevante inhoud onderscheiden.
  3. Lagere annotatiekosten. De leraar is compact en gespecialiseerd in relevantiescorebepaling, waardoor het vele malen goedkoper is om op schaal te superviseren dan een algemeen LLM.

We trainen ons model met een gewogen som van een contrastief verlies op documentniveau en een distillatieverlies op fragmentniveau over batches van paren van zoekopdracht en document. Voor elke zoekopdracht dient het gekoppelde document als het positieve voorbeeld, terwijl de resterende documenten in dezelfde batch als negatieven dienen.

Voor elke batch selecteren we willekeurig een fragmentatiestrategie, splitsen we de documenten dienovereenkomstig op en voegen we scheidingstokens in tussen fragmenten. Vervolgens verwerken we elk document in een enkele voorwaartse pass en passen we gemiddelde pooling toe op de token-representaties binnen elk fragment om contextafhankelijke fragment-embeddings te verkrijgen. Zoekopdrachten worden afzonderlijk gecodeerd, met gemiddelde pooling over hun token-representaties. Tot slot berekenen we de cosinusgelijkenis tussen elke zoekopdracht-embedding en elke fragment-embedding in de batch.

Verliesfunctie

Contrastief verlies op documentniveau

Hoewel ons embedding-model alleen gelijkenissen op fragmentniveau produceert, kunnen we daar op natuurlijke wijze gelijkenissen op documentniveau uit afleiden. We beschouwen een document d als even relevant voor een zoekopdracht q als het meest relevante fragment ervan. Deze scoringsregel is geïnspireerd op de MaxSim-operatie van ColBERT, hier toegepast op fragmenten in plaats van tokens.

Specifiek, gegeven een zoekopdracht q met embedding q en een document d als een geordende lijst van fragmenten c met embeddings c, definiëren we de gelijkenis op documentniveau als:

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

Gegeven deze gelijkenissen op documentniveau, kunnen we een InfoNCE-doelstelling op documentniveau formuleren over negatieven binnen de batch.

Laat voor een zoekopdracht q d⁺ het bijbehorende relevante document aanduiden en 𝒟 de documenten in de batch. Het contrastief verlies is als volgt, waarbij temperaturen worden weggelaten voor de leesbaarheid:

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))}

Distillatieverlies op fragmentniveau

Het contrastief verlies leert het model welk document relevant is voor een zoekopdracht. Het distillatieverlies leert het waar de relevantie binnen dat document ligt, wat essentieel is voor een contextafhankelijk model.

Tijdens de training sturen we elk positief paar van zoekopdracht en document naar ons contextcompressiemodel, dat aan elk token in het document een relevantiescore toewijst. Net als bij de scoringsbepaling op documentniveau leiden we de relevantie van elk fragment af uit de meest relevante inhoud ervan. Om de gevoeligheid voor uitkijkende tokens te verminderen, inclusief tokens bij fragmentgrenzen, definiëren we relevantie op fragmentniveau als het gemiddelde van de top n token-scores binnen het fragment.

Voor elke zoekopdracht passen we een op temperatuur geschaalde softmax toe op de relevantiescores op fragmentniveau van de leraar binnen het positieve document om een doelverdeling te verkrijgen. Fragmenten in de andere documenten in de batch krijgen een doelwaarschijnlijkheid van nul. We trainen het embedding-model om aan dit doel te voldoen door de voorwaartse KL-divergentie tussen het doel en de voorspelde verdeling over alle fragmenten in de batch te minimaliseren:

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)}

Hier geven de superscripts T en S de leraar en student aan, en rⱼ is de relevantiescore van de leraar voor fragment cⱼ in het positieve document d⁺. De doelverdeling van de leraar wijst een waarschijnlijkheid van nul toe aan fragmenten in alle andere documenten in de batch.

In tegenstelling tot een enkel gouden-fragmentlabel legt dit doel gradaties van relevantie vast. Ondersteunende fragmenten ontvangen gewicht op basis van de scores van de leraar in plaats van als negatieven te worden behandeld, waardoor het model leert om zowel ondersteunende context als het antwoord op te halen.

Gecombineerd verlies

Onze gecombineerde trainingdoelstelling is een gewogen som van het contrastief verlies op documentniveau en het distillatieverlies op fragmentniveau. We gemiddelden dit gewogen verlies over de batch van paren van zoekopdracht en document.

Figuur 2 illustreert onze trainingsaanpak. De contextcompressor fungeert alleen tijdens de training als leraar. Op het moment van inferentie produceert het embedding-model één contextafhankelijke embedding per fragment, zonder extra compressie- of herrangschikkingsfase. De aanpak verbetert de manier waarop contextafhankelijke embeddings worden geleerd zonder de indexopslag te vergroten of de latentie van het leraarmodel toe te voegen op het moment van ophalen.

Figuur 2: De trainingsopstelling van ons model. De contextafhankelijke encoder (student, links) verwerkt documenten die elk bestaan uit verschillende fragmenten. Elk fragment wordt ingebed met betrekking tot de omringende documentcontext. Zoekopdracht A is een bekende match voor Document A en wordt gescoord tegen fragmenten van alle documenten om voorspelde gelijkenissen te verkrijgen. Deze scores op fragmentniveau worden met max-pooling omgezet naar scores op documentniveau. We trainen voorspellingen op fragmentniveau en voorspellingen op documentniveau om te matchen met doelverdelingen (rechts). Het doel op fragmentniveau wordt op het moment van training berekend als de voorspelling van de contextcompressor binnen het bekende relevante document en wordt op nul gezet binnen de bekende irrelevante documenten. De doelverdeling op documentniveau is ingesteld als one-hot op het bekende relevante document.

Trainingsgegevens

De trainingsgegevens bestaan uit ongeveer 430 openbare en interne datasets van zoekopdrachten en documenten die meer dan 50 talen bestrijken.

We construeren interne paar-datasets uit op PII gefilterde productiedegegevens en door relevante zoekopdrachten te synthetiseren over lange documenten. Voor elke voorwaartse pass selecteren we één dataset en nemen we hieruit een volledige batch als steekproef om de moeilijkheidsgraad van negatieven binnen de batch te vergroten en snelkoppeling-leren te vermijden. Geen van onze trainingsdatasets bevat annotaties op fragmentniveau: alle supervisie binnen documenten is afkomstig van het compressiemodel en er worden geen ConTEB-gegevens gebruikt voor training. Bovendien waren er tijdens de modelontwikkeling geen context-bench-gegevens beschikbaar.

Trainingsopstelling

Het model start vanuit een intern ColBERT-ophalmodel met 9 miljard parameters en produceert embeddings van 2048 dimensies via een lineaire projectielaag. We markeren fragmentgrenzen met een aangeleerd <|chunk_sep|>-token en vormen elke fragment-embedding door de token-embeddings ervan te gemiddelden. Zoekopdrachten worden gecodeerd door hetzelfde model, waarbij hun token-embeddings worden gemiddeld tot één enkele vector.

We gebruiken Matryoshka-training om zowel embeddings van 1024 als 2048 dimensies te ondersteunen, en kwantisatiebewuste training om native int8-embeddings te ondersteunen. Tijdens de training verhogen we geleidelijk de leersnelheid, houden we deze constant en verlagen we deze vervolgens.

Het uitgebrachte model is een model-soep die de gewichten van verschillende controlepunten uit dezelfde trainingsrun gemiddeld.

Een nieuwe benchmark voor ophalen op fragmentniveau

Openbare benchmarks voor contextafhankelijk ophalen, zoals ConTEB, delen de aanname achter supervisie met gouden fragmenten: elke zoekopdracht heeft één enkel relevant fragment en een model wordt alleen beloond voor het als eerste rangschikken van dat fragment. Ze erven ook de beperkingen daarvan.

Ten eerste test ConTEB het ophalen op taken waarbij een fragment ambigue is zonder de omringende context. Bij deze taken presteerden contextafhankelijke modellen beter dan modellen die elk fragment onafhankelijk coderen. Het vraagt echter niet of een model ook de andere delen van het document naar voren brengt die het fragment begrijpelijk maken.

Ten tweede wordt er niet systematisch getest of het juiste document kan worden gevonden wanneer bijna identieke documenten in hetzelfde corpus alleen verschillen in de context die een overigens identieke zin omringt.

Beide capaciteiten zijn van belang wanneer een zoekagent of gebruiker een antwoord moet begrijpen en verifiëren aan de hand van een paar opgehaalde zinnen in plaats van een volledig document. Daarom hebben we context-bench gebouwd, een gecontroleerde benchmark voor het ophalen over lange documenten, ontworpen om het gebruik van documentcontext te onderscheiden van de algemene ophaalkwaliteit. Het test of contextafhankelijke embeddings informatie van elders in een document gebruiken om drie capaciteiten te ondersteunen:

  1. Documentdisambiguatie: Identificeer het juiste document te midden van bijna identieke alternatieven.
  2. Antwoord ophalen: Haal antwoorddragende fragmenten op waarvan de betekenis afhangt van details elders in het document.
  3. Bewijs ophalen: Haal ondersteunende fragmenten op die het antwoord verduidelijken of onderbouwen.

Context-bench bevat 2.099 zoekopdrachten en 38.894 documenten. Er worden fragmenten ter lengte van een zin gebruikt, wat resulteert in in totaal 2.458.072 fragmenten. De zoekopdrachten bestrijken 21 domeinen, waaronder bedrijfsdeponeringen, klinisch onderzoek, reizen, entertainment, onderwijs, overheid, juridische contracten en softwaredocumentatie.

Elke zoekopdracht is ontworpen om een van de twaalf contextafhankelijke capaciteiten te testen. De primaire doeldocumenten zijn opzettelijk lang: 1.061 van de 1.197 distinctieve primaire doeldocumenten hebben ten minste 200 zinnen, met een mediateanlengte van ongeveer 6.100 tokens. Elke zoekopdracht heeft precies één juist antwoord in het corpus. Wanneer hetzelfde feit vaker dan eens wordt vermeld in een gouden document, bijvoorbeeld in een samenvattende zin en een tabelrij, worden al deze zinnen geaccepteerd als antwoorden.

Een antwoordroute is één geldige combinatie van een antwoordfragment en het ondersteunende bewijsmateriaal dat nodig is om dit te interpreteren of te verifiëren. Over de 2.099 zoekopdrachten heeft de antwoordroute van het primaire doeldocument één bewijsgroep voor 964 zoekopdrachten, twee voor 735, drie of meer voor 332, en geen voor 68. Alternatieve geldige antwoordroutes kunnen andere bewijsgroepen vereisen.

Tabel 1: Benchmarkstatistieken.

Statistiek

Waarde

Zoekopdrachten

2.099

Documenten

38.894

Zinsfragmenten

2.458.072

Mediatenaantal lengte van primair doeldocument

6.100 tokens

Domeinen

21

Bewijsgroepen per zoekopdracht (antwoordroute van primair doeldocument)

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

Tabel 2: Twaalf contextafhankelijke capaciteiten die worden getest door context-bench, met illustratieve voorbeelden.

Capaciteit

Voorbeeldzoekopdracht

Antwoordfragment

Vereiste documentcontext

1. Entiteitsidentiteit

Hoeveel heeft Northlake uitgegeven aan de inkoop van eigen aandelen?

Het bedrijf kocht voor 12,8 miljard dollar aan aandelen in.

De inleiding identificeert Northlake als “het bedrijf”. Een vergelijkbaar rapport van Southlake is niet relevant.

2. Periode of versie

Welke cartridge past op de M40 revisie B?

Installeer de KC-42 cartridge.

De toepassingssectie vermeldt dat deze instructies betrekking hebben op revisie B, en niet op revisie C.

3. Definities en aliassen

Welk uitvalpercentage had de groep van 15 mg?

Zeta had een uitvalpercentage van 12,7%.

Het rapport definieert Zeta als de groep van 15 mg. Zonder die definitie identificeert het fragment de gevraagde groep niet.

4. Tabelstructuur

Wat is de batterijcapaciteit van het Max-model?

Typische capaciteit: 4.250 | 4.700 | 5.150.

De tabelkop stelt Mini | Base | Max vast, gemeten in mAh. Het antwoord is daarom 5.150 mAh.

5. Voorwaarden en uitzonderingen

Hoe lang duurt de batterijdekking voor commercieel gebruik?

De batterijdekking duurt 18 maanden.

Een inleiding van een sectie beperkt deze dekking tot commerciële installaties; huishoudelijke installaties hebben een andere garantie.

6. Verwijzingen en voornaamwoorden

Wanneer werd Mara vice-burgemeester?

Zij trad in 2021 in dienst.

Het voorafgaande verhaal stelt vast dat “zij” verwijst naar Mara, en niet naar Elin, die eveneens wordt besproken.

7. Lijstvolgorde en positie

Welk nummer opende de toegift?

14. Lantern Road.

Een opmerking elders vermeldt dat nummers 14–16 de toegift vormden. Track 14 is daarom het openingsnummer daarvan.

8. Bereik van de sectie

Welke lens werd gebruikt voor het camerawerk van de film?

Er werd continu een prime-lens van 35 mm gebruikt.

Deze passage behoort tot “Primaire opnames”, en niet tot de afzonderlijke sectie over promotiefoto's.

9. Sprekertoeschrijving

Welke heropeningsdatum beloofde de burgemeester?

We heropenen op 12 juni.

Het transcript identificeert de burgemeester als de spreker. Dezelfde woorden van een aannemer zouden de belofte van de burgemeester niet aantonen.

10. Veranderingen in de loop der tijd

Welke opzegtermijn gold na de wijziging in mei?

De opzegtermijn bedraagt nu 45 dagen.

De wijzigingsgeschiedenis toont aan dat deze wijziging in mei van kracht werd en de eerdere regel van 30 dagen verving.

11. Causale relaties

Waarom stopte de westelijke pomp?

Dat defect veroorzaakte de uitschakeling.

Het onderzoek identificeert “dat defect” als een vastgelopen lager in de westelijke pomp, en onderscheidt dit van een ongerelateerde verstopping in de inlaat.

12. Figuurlijke of cross-linguale betekenis

Figuurlijk:

Wat symboliseert “de winterkamer” in het gedicht?

Cross-linguaal:

Welk onderdeel draagt de Franse instructie de technicus op te verwijderen?

Figuurlijk:

Het staat symbool voor ballingschap, en niet voor een fysieke kamer.

Cross-linguaal:

Retirez le capot. (Verwijder de kap.)

Figuurlijk:

Het commentaar identificeert “het” als het terugkerende beeld van “de winterkamer” in het gedicht.

Cross-linguaal:

De verklarende woordenlijst van de handleiding specificeert dat “capot” de beschermende motorkap betekent, en niet de verzendafdekking.

Documenten en zoekopdrachten

De zoekopdrachten, documenten en te testen capaciteiten zijn geïnspireerd op gesprekken met klanten van turbopuffer.

Om een voorbeeld te geven: denk aan de zoekbehoeften van een vastgoedbeheerbedrijf. Deze bedrijven hebben honderden, soms duizenden huurovereenkomsten die alleen verschillen in de namen van de huurders, datums en enkele andere belangrijke details. Een veelvoorkomende zoekopdracht voor die dataset zou kunnen zijn “wanneer eindigt het huurcontract van Parklaan 5 en wat is de huidige huurprijs?”. Huurovereenkomsten kunnen bovendien lang zijn en de kritieke disambiguerende componenten die bevestigen dat je het juiste document hebt opgehaald (zoals de datum, het adres, de naam van de huurder, enz.) bevinden zich vaak erg ver weg van de belangrijkste antwoordzin met het bedrag van de maandelijkse huurbetaling. In de praktijk kunnen identieke zinnen zoals “Maandelijkse huur is $X,XXX.” in veel documenten in het corpus voorkomen.

Een goed model voor contextafhankelijke embeddings moet de context uit het hele document gebruiken om het juiste document te identificeren en zowel het antwoord als de bijbehorende zinnen op te halen. Hierdoor kan een gebruiker of zoekagent het antwoord snel verifiëren en bevestigen dat het uit het juiste document afkomstig is.

Antwoord- en bewijslabels

Voor elke zoekopdracht labellen we “antwoord”- en “bewijs”-zinnen in het doeldocument. Een model slaagt voor onze test voor “lezerstoereheid” als het een antwoordzin ophaalt samen met ten minste één zin uit elke bewijsgroep. Samen bieden deze zinnen voldoende context voor een lezer om het antwoord met ondersteunend bewijsmateriaal te verifiëren.

Wanneer modellen voor contextafhankelijke embeddings dit goed doen, kunnen ze het aantal tokens dat zoekagenten moeten bekijken aanzienlijk verminderen en het voor een persoon een stuk eenvoudiger maken om snel te bevestigen dat ze het juiste antwoord op hun oorspronkelijke zoekopdracht hebben gevonden zonder het hele document te hoeven lezen.

Elke bewijsgroep moet worden achterhaald, maar elk willekeurig alternatief van een groep is voldoende om deze te achterhalen. Het komt vaak voor dat hetzelfde feit op verschillende plaatsen in deze lange documenten wordt vermeld. Het ophalen van slechts één zin uit elke bewijsgroep voldoet aan de criteria voor lezerstoereheid en zou als zodanig worden geaccepteerd als perfecte bewijsterugwinning.

Metrische gegevens

Elk document wordt opgedeeld in zinnen en voor alle modellen worden dezelfde grenzen gebruikt. Er worden twee voorwaarden getest voor niet-contextafhankelijke embedding-modellen: een waarbij elke zin onafhankelijk wordt ingebed en een andere waarbij het gehele document als één enkel fragment wordt ingebed.

We gebruiken de voorwaarde op zinsniveau om antwoordterugwinning en bewijsterugwinning te meten. Hiermee wordt getest of een niet-contextafhankelijk model het juiste antwoord en ondersteunend bewijsmateriaal kan identificeren wanneer elke zin wordt ingebed zonder toegang tot het omringende document. Dit is opzettelijk uitdagend. Bij veel zoekopdrachten ontbreken in de antwoordzin zelf de details die nodig zijn om deze te onderscheiden van vergelijkbare zinnen elders in het corpus.

We gebruiken de voorwaarde op documentniveau als een referentiewaarde voor documentterugwinning. Hiermee wordt getest of fijnmazige zins-embeddings voldoende ophaalvoordeel opleveren om de extra opslagkosten te rechtvaardigen in vergelijking met het opslaan van één vector per document. Een index op zinsniveau creëert aanzienlijk meer vectoren dan een index op documentniveau, dus deze moet beter presteren dan de referentiewaarde van één vector per document om die kosten te rechtvaardigen.

Alle evaluaties maken gebruik van exhaustieve ranglijsten tegenover alle 2.458.072 fragmenten. Verschillen tussen modellen weerspiegelen daarom de representaties, niet de indexconfiguratie. We richten ons op drie belangrijke metrische gegevens:

Document@K wordt gedefinieerd als:

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

waarbij d∗d^{*} het hoogst gerangschikte document in DqD_q is.

Answer@K wordt gedefinieerd als:

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

waarbij CK(q)C_K(q) de beste KK fragmenten over het gehele corpus zijn en AqA_{q} de set van geaccepteerde antwoordfragmenten is.

Evidence Recall@K wordt als volgt gemeten binnen d∗d^{*}: Rangschik de zinnen van d∗d^{*} op basis van gelijkenis, verwijder de hoogst gerangschikte antwoordzin en laat RK(q)R_K(q) de top KK zijn die overblijft. Voor bewijsgroepen Gq={g1,…,gm}G_q=\{g_1,\ldots,g_m\} wordt groep gjg_j teruggehaald als een alternatief E∈gjE\in g_j voldoet aan E⊆RK(q)E\subseteq R_K(q), en

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 vraagt of contextualisatie ervoor zorgt dat het juiste document het kan winnen van verwante documenten en afleiders die dezelfde woordenschat delen.

Answer@K vraagt of de antwoordzin zelf tot de topfragmenten behoort.

Evidence Recall@K vraagt hoeveel van de ondersteunende context wordt teruggehaald binnen de top K-fragmenten van het juiste document, na uitsluiting van het hoogst gerangschikte antwoordfragment. Het verwijderen van het antwoord voorkomt dat de bewijsterugwinning dubbel telt wat Answer@K al meet, en laat alle KK slots vrij voor ondersteunende context. Het vereisen dat het gouden document zich in de top 10 van opgehaalde documenten bevindt, betekent dat geen enkel model bewijskrediet ontvangt voor een document dat het niet naar voren zou hebben gebracht. We rapporteren ook All-Evidence@10, het fractiepercentage van zoekopdrachten waarbij elke groep is teruggehaald.

Samen ontleden deze metrische gegevens de uitdagingen waarmee modellen voor contextafhankelijke embeddings worden geconfronteerd: het juiste document vinden, het juiste antwoord vinden en de minimale context achterhalen die aantoont waarom het antwoord juist is.

Figuur 3 illustreert de metrische gegevens met het voorbeeld van vastgoedbeheer.

Figuur 3: Context-bench-metrische gegevens geïllustreerd met een huurzoekopdracht. Document@K test het ophalen van het juiste document; Answer@K test het ophalen van het bijbehorende antwoordfragment; Evidence Recall@K meet het herstel van ondersteunende bewijsgroepen binnen het doeldocument. In dit voorbeeld vereist het verifiëren van de huurprijs zowel het adres als bewijs van het huurjaar. Bewijsterugwinning sluit het bovenste antwoordfragment uit en vereist dat het doeldocument in de top 10 staat.

Evaluatieresultaten

We evalueren ons model op vier fronten in vergelijking met contextafhankelijke en niet-contextafhankelijke embedding-modellen.

Onze contextafhankelijke referentiewaarden zijn pplx-embed-context-v1-4B en voyage-context-4. Onze niet-contextafhankelijke referentiewaarden zijn voyage-4-large en NVIDIA's Nemotron-3-Embed-8B-BF16, die fragmenten onafhankelijk coderen. De set van referentiewaarden varieert per experiment, zoals wordt aangegeven in elke figuur.

We beginnen met context-bench, dat direct de capaciteiten test die ten grondslag liggen aan dit werk, en rapporteren vervolgens de resultaten op ConTEB, de standaard openbare benchmark voor contextafhankelijke embeddings. Om te controleren of deze winst niet ten koste gaat van de algemene ophaalkwaliteit, evalueren we ook domeinspecifieke benchmarks voor document- en fragmentterugwinning die we hebben opgebouwd uit openbare datasets. Tot slot onderzoeken we twee praktische eigenschappen voor implementatie: ophaalkwaliteit versus opslagkosten per vector, en gevoeligheid voor de fragmentgrootte die wordt gebruikt op het moment van indexeren. Alle evaluaties coderen documenten van maximaal 32.768 tokens in een enkele pass.

Context-bench

Zoals te zien is in Figuur 1 in de inleiding, leidt onze preview op Answer@K en Evidence Recall@K bij elke gerapporteerde afkapwaarde, evenals op All-Evidence@10. Bij K = 10 bereikt het 45,5% antwoordterugwinning, 40,6% bewijsterugwinning en 31,1% terugwinning van al het bewijs. Het leidt ook op Document@1 en Document@10, en bereikt respectievelijk 15,2% en 61,6%. Bij K = 10 overtreft onze preview voyage-context-4 met 14,4 procentpunten in antwoordterugwinning en 5,0 punten in bewijsterugwinning.

ConTEB

Ons preview-model behaalt de hoogste gemiddelde nDCG@10 onder de getoonde modellen op ConTEB in Figuur 4. Het leidt niet op elke taak: pplx-context-v1-4B scoort hoger op NarrativeQA, terwijl Nemotron-3-8B het hoogst scoort op COVID-QA. Zoals de hoofdauteurs ook al opmerkten in het ConTEB-paper, bevat COVID-QA voornamelijk koppelingen tussen zoekopdracht en fragment die zeer extractief zijn en kunnen worden voldaan met eenvoudige oppervlakkige lexicale matching op technische medische termen. Hierdoor is contextbegrip minder nuttig voor deze taak en presteren niet-contextafhankelijke modellen doorgaans beter dan contextafhankelijke.

Figuur 4: nDCG@10 op taakniveau op ConTEB in de instelling van zoekopdracht naar fragment. Het gemiddelde is het ongewogen gemiddelde over de acht taken.

Algemene ophaalkwaliteit over domeinen heen

Naast benchmarks die zijn ontworpen voor contextafhankelijke embeddings, beoordelen we de domeinspecifieke prestaties van ons model.

Onze suite voor zoekopdracht-naar-fragment (Q2C) gebruikt MTEB-taken zoals LegalBench en FinanceBench naast extra ophaaltaken die we hebben samengesteld uit openbare datasets. Binnen elk relevant document wordt een fragment gelabeld als relevant als het de exacte antwoordspan bevat wanneer de taak er een biedt, en anders via een LLM die de relevantie ervan voor de zoekopdracht beoordeelt. De suite voor zoekopdracht-naar-document (Q2D) gebruikt dezelfde taken en beoordeelt of het relevante document wordt opgehaald.

Ons model behaalt de hoogste gemiddelde score op het ophalen van fragmenten in Figuur 5 en loopt voorop in het juridische, technische en gezondheidsdomein. Het loopt niet in elk domein voorop: voyage-context-4 scoort hoger bij financiën en meertalig ophalen, en Nemotron-3-8B scoort het hoogst bij conversatie-ophalen. Bij het ophalen van documenten in Figuur 6 scoort ons model gemiddeld iets onder voyage-context-4, terwijl het voorop loopt in het technische domein. De referentiewaarde pplx-context-v1-4B scoort gemiddeld lager in beide suites, wat consistent is met het feit dat deze alleen is getraind op de ConTEB-trainingsset, wat laat zien dat supervisie gekoppeld aan de gouden fragmenten van één benchmark slecht wordt overgedragen naar andere domeinen.

Figuur 5: Gemiddelde nDCG@10 op de taken van zoekopdracht naar fragment (Q2C), gegroepeerd op domein. Domeinstaven zijn ongewogen gemiddelden van de scores op taakniveau in dat domein; het algehele gemiddelde is een ongewogen gemiddelde over alle weergegeven taken.
Figuur 6: Gemiddelde ophaalscore op de taken van zoekopdracht naar document (Q2D), gegroepeerd op domein. Elke staaf in een domein is het ongewogen gemiddelde van de hoofdscores op taakniveau; het algehele gemiddelde is een ongewogen gemiddelde over alle weergegeven taken.

Ophaalkwaliteit en opslagkosten

Een model voor contextafhankelijke embeddings produceert één vector per fragment, dus een index die is gebouwd met ons model bevat precies evenveel vectoren als een conventionele index op fragmentniveau met dezelfde fragmentatiestrategie. Contextualisatie verandert wat elke vector kodering geeft, niet hoeveel vectoren er worden opgeslagen. De opslagvoetafdruk wordt daarom bepaald door de grootte van elke vector. Het model biedt twee manieren om dit te verminderen: het afkappen van de embedding van 2048 naar 1024 dimensies en het kwantiseren ervan naar int8.

Figuur 7 toont een gunstige afweging tussen ophaalkwaliteit en vectoropslag. Bij 1024 dimensies gebruiken onze int8-embeddings 1 KB per vector, terwijl ze de fragmentophaalscore van voyage-context-4 bij 2048 dimensies in float32, die 8 KB per vector gebruikt, net overtreffen. Het verhogen van onze embedding-grootte naar 2048 dimensies verhoogt de ophaalkwaliteit verder bij 2 KB per vector. Deze opslagcijfers hebben alleen betrekking op de vectoren, niet op de rest van de index.

Figuur 7: Kwaliteit van het ophalen van fragmenten (gemiddelde nDCG@10) als functie van de opslag per vector. Doorgetrokken lijnen duiden float32 aan en onderbroken lijnen duiden int8 aan; labels geven de embedding-dimensie aan.

Gevoeligheid voor fragmentgrootte

Figuur 8 toont slechts een bescheiden verandering in ophaalkwaliteit naarmate de fragmentgrootte toenemend stijgt van 64 naar 512 tokens: de gemiddelde score daalt van 81,0% naar 79,9%, een afname van 1,1 procentpunt. Dit suggereert dat het model effectief blijft over de geteste fragmentgroottes, wat indexeerpijplijnen flexibiliteit geeft in hoe documenten worden opgesplitst.

Figuur 8: Gevoeligheid voor fragmentgrootte van ons model. Elk punt is het ongewogen gemiddelde nDCG@10 over 74 MTEB-taken, waarbij documenten zijn geïndexeerd met de opgegeven fragmentgrootte.

Release

turbopuffer houdt het volledige corpus, de zoekopdrachten en labels van context-bench privé en rapporteert de resultaten voor ingediende modellen. Een openbare benchmark van dit type nodigt uit tot directe training op de bijbehorende zoekopdrachten en documenten, wat de benchmark geleidelijk zou verzadigen en de waarde ervan voor het in de tijd volgen van de voortgang zou aantasten. Als je wilt dat jouw model wordt geëvalueerd op de benchmark, neem dan contact op met turbopuffer via contextbench@turbopuffer.com.

Een preview van ons model is beschikbaar op Hugging Face en alle resultaten in dit bericht worden gerapporteerd voor deze preview. We werken eraan om het model beschikbaar te maken via de Perplexity API en om het ophalen over lange documenten samen met turbopuffer verder te verbeteren.

Citatie

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}
}