Mestring af indtagelsesfasen af Retriever Augmented Generation

Mestring af indtagelsesfasen af Retriever Augmented Generation

Denne artikel er maskinoversat fra engelsk og kan indeholde unøjagtigheder. Læs mere
Se original

I Retriever Augmented Generations verden (LAS), er det første afgørende skridt Ingestion-fasen, hvor vi forbereder dataene til effektiv hentning og integration med sprogmodellen. Kernen i denne proces ligger kunsten at dele op – det at opdele prompter og dokumenter i mindre, håndterbare segmenter.

I. Chunking: Balancering af præcision og kontekst

Chunking er vigtigt i RAG, da hver chunk er kodet til en indlejringsvektor til hentning. Mindre, mere præcise bidder fører til et bedre match mellem brugerens forespørgsel og indholdet, hvilket forbedrer nøjagtigheden og relevansen af de hentede oplysninger.

Større bidder kan dog indeholde mere kontekstuelle oplysninger, hvilket forhindrer tab af semantiske nuancer. Nøglen er at finde den rette balance - bidder, der er små nok til at sikre relevans og reducere støj, men alligevel store nok til at bevare integriteten af indholdets kontekst.

II. Valg af den optimale klumpstørrelse

Så hvordan bestemmer du den ideelle klumpstørrelse til din brugssituation? Der er et par tilgange at overveje:

1. Chunking i fast størrelse: Beslut dig for antallet af tokens i hver chunk, og om der skal være overlap mellem dem. Overlappende bidder kan hjælpe med at minimere tabet af semantisk kontekst. Denne metode er beregningseffektiv og ligetil at implementere.

text = "..." #your specific text paragraph or document
from langchain.text_splitter import CharacterTextSplitter
text_splitter = CharacterTextSplitter(
    separator = "\n\n",
    chunk_size = 500,
    chunk_overlap  = 50
)
docs = text_splitter.create_documents([text])        

2. Kontekstbevidst Chunking: Udnyt tekstens iboende struktur til at skabe mere meningsfulde og kontekstuelt relevante bidder.

1. Opdeling af sætninger: Teknikker som sætningsopdeling, ved hjælp af værktøjer som NLTK eller spaCy, kan hjælpe med at identificere naturlige brudpunkter i indholdet. Denne metode er i overensstemmelse med modeller, der er optimeret til integrering af indhold på sætningsniveau.

en. Naiv splittelse: Sætninger opdeles ved hjælp af punktummer og nye linjer.

text = "..." #your specific text paragraph or document
docs = text.split(".")        

b. NLTK (Værktøjssæt til naturligt sprog): NLTK Python-biblioteket giver en sætningstokenizer, der effektivt opdeler tekst i sætninger.

text = "..." #your specific text paragraph or document
from langchain.text_splitter import NLTKTextSplitter
text_splitter = NLTKTextSplitter()
docs = text_splitter.split_text(text)        

c. spaCy Python-bibliotek: Pakke til effektiv sætningssegmentering og opdeling.

text = "..." #your specific text paragraph or document
from langchain.text_splitter import SpacyTextSplitter
text_splitter = SpacyTextSplitter()
docs = text_splitter.split_text(text)        

2. Rekursiv chunking: En iterativ metode, der opdeler teksten hierarkisk ved hjælp af forskellige separatorer, der tilpasser sig for at skabe bidder af samme størrelse eller struktur.

text = "..." #your specific text paragraph or document
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(
       chunk_size = 500,
       chunk_overlap = 50
   )
docs = text_splitter.create_documents([text])        

3. Specialiseret chunking: Til formateret indhold som Markdown eller LaTeX skal du anvende specialiserede teknikker, der bevarer den oprindelige logiske organisering af teksten.

en. Markdown Chunking: Genkender Markdown-syntaks og opdeler indhold baseret på struktur.

from langchain.text_splitter import MarkdownTextSplitter
markdown_text = "..."
markdown_splitter = MarkdownTextSplitter(chunk_size=500, chunk_overlap=0)
docs = markdown_splitter.create_documents([markdown_text])        

b. LaTeX Chunking: Bevarer den logiske organisering af indholdet, mens det segmenteres. Det vigtigste er, at det analyserer LaTeX-kommandoer og -miljøer.

from langchain.text_splitter import LatexTextSplitter
latex_text = "..."
latex_splitter = LatexTextSplitter(chunk_size=500, chunk_overlap=0)
docs = latex_splitter.create_documents([latex_text])        

Som en generel tommelfingerregel er den optimale chunk-størrelse en, hvor indholdet i hver chunk giver mening for en menneskelig læser, selv uden den omgivende kontekst. Dette sikrer, at sprogmodellen effektivt kan forstå og udnytte de oplysninger, der er indeholdt i hvert segment.

Ved at mestre kunsten at chunke lægger du grundlaget for en robust RAG-pipeline, hvor hentnings- og genereringskomponenterne kan arbejde i harmoni for at levere nøjagtige og kontekstuelt relevante svar.

III. Find ud af den bedste klumpstørrelse til din RAG-applikation

Når det kommer til indtagelsesfasen af Retriever Augmented Generation (LAS), er det et afgørende skridt at bestemme den optimale klumpstørrelse. Selvom de almindelige chunking-tilgange, som f.eks. fast størrelse eller kontekstbevidst chunking, kan være et godt udgangspunkt, er der et par yderligere overvejelser, du skal huske på for at finde den rigtige balance til din specifikke brugssituation.

Behandl dine data på forhånd: Før du dykker ned i valg af chunk-størrelse, er det vigtigt at sikre kvaliteten af dine data. Hvis indholdet f.eks. er hentet fra internettet, skal du muligvis fjerne HTML-tags eller andre elementer, der kan introducere støj.

Vælg et interval af segmentstørrelser: Når dine data er forbehandlet, er næste trin at vælge en række potentielle chunk-størrelser, der skal testes. Dette bør tage højde for arten af dit indhold (f.eks. korte beskeder eller lange dokumenter) og funktionerne i den integreringsmodel, du vil bruge (f.eks. tokengrænser). Målet er at finde en balance mellem at bevare konteksten og opretholde nøjagtigheden. Start med at udforske en række forskellige bidder, herunder mindre bidder (f.eks. 128 eller 256 poletter) til at hente mere detaljerede semantiske oplysninger og større bidder (f.eks. 512 eller 1024 tokens) for at bevare mere kontekst.

Evaluer ydeevnen for hver segmentstørrelse: For at teste de forskellige segmentstørrelser kan du enten bruge flere indekser eller et enkelt indeks med flere navneområder. Med et repræsentativt datasæt skal du oprette integreringerne for de segmentstørrelser, du vil teste, og gemme dem i dit indeks (eller indekser). Kør derefter en række forespørgsler, og evaluer kvaliteten af resultaterne for hver segmentstørrelse. Dette er sandsynligvis en iterativ proces, hvor du tester forskellige segmentstørrelser i forhold til forskellige forespørgsler, indtil du kan bestemme den bedst effektive segmentstørrelse for dit indhold og dine forventede forespørgsler.

Ved at følge denne tilgang kan du sikre, at den chunk-størrelse, du i sidste ende vælger, rammer den rette balance mellem at bevare konteksten og bevare nøjagtigheden og relevansen af de oplysninger, der hentes af dit RAG-system.

IV. Indlejringer: Indfangning af semantisk betydning

Når du har dine prompter og dokumenter delt korrekt, er næste trin at integrere dem i et format, der effektivt kan sammenlignes med hensyn til relevans. Denne proces er afgørende for RAG's evne til at hente de mest relevante oplysninger fra sin vidensbase som svar på en brugerforespørgsel.

Der er to hovedtilgange at overveje:

  1. Sparsomme indlejringer: Teknikker som TF-IDF er gode til leksikalsk matchning, hvilket gør dem velegnede til applikationer, hvor søgeordsrelevans er afgørende. De er beregningsmæssigt mindre intensive, men fanger muligvis ikke dybere semantiske betydninger.
  2. Semantiske indlejringer: Modeller som BERT og SentenceBERT er velegnede til RAG, da de kan fange de kontekstuelle nuancer i både dokumenter og forespørgsler. Især SentenceBERT rammer en balance mellem den dybe kontekstuelle forståelse af BERT og behovet for kortfattede, meningsfulde sætningsrepræsentationer, hvilket gør det til det foretrukne valg for RAG.

Sætningstransformere, en modifikation af BERT-modellen, er specielt designet til at generere indlejringer af hele sætninger. De udmærker sig ved opgaver, der er afhængige af semantisk forståelse på sætningsniveau, såsom semantisk søgning og sætningslighed.

V. Sætningstransformere vs. BERT: Optimering til forståelse på sætningsniveau

Mens BERT er en kraftfuld generel sprogmodel, er Sentence Transformers specielt designet til at udmærke sig ved opgaver, der kræver semantisk forståelse på sætningsniveau.

De vigtigste forskelle mellem de to modeller ligger i deres uddannelsesmål og tilgange:

Objektiv: BERT er trænet til at forudsige manglende ord i en sætning og forstå forholdet mellem sætninger. Sætningstransformere er på den anden side optimeret til at fange den overordnede betydning af hele sætninger, hvilket genererer indlejringer, hvor semantisk lignende sætninger er tæt på i vektorrummet.

Niveau af indlejring: BERT producerer indlejringer til individuelle tokens (ord eller underord), mens sætningstransformere udsender en enkelt indlejringsvektor, der repræsenterer hele sætningen.

Træningsdata og -opgaver: BERT er trænet i store tekstkorpus, med fokus på at forstå ord i kontekst. Sætningstransformere bruger ofte datasæt med sætningspar, der lærer modellen at sammenligne og forstå forholdet mellem sætninger.

Netværksstruktur: Sætningstransformere anvender almindeligvis siamesiske eller triplet-netværksarkitekturer, som direkte optimerer for sætningslighed, i modsætning til BERT's træning.

Finjustering: Sætningstransformere er typisk finjusteret på opgaver som semantisk lighed og informationssøgning, hvilket lægger vægt på forståelse på sætningsniveau. BERT kan på den anden side finjusteres til en bredere vifte af NLP-opgaver, herunder dem, der fokuserer på forståelse på token-niveau.

Anvendelighed: BERT udmærker sig ved opgaver på token-niveau som genkendelse af navngivne enheder og besvarelse af spørgsmål, mens Sentence Transformers er mere velegnede til applikationer på sætningsniveau såsom semantisk søgning og tekstlighed.

Effektivitet: Sætningstransformere er specifikt optimeret til at generere sætningsindlejringer af høj kvalitet, hvilket gør dem mere effektive til opgaver, der involverer beregninger på sætningsniveau, såsom lighedsscoring, sammenlignet med at bruge BERT.

Sammenfattende, mens BERT er en alsidig sprogmodel, er Sentence Transformers skræddersyet til applikationer, der kræver en dybere forståelse af den semantiske betydning af hele sætninger, hvilket gør dem til et foretrukket valg til Retriever Augmented Generation (LAS) og andre opgaver på sætningsniveau.

VI. Sætningstransformernes rolle i Retriever Augmented Generation (LAS)

Når det kommer til at drive hentningskomponenten i RAG, er Sentence Transformers dukket op som det foretrukne valg for deres uovertrufne evne til at forstå og sammenligne det semantiske indhold af sætninger. Integrationen af sætningstransformere i RAG er især fordelagtig i scenarier, hvor modellen skal hente relevant information, før den genererer et svar. Her er et nærmere kig på, hvordan Sentence Transformers forbedrer RAG-pipelinen:

Forbedret dokumenthentning

Sætningstransformere er trænet til at generere indlejringer, der fanger den dybe semantiske betydning af sætninger. I en RAG-indstilling kan disse indlejringer bruges til at matche en brugers forespørgsel med de mest relevante dokumenter eller passager i en database. Dette er et kritisk skridt, da kvaliteten af det genererede svar ofte afhænger af relevansen af de hentede oplysninger.

Effektiv semantisk søgning

Traditionelle søgeordsbaserede søgemetoder kan have svært ved at forstå konteksten eller nuancerne i en forespørgsel. Sætningstransformere giver på den anden side semantisk meningsfulde indlejringer, der muliggør mere nuancerede søgninger ud over simpel søgeordsmatchning. Dette gør det muligt for hentningskomponenten i RAG at finde dokumenter, der er semantisk relateret til forespørgslen, selvom de ikke indeholder de nøjagtige nøgleord.

Kontekstuel forståelse for bedre svar

Ved at udnytte sætningstransformere kan RAG-modellen bedre forstå konteksten og finesserne i både inputforespørgslen og indholdet af potentielle kildedokumenter. Dette fører til mere præcise og kontekstuelt passende svar, da produktionskomponenten har adgang til mere relevante og velforståede oplysninger.

Skalerbar informationssøgning

Sætningstransformere kan effektivt håndtere store databaser med dokumenter ved at forudberegne indlejringer for alt indholdet. Dette gør hentningsprocessen hurtigere og mere skalerbar, da modellen kun behøver at beregne integreringen for forespørgslen på kørselstidspunktet og derefter hurtigt finde de nærmeste dokumentintegreringer.

Forbedring af produktionsprocessen

I en RAG-opsætning drager genereringskomponenten stor fordel af hentningskomponentens evne til at levere relevant, semantisk rig information. Dette gør det muligt for sprogmodellen at generere svar, der ikke kun er kontekstuelt nøjagtige, men også informeret af en bredere vifte af viden, end hvad modellen selv er trænet på.

Konklusion

Afslutningsvis er indtagelsesfasen af RAG afgørende, da den lægger grundlaget for, at hentnings- og genereringskomponenterne kan fungere effektivt. Ved at mestre chunking- og indlejringsteknikker kan du sikre, at dit RAG-system har adgang til de mest relevante og semantisk rige oplysninger, hvilket fører til forbedret ydeevne i en lang række applikationer.

I den næste (fjerde) udgaven af vores nyhedsbrev, vil vi udforske Retrieval-fasen i detaljer og diskutere fordele og ulemper ved forskellige hentningsmetoder, fra standard leksikalsk matchning til mere avancerede semantiske hentningsmetoder. Du vil opdage, hvordan du udnytter ensembleteknikker og re-ranking-strategier til at optimere kvaliteten og relevansen af dit hentede indhold.

Til sidst, i den femte udgave, vil vi dykke ned i Response Synthesis-fasen, hvor magien ved RAG virkelig skinner. Du lærer, hvordan du problemfrit integrerer de hentede oplysninger med sprogmodellens egen viden for at generere sammenhængende, kontekstrige svar, der imødekommer dine brugeres behov med præcision og klarhed.

Ved at følge med i disse kommende nyhedsbreve får du en dyb forståelse af RAG-pipelinen og bliver udstyret med viden og værktøjer til at implementere disse banebrydende teknikker i dine egne projekter. Gå ikke glip af denne mulighed for at være på forkant med kurven og mestre kunsten at hente Augmented Generation.

Vi vil også udgive en parallel ny udgave af vores nyhedsbrev, der sigter mod populære LLM'er som Llama3, Grok1.5, Mistral-modeller. Den første udgave af den populære LLM-serie kommer også i denne uge. RAG-nyhedsbrevet vil fortsætte med at holde dig informeret i henhold til tidsplanen. Tilmeld dig vores nyhedsbrev, hvis du ikke har gjort det indtil videre!!

Styrk dit NLP og generative AI-fundament med min YouTube-afspilningsliste

Efterhånden som vi har udforsket forviklingerne ved Retrieval-Augmented Generation (LAS), er det klart, at en stærk forståelse af de underliggende NLP- og generative AI-koncepter er afgørende for fuldt ud at udnytte dens kraft.

For at hjælpe dig med at opbygge dette fundament inviterer vi dig til at abonnere på vores dedikerede YouTube-playliste. Denne kuraterede samling dækker en bred vifte af emner, fra det grundlæggende i naturlig sprogbehandling til de seneste fremskridt inden for generative AI-modeller.

Uanset om du er ny inden for disse områder eller ønsker at udvide din viden, vil denne afspilningsliste udstyre dig med de nødvendige færdigheder og indsigter til bedre at forstå og anvende RAG i dine egne projekter. Fra at udforske sprogmodeller til at mestre teknikker som tekstindlejring og hentning vil denne omfattende ressource tjene som en værdifuld ledsager på din rejse i en verden af AI-drevet tekstgenerering. (YouTube-afspilningsliste: https://www.youtube.com/@AccelererAICareere)

Kishore Donepudi

Empowering Leaders with Business AI & Intelligent Automation | Delivering ROI across CX, EX & Operations | GenAI & AI Agents | AI Transformation Partner | CEO, Pronix Inc.

Great overview of chunking and embedding techniques for RAG! How do you handle the trade-off between chunk size and computational efficiency?

Sanam Narula

Product @ Amazon | 🚀 Follow for insights to accelerate your Product Management Career

Thanks 🙏

Hvis du vil se eller tilføje en kommentar, skal du logge ind

Flere artikler fra Snigdha Kakkar

Andre kiggede også på