Brain: Agentisk minne som en kunnskapswiki

Et strukturert, sporbart, selvforbedrende Markdown-filsystem, kompilert offline og navigert etter behov.

ForfatterePerplexity Engineering

Computer-brukere utfører arbeid som strekker seg over måneder og hundrevis av økter. Ved den tiende økten bør systemet være langt mer produktivt enn i den første. Det bør akkumulere kontekst om brukeren, deres preferanser og arbeidet som allerede er utført.

For eksempel, når den blir bedt om å tegne et diagram over en arbeidsflyt brukeren tidligere har forklart, bør Computer huske detaljene og bruke dem til å skape og eksportere en figur i brukerens foretrukne stil. Brukeren trenger ikke å forklare detaljene i arbeidsflyten på nytt eller gjenta sin preferanse for PDF framfor PNG-artefakter; systemet bør være i stand til å gjenopprette den konteksten nøyaktig fra tidligere økter og bruke den automatisk.

Minne er grunnlaget for kontinuerlig agentforbedring. Et effektivt minnesystem bør være strukturert, sporbart og tilpasningsdyktig, slik at agenter kan søke med riktig bredde og dybde for hver oppgave samtidig som hver beslutning forankres i den mest oppdaterte informasjonen.

Introduksjon

Å innpode agenter med relevant kontekst er et mangefacettert problem. Først må agenter vite hva som eksisterer og hvordan de skal få tilgang til det. For det andre, når de finner et nyttig stykke informasjon, må de være sikre på at det er komplett, nøyaktig og oppdatert. En isolert fakta er av begrenset verdi med mindre agenten kan finne relatert informasjon, verifisere at den kommer fra en pålitelig kilde, og sikre at den ikke trenger å oppdateres med en nyere observasjon.

Å dytte statiske minnefiler direkte inn i modellkonteksten maksimerer tilgjengeligheten for agenter, men presenterer en klassisk presisjon-gjenkalling-avveining. For mye informasjon vil mette agentens kontekstvindu med elementer av stadig mindre relevans, mens for lite vil forringe svarkvaliteten på grunn av mangel på relevant kontekst. I kontrast er tilgang på forespørsel til eksterne databaser mer fleksibel, men legger byrden med navigering over på agenten. Vektordatamaskiner lagrer ofte frakoblede fragmenter, og grafdatabaser krever at agenter vet hvordan de skal utføre forespørsler effektivt.

Nylig introduserte vi Brain, en kjernekomponent i Computers minnesystem som gir det beste fra to verdener. Brain er en strukturert kunnskapswiki som ligger på topp av statiske minnefiler og bevis. Siteringer kobler påstander til kildene sine, og relaterte informasjonsbiter kobles lateralt. Den organiserte wikien gjør kontekst navigerbar på forespørsel, mens detaljerte artefakter beholdes i laget under den.

Brain-kunnskapswikien vist som en graf, med enheter som noder og kanter som kobler sammen relaterte emner.
En eksempelside for Brain basert på en syntetisk persona.

Brain kobler til et omfattende minnesystem med tre nøkkelkomponenter: slitesterk minnelagring, forgrunnsagenter som bruker minne til å svare på forespørsler, og bakgrunnsagenter som oppdaterer og forbedrer minne. Følgende figur illustrerer disse komponentene plassert i Brains overordnede systemarkitektur.

Arkitekturdiagram som viser slitesterk minnelagring, forgrunnsagenter som leser minne, og bakgrunnsagenter som oppdaterer minne.
Minnesystemet består av delt slitesterk minne, forgrunnsagenter som bruker minne, og bakgrunnsagenter som oppdaterer minne.

I denne artikkelen beskriver vi hvert lag i dybden, og forklarer hvordan Brain organiserer minne, hvordan agenter bruker det, og hvordan bakgrunnsprosesser holder det oppdatert. Vi presenterer også resultater fra interne evalueringer som validerer Brains design, og demonstrerer at det forbedrer agentytelsen til en lavere kostnad.

Minneorganisering og -lagring

Minnet trenger en representasjon som skalerer til en brukers fulle historikk uten å tvinge hver eneste bit av kontekst inn i ledeteksten. Computers minnesystem representerer vedvarende kontekst som et filsystem. Brain syntetiserer kunnskap på tvers av råkilder, og kobler sammen relaterte emner og kobler påstander tilbake til øktene og filene som støtter dem. Denne strukturen, beskrevet nedenfor, lar oss organisere minnet i en spesielt godt egnet form for agenter.

Filsystembasert minne

Datamaskiner økter lever allerede i en sandboks med et filsystem, et skall og I/O-verktøy. Da vi designet Brain, ønsket vi å introdusere så lite nytt maskineri som mulig i grensesnittet mellom modellen og agentminnet. Dette er hvorfor vi bygde Brain på et filsystem-nativt kontekstlag. Minne materialiseres som filer i sandboksen under en memory/-mappe, og agenten bruker ganske enkelt de samme verktøyene på minnefiler som den allerede bruker på alt annet.

Ved roten av minnetreet sitter tre toppnivåkataloger som opprettholder kontekst på ulike abstraksjonsnivåer. knowledge/ er selve Brain, en syntetisert kunnskapswiki som kobler sammen enheter, konsepter, aktive prosjekter og tidligere læring; notes/ inneholder destillerte utdrag organisert som emnemapper; og sessions/ inneholder indekser, sammendrag og fullstendige transkripsjoner som råhistorikk. Figuren nedenfor viser en forenklet visning av oppsettet.

Katalogtre som viser memory/ med undermappene knowledge/, notes/ og sessions/.
En eksempelvisning av oppsettet for minnefilsystemet.

Flatene er bevisst redundante. For enkle enkeltstegsspørsmål er det ofte nok å søke etter utdrag i /notes etter et nøkkelord, mens /knowledge-laget er mest nyttig for spørsmål som krever sammensying av bevis på tvers av uker eller måneder med Computer-økter.

Brain: Kunnskapswikien

Brain er formatert som en LLM-wiki, et system av sammenkoblede Markdown-filer. Denne formen for lett strukturert Markdown gir en helhetlig oversikt over eksisterende kontekst, slik at agenter enkelt kan forstå hvilke poster som er tilgjengelige, hvordan de henger sammen, og hvor de kan finnes. Hver side er en vedlikeholdt visning av ett emne; den bør forbli nyttig når den leses alene samtidig som den gjør videre utforskning enkel gjennom lenker.

Lenker kommer i to typer. [[wikilenker]] er kontekstkanter. De kobler sider lateralt; et prosjekt kan koble til eieren, klienten eller konseptene det avhenger av. Å følge dem svarer på "hva annet trenger jeg å vite?". [cite:N]-referanser er beviskanter. De kobler påstander nedover til de rå øktene eller koblingskildene som støtter dem. Å følge dem svarer på "hvordan vet jeg at dette er sant?"

Figurene nedenfor viser hvordan en del av Brain vil se ut for en syntetisk persona, en tilgjengelighetsforsker ved navn Nadia. Hennes Brain inkluderer en side om et eksempelprosjekt, en universell design-sprint i Japan, som syntetiserer kunnskap fra økter og koblinger. Grafvisningen demonstrerer hvordan kontekst- og beviskantene som finnes på siden kobler sammen relaterte enheter og kilder.

En eksempelside for Brain-wiki gjengitt som Markdown, som viser wikilenker og siteringskanter innebygd.
Brain er et system av Markdown-filer.
En undergraf fra en eksempler på en Brain-wikiside, visualisert som en graf med tilkoblede enheter og kilder.
Innebygd kontekst og beviskanter danner en grafstruktur for enkel navigering.

Brain er Git-støttet for å bevare versjonshistorikk, noe som støtter dens stadig utviklende natur. Sider kan redigeres over tid, mens endringslogger registrerer nøkkeloppdateringer og lar agenter enkelt inspisere tidligere versjoner og diffs. Dette støtter også agentisk koordinering, noe som er kritisk siden flere agenter kan bruke og oppdatere Brain samtidig.

Bruke Brain

Når agenter svarer på en brukerforespørsel, må de kunne finne riktig kontekst på riktig detaljnivå. Brains struktur gjør det enkelt for agenter å utforske minnet. Agenter kan velge mellom handlingsrettede trinn som å følge kontekstlenker for å finne relatert informasjon, følge bevislenker for å verifisere påstander, eller kalle opp en underagent for å hente inn og syntetisere ytterligere kontekst. Vi styrer den agentiske utforskningsprosessen på en rekke måter som tar sikte på å maksimere agentenes enkle tilgang til relevant informasjon.

Utforskningsstrategi

Vi inkluderer en kompakt indeks over Brain i den første brukermeldingen, slik at agenten starter med arbeidskunnskap om det som allerede eksisterer. Agenten samhandler deretter med Brain ved hjelp av kjente operasjoner: å lese spesifikke elementer det refereres til av indeksen, bruke grep til å søke på tvers av sider, følge lenker og inspisere siteringer, sammenligne Git-revisjoner og gå ned i økter eller råbaner. Kodeblokken nedenfor viser eksempelkommandoer for en syntetisk persona.

bash
# 1. Orient: the index is a map of everything known cat memory/knowledge/index.md # 2. Target: find pages that touch the question grep -Ril "kyoto\|sendai" memory/knowledge/ # 3. Read the page; follow context edges as needed cat memory/knowledge/projects/japan-universal-design-sprint.md cat memory/knowledge/entities/sora-city-laboratory.md # via [[wikilink]] cat memory/knowledge/entities/sapphir-mobility-coop.md # via [[wikilink]] # 4. Only if the claim must be verified: resolve evidence # city bases → [cite:1], [cite:10] → pplx://sessions/<id> # # Example (pseudo, replace with your real tool): # pplx-session-fetch 1eaf53d4-09e0-5823-bb96-c8662f582708 --slice <slice-id> # 5. Some evidence lives outside the sessions # meeting slots → [cite:15] → connector://google-calendar # # pplx-connector-fetch google-calendar --query "japan-sprint"

Agenter utforsker denne konteksten gjennom en selvdrevet sløyfe, i stedet for en fast pipeline. Derfor kan agenten fortsette å søke til den er fornøyd med konteksten som ble funnet. Agenten kan også velge når den skal inspisere siteringer og bevis for å finne eller verifisere detaljer. En mindre preferansesak kan vedtas direkte fra en enkelt Brain-side, mens en konsekvensrik beslutning eller en konflikt mellom kilder kan rettferdiggjøre å følge siteringen og lese den opprinnelige posten. Den grafbaserte strukturen lar agenten velge mellom konkrete neste trinn, i stedet for å søke formålsløst etter relatert informasjon.

Flytdiagram over en agent som utforsker Brain trinnvis ved å følge lenker mellom sider og siteringer til råkilder.
Agenten kan følge Brain-lenker til nye Brain-sider eller evidenskilder til den er fornøyd med å ha nok kontekst for oppgaven.

Filmaterialisering

For at agentisk utforskning skal fungere, må agenten ha tilgang til hele memory/-treet gjennom sandboksfilsystemet. Å kopiere hele treet lokalt hver gang en sandboks bootes er dyrt og unødvendig, ettersom agenten ikke vil berøre de aller fleste av disse filene. Et annet alternativ vil være å bruke et eksternt filsystem, slik at agenter kan få tilgang til hvilken som helst fil uten å kopiere dem lokalt. Imidlertid utfører agenter ofte tusenvis av filsystemoperasjoner i en enkelt kommando; hvis hver enkelt blir en nettverksforespørsel, begynner rundturkostnaden å dominere utforskningssløyfen. I intern testing var enkle grep-arbeidsbelastninger over en ekstern FUSE-basert bane omtrent 400 til 500 ganger tregere enn de tilsvarende operasjonene over lokale filer.

I stedet bygger vi et lokalt arbeidssett med materialiserte filer, mens det større korpuset forblir bak et minnehentingssystem. Computer forhåndslaster et innledende kart (hentet fra nyere minner, økter, sammendrag og tilgjengelig kunnskap) på sandboksen når den bootes. Computer-agenter har tilgang til en Memory Agent, en underagent som kan utføre semantisk søk og laste et nytt sett med filer. Når nødvendig kontekst mangler, kan Computer kalle opp Memory Agent med en beskrivelse av informasjonen som kreves. Memory Agent søker på tvers av filer, returnerer en umiddelbar tekstsyntese og materialiserer de støttende postene som filer under minnetreet. På denne måten utvides arbeidssettet naturlig og gradvis over tid, og bevarer stabile baner og kilderelasjoner for bevis som allerede er tilstede.

Diagram som viser innledende filforhåndslasting pluss Memory Agent-henting på forespørsel som materialiserer filer i sandboksen.
Øktforhåndslasting og semantisk henting av Memory Agent laster et innledende kart over filer som agenten mest sannsynlig vil trenge.

Dette designet løser latensflaskehalsen på en elegant måte. Å lagre relevante filer lokalt sikrer at filsystemoperasjonene som kreves for utforskning forblir raske, og batch-henting gjør at bassenget av materialiserte filer kan vokse uten å kreve separate anrop for hver fil eller lasting av et stort antall irrelevante filer. Det nestede agentdesignet gir også Computer fordelene med agentisk henting uten at hovedagenten trenger å søke direkte i hele backend-korpuset hver gang, og bevarer sitt eget kontekstvindu for informasjonen med høyest verdi.

Vedlikeholde Brain

Brukere lærer hele tiden av arbeidet de gjør og samtalene de har, så agentisk minne må gjøre det samme. For at Brain skal forbli nyttig, bør det være en kortfattet representasjon av den viktigste kunnskapen. Nye sider bør opprettes for viktige nye enheter, ny informasjon bør legges til de relevante Brain-sidene, og utdatert kontekst bør fjernes til rett tid. For eksempel, hvis en brukers jobb endrer seg, bør Brain gjenspeile den endringen; den bør inneholde brukerens nye jobb og prioritere informasjon knyttet til deres nye ansvarsområder og prosjekter.

Brain vedlikeholdes av bakgrunnsagenter vi kaller Dream. Dream-agenter kjører offline over filbasert minne, og syntetiserer ny informasjon til Brain-oppdateringer. Vi definerte nøye omfanget og oppførselen til Dream-agenter for å effektivt utføre denne oppgaven, sammen med Dream-spesifikke rekkverk for å sikre at Brain-oppdateringer er konsistente og nøyaktige.

Dream: Bakgrunnsagenter for minneforfining

Dream-agenter kjører i sandbokser med tilgang til det samme filsystemet og de skrivebeskyttede verktøyene som en interaktiv Computer-økt ville hatt, men deres eneste mål er å forbedre konteksten for framtidige økter. Hver kjøring starter fra Brain produsert av tidligere kjøringer i stedet for å gjenoppbygge brukerens kontekst fra bunnen av. Den bruker deretter den gjeldende Brain til å orientere seg og produserer en oppdatert Brain som framtidige kjøringer kan bruke.

Løkkediagram: interaktive økter mater Dream, som oppdaterer Brain, som forbedrer framtidige økter.
Dream-agenter arbeider i bakgrunnen for å oppdatere Brain, og danner en selvforbedringssløyfe.

En Dream-agent mottar et miljø og bestemmer hvordan det skal utforskes, i stedet for å motta en fast inndata flatet ut til en enkelt melding. Den kan navigere i filbasert minne, bruke godkjente skrivebeskyttede koblingsverktøy for å verifisere et stykke kunnskap, og delegere avgrensede deler av arbeidet til underagenter, inkludert Memory Agent. Omfanget og ansvarsområdene til Dream-agenten er spesifisert som en Skill.

Generelt består en Dream-kjøring av 4 faser:

  1. Orient: Agenten fullfører en ordnet orienteringsprosedyre. Den identifiserer det autoritative omfanget, stående instruksjoner, slettingslogg, tilleggsinndata og stoppforhold.
  2. Oppsummer økter: For hver økt som er ny (eller har hatt nye vendinger) siden den siste oppdateringen, skriver (eller oppdaterer) agenten et kort sammendrag av økten.
  3. Koble fakta til emner: Agenten legger til hver observasjon den anser som signifikant til sin riktige hjemmebase, som typisk er en wiki-side. Den undersøker og forespør autentiserte koblinger når de er tilgjengelige.
  4. Oppdater kunnskapswikien: Agenten oppdaterer wikien basert på funnene sine. Den kan produsere nye sider for varige emner, revidere sider når den nåværende syntesen har endret seg, eller legge til nye lenker eller siteringer som støtter en faktapåstand. Den kan også velge å ikke gjøre noen endringer når den nåværende grafen allerede er korrekt.

For å sikre at eventuelle oppdateringer til Brain er komplette og konsistente, skriver agenter foreslått tilstand til et trinnvist utdatatre. Ingen permanente endringer gjøres før agenten har utført alle oppdateringene den anser som nødvendige. Å koordinere disse beslutningene i en enkelt agentisk prosess gjør det mulig å oppdatere grafen som en helhet i stedet for som urelaterte sider.

Svømmefeltsdiagram av en Dream-kjøring som produserer foreslåtte oppdateringer til Brain-sider.
Dream-agenter bruker den eksisterende Brain og ny informasjon til å foreslå og skrive oppdateringer.

Eventuelle endringer må bestå to typer verifiseringssjekker. Deterministiske valideringssjekker sikrer at sidene er velformede og oppfyller objektive kriterier, som obligatorisk frontmatter og siteringsformat. Semantiske verifiseringssjekker sikrer at en foreslått syntese støttes av de samlede bevisene og forblir konsistent med resten av grafen. Etter at agenten er ferdig med et vellykket resultat, sammenligner et kontrollert synkroniseringsstrinn det trinnvise utdataet mot den forrige tilstanden og bruker endringene på depotet. Når et synkroniseringstrinn fullføres, kan det endelige settet med redigeringer inspiseres gjennom Git-versjonshistorikk.

Validering av Brain

Et nyttig minnesystem må bevare relevante bevis, hente dem fram når det trengs, og hjelpe agenten med å omsette disse bevisene til et korrekt svar. Vi evaluerer derfor Brain på flere nivåer: kontrollerte offline-ablasjoner, kontinuerlig parvis avspilling og randomiserte produksjonseksperimenter.

Offline-evalueringer

Vår primære offline-evaluering bruker et intern datasett med 640 spørsmål fordelt på 44 syntetiske personaer. Personaene reproduserer produksjonsavledede mønstre i øktfrekvens, antall vendinger, emneblanding og fakttetthet, samtidig som de ikke inneholder noen produksjonsspørsmålstekst for å bevare personvernet til brukeren. Hver konto fylles ut gjennom produksjonsminnerørledningen, inkludert minneuttrekking, samtaleresyméer og Dreams kompilering av kunnskapswikien. For hvert spørsmål er det korrekte svaret mekanisk knyttet til spesifikke bevis som finnes i kontoens historikk.

For eksempel, for Nadia, den syntetiske personaen for tilgjengelighetsforsker som ble introdusert tidligere, inkluderer datasettet spørsmålet: "Hvilke organisasjoner møter jeg i Kyoto og Sendai?" Svaret (Sora City Lab i Kyoto og Sapphir Mobility Coop i Sendai) vises direkte på den tilsvarende Wiki-siden.

Vi sammenligner de samme spørsmålene og kontoene med den kompilerte kunnskapswikien aktivert versus deaktivert. Andre minneflater forblir tilgjengelige i begge tilstander. Dette isolerer det inkrementelle bidraget fra Brain, i stedet for å sammenligne minne mot intet minne. Totalt sett økte Brain svarriktigheten fra 0,600 til 0,661, en økning på 6,1 prosentpoeng, og bevisgjenkalling fra 0,573 til 0,625, en økning på 5,2 prosentpoeng. Effekten var størst for spørsmål om preferanser (+10,2 pp), tidsmessig resonnering (+8,6 pp) og uttrekking av detaljer fra tidligere aktivitet (+6,9 pp). På 84 % av spørsmålene berørte agenten verifiserbar en kilde knyttet til gullbeviset.

Stolpediagram som sammenligner svarriktighet og bevisgjenkalling med og uten Brain på tvers av spørsmålskategorier.
Brain forbedrer ytelsen på vår interne benchmark.

Vi kjørte også matchede Brain-ablasjoner på delmengder av to offentlige benchmarks. På LoCoMo reduserte fjerning av wikien svarriktigheten med 4,6 prosentpoeng i gjennomsnitt, over tre kjøringer med forskjellige modeller. På LongMemEval-S produserte det ingen statistisk signifikant endring. Dette resultatet er konsistent med Brains tiltenkte rolle. LongMemEval-S tester primært gjenoppretting av fakta fra individuelle økter, der de underliggende transkripsjonene gir en redundant bane til svaret. LoCoMo legger større vekt på bevis spredt over samtaler, foredragsholdere og datoer, noe som skaper mer mulighet for at wikiens tverr-øktsyntese kan bidra.

Totalt sett, med Brain aktivert, oppnådde produksjonsagenten 0,91 i svarriktighet på LongMemEval-S og 0,83 på LoCoMo. Fordi disse eksperimentene brukte benchmark-delmengder, er de ikke endelige benchmark-resultater. Likevel gir ablasjonene et sterkt signal om at wikien forbedrer ytelsen, spesielt når bevis må integreres på tvers av samtaler. Siden Brain er en del av Computer, i stedet for et optimalisert, benchmark-spesifikke hentesystem, tror vi at konkurransedyktigheten bare vil øke med oppgaver som ligner mer på produksjonsarbeidsflyter.

Online-evalueringer

Offline-datasett kan ikke fange opp alle funksjoner i ekte brukerhistorikker, så vi kjører også en daglig parvis evaluering over ferske produksjonsavledede kohorter. De samme faste spørsmålene besvares mot matchet brukertilstand med Brain aktivert og deaktivert, og bedømmes deretter for riktighet, aktualitet og gjenkalling.

Foreløpige resultater rapportert 18. juni demonstrerte at Brain øker svarriktigheten med 25 % og gjenkalling med 16 %. Disse ytelsesgevinstene har fortsatt å holde seg; over de siste 30 dagene presterte Brain-aktiverte økter bedre enn kontrollen ved hver kjøring og hver bedømt dimensjon. I absolutt forstand nøt Datamaskin-brukere godt av forbedringer på 9,3 poeng i riktighet, 8,0 poeng i aktuellhet og 8,9 poeng i gjenkalling. De Brain-aktiverte banene brukte også omtrent 15 % færre tokens, kostet 10 % mindre, og fullførte genereringen 10 % raskere.

Diagram over online parvis-evalueringsresultater som viser gevinster i riktighet, aktualitet og gjenkalling sammen med reduksjoner i token, kostnad og latens.
Brain øker svarkvaliteten og reduserer kostnadene.

Kontinuerlig forbedring

Vi har fortsetter å finpusse Brain for å gi brukerne den beste minneopplevelsen. En nylig endring plasserer Brains kompakte indeks direkte i agentens første kontekst i stedet for at agenten må oppdage og lese den senere. I et randomisert eksperiment økte denne forhåndsutfyllingsbehandlingen Brain-bruken og reduserte minnerelatert misnøye med 6,9 %.

Det offline evalueringsrammeverket fungerer også som en del av en autonom forbedringspipeline. Foreslåtte endringer i Brains minneunderagent, hentingsferdigheter og ledetekster kjøres gjennom de matchede ablasjonene på vårt interne datasett og offentlige benchmarks. Computer-agenter kan iterere over resultatene autonomt, og bevare hver itereringns endring, deltaer og kostnad som en holdbar post og beholde bare endringene som flytter tallene. Resultatet er et system der Brains evaluatorer også er dens optimerer, som driver framtidige forbedringer.

Konklusjon

Kontinuerlig læring er en av de definerende utfordringene for å bygge agentsystemer som fungerer over uker og måneder. Vi mener minnearkitekturer best eksponeres som miljøer som agenter direkte kan utforske ved hjelp av sine vanlige verktøysett. Å eksponere minne som et filsystem, med Brain som en strukturert kunnskapswiki på topp, gjør kontekst effektivt navigerbar gjennom enkle og kjente verktøy.

Brain er designet for selvforbedring, slik at minnesystemet kan fortsette å bli bedre i takt med at bruken vokser. Dream-bakgrunnsagentene destillerer ny informasjon inn i Brain-oppdateringer, noe som sikrer at forgrunnsagentene alltid starter en ny økt med en organisert visning av den nyeste konteksten. Evalueringsrammeverket fungerer også som en testarena for autoutforskningssløyfer på kjerneminnearkitekturen og agentrettede grensesnitt.

Allerede har Brain resultert i mer nøyaktige og ytelsessterke agentøkter samtidig som det reduserer bruken av tokens. Vår nøye samdesign av Brain med Computers produksjonsstak sørger for at disse gevinstene oversettes direkte til reelle fordeler for brukerne.

Vi fortsetter å bygge flere funksjoner for å forbedre kvaliteten på Computers minne. I mellomtiden vil minnet for brukere med Brain aktivert forbedres for hver økt.