På trods af den tilsyneladende ustoppelige indførelse af LLM'er på tværs af industrier, er de en komponent i et bredere teknologiøkosystem, der driver den nye AI-bølge. Mange konversations-AI-brugssager kræver LLM'er som Llama 2, Flan T5 og Bloom for at svare på brugerforespørgsler. Disse modeller er afhængige af parametrisk viden til at besvare spørgsmål. Modellen lærer denne viden under træningen og koder den ind i modelparametrene. For at opdatere denne viden skal vi omskole LLM, hvilket tager meget tid og penge.
Heldigvis kan vi også bruge kildeviden til at informere vores LLM'er. Kildeviden er information, der føres ind i LLM gennem en inputprompt. En populær tilgang til at give kildeviden er Retrieval Augmented Generation (RAG). Ved hjælp af RAG henter vi relevant information fra en ekstern datakilde og fører disse oplysninger ind i LLM.
I dette blogindlæg vil vi undersøge, hvordan man implementerer LLM'er såsom Llama-2 ved hjælp af Amazon Sagemaker JumpStart og holder vores LLM'er opdateret med relevant information gennem Retrieval Augmented Generation (RAG) ved hjælp af Pinecone vektordatabasen for at forhindre AI Hallucination .
Retrieval Augmented Generation (RAG) i Amazon SageMaker
Pinecone vil håndtere genfindingskomponenten af RAG, men du har brug for to mere kritiske komponenter: et sted at køre LLM-inferensen og et sted at køre indlejringsmodellen.
Amazon SageMaker Studio er et integreret udviklingsmiljø (IDE), der giver en enkelt webbaseret visuel grænseflade, hvor du kan få adgang til specialbyggede værktøjer til at udføre al udvikling af maskinlæring (ML). Det giver SageMaker JumpStart, som er en modelhub, hvor brugere kan finde, forhåndsvise og starte en bestemt model på deres egen SageMaker-konto. Det giver forudtrænede, offentligt tilgængelige og proprietære modeller til en lang række problemtyper, herunder Foundation-modeller.
Amazon SageMaker Studio giver det ideelle miljø til udvikling af RAG-aktiverede LLM-pipelines. Først skal du bruge AWS-konsollen, gå til Amazon SageMaker og oprette et SageMaker Studio-domæne og åbne en Jupyter Studio-notesbog.
Forudsætninger
Udfør følgende forudsætningstrin:
- Konfigurer Amazon SageMaker Studio.
- Ombord på et Amazon SageMaker-domæne.
- Tilmeld dig en gratis Pinecone Vector Database.
- Forudsætningsbiblioteker: SageMaker Python SDK, Pinecone Client
Løsningsgennemgang
Ved at bruge SageMaker Studio notebook skal vi først installere forudsætningsbiblioteker:
Implementering af en LLM
I dette indlæg diskuterer vi to tilgange til implementering af en LLM. Den første er gennem HuggingFaceModel
objekt. Du kan bruge dette, når du implementerer LLM'er (og indlejring af modeller) direkte fra Hugging Face-modelhubben.
For eksempel kan du oprette en deployerbar konfiguration for google/flan-t5-xl model som vist i følgende skærmbillede:
Når du implementerer modeller direkte fra Hugging Face, skal du initialisere my_model_configuration
med følgende:
- An
env
config fortæller os, hvilken model vi vil bruge og til hvilken opgave. - Vores SageMaker udførelse
role
giver os tilladelse til at implementere vores model. - An
image_uri
er en billedkonfiguration specifikt til implementering af LLM'er fra Hugging Face.
Alternativt har SageMaker et sæt modeller, der er direkte kompatible med en enklere JumpStartModel
objekt. Mange populære LLM'er som Llama 2 understøttes af denne model, som kan initialiseres som vist i følgende skærmbillede:
For begge versioner af my_model
, implementer dem som vist i følgende skærmbillede:
Med vores initialiserede LLM-slutpunkt kan du begynde at forespørge. Formatet på vores forespørgsler kan variere (især mellem samtale- og ikke-samtale LLM'er), men processen er generelt den samme. For Hugging Face-modellen skal du gøre følgende:
Du kan finde løsningen i GitHub repository.
Det genererede svar, vi modtager her, giver ikke meget mening - det er en hallucination.
Giver yderligere kontekst til LLM
Llama 2 forsøger at besvare vores spørgsmål udelukkende baseret på intern parametrisk viden. Det er klart, at modelparametrene ikke gemmer viden om, hvilke instanser vi kan med managed spottræning i SageMaker.
For at svare rigtigt på dette spørgsmål skal vi bruge kildeviden. Det vil sige, at vi giver yderligere oplysninger til LLM via prompten. Lad os tilføje disse oplysninger direkte som ekstra kontekst for modellen.
Vi ser nu det rigtige svar på spørgsmålet; det var nemt! Det er dog usandsynligt, at en bruger indsætter kontekster i deres prompter, de ville allerede kende svaret på deres spørgsmål.
I stedet for manuelt at indsætte en enkelt kontekst, skal du automatisk identificere relevant information fra en mere omfattende database med information. Til det skal du bruge Retrieval Augmented Generation.
Retrieval Augmented Generation
Med Retrieval Augmented Generation kan du indkode en database med information til et vektorrum, hvor nærheden mellem vektorer repræsenterer deres relevans/semantiske lighed. Med dette vektorrum som vidensbase kan du konvertere en ny brugerforespørgsel, kode den til det samme vektorrum og hente de mest relevante poster, der tidligere er indekseret.
Når du har hentet disse relevante poster, skal du vælge nogle få af dem og inkludere dem i LLM-prompten som en ekstra kontekst, hvilket giver LLM'en yderst relevant kildeviden. Dette er en to-trins proces, hvor:
- Indeksering udfylder vektorindekset med information fra et datasæt.
- Hentning sker under en forespørgsel, og det er her, vi henter relevant information fra vektorindekset.
Begge trin kræver en indlejringsmodel for at oversætte vores menneskelæselige almindelige tekst til semantisk vektorrum. Brug den højeffektive MiniLM-sætningstransformer fra Hugging Face som vist i følgende skærmbillede. Denne model er ikke en LLM og er derfor ikke initialiseret på samme måde som vores Llama 2-model.
I hub_config
, angiv model-id'et som vist i skærmbilledet ovenfor, men til opgaven skal du bruge feature-extraction, fordi vi genererer vektorindlejringer, ikke tekst som vores LLM. Herefter initialiseres modelkonfigurationen med HuggingFaceModel
som før, men denne gang uden LLM-billedet og med nogle versionsparametre.
Du kan implementere modellen igen med deploy
, ved hjælp af den mindre (kun CPU) forekomst af ml.t2.large
. MiniLM-modellen er lillebitte, så den kræver ikke meget hukommelse og behøver ikke en GPU, fordi den hurtigt kan skabe indlejringer selv på en CPU. Hvis det foretrækkes, kan du køre modellen hurtigere på GPU.
For at oprette indlejringer skal du bruge predict
metode og videregive en liste over kontekster, der skal kodes via inputs
nøgle som vist:
To inputkontekster sendes, hvilket returnerer to kontekstvektorindlejringer som vist:
len(out)
2
Indlejringsdimensionaliteten af MiniLM-modellen er 384
hvilket betyder, at hver vektor, der integrerer MiniLM-output, skal have en dimensionalitet på 384
. Men ser du på længden af vores indlejringer, vil du se følgende:
len(out[0]), len(out[1])
(8, 8)
To lister indeholder hver otte punkter. MiniLM behandler først tekst i et tokeniseringstrin. Denne tokenisering transformerer vores menneskelæsbare almindelige tekst til en liste over modellæsbare token-id'er. I modellens outputfunktioner kan du se indlejringerne på token-niveau. en af disse indlejringer viser den forventede dimensionalitet af 384
som vist:
len(out[0][0])
384
Transformér disse indlejringer på tokenniveau til indlejringer på dokumentniveau ved at bruge middelværdierne på tværs af hver vektordimension, som vist i den følgende illustration.
Med to 384-dimensionelle vektorindlejringer, en for hver inputtekst. For at gøre vores liv lettere skal du pakke kodningsprocessen ind i en enkelt funktion som vist i følgende skærmbillede:
Download af datasættet
Download Amazon SageMaker ofte stillede spørgsmål som vidensbase for at få data, der indeholder både spørgsmål og svar kolonner.
Når du udfører søgningen, skal du kun kigge efter svar, så du kan droppe kolonnen Spørgsmål. Se notesbogen for detaljer.
Vores datasæt og indlejringspipeline er klar. Nu mangler vi bare et sted at opbevare de indlejringer.
Indeksering
Pinecone vektordatabasen gemmer vektorindlejringer og søger dem effektivt i skala. For at oprette en database skal du bruge en gratis API-nøgle fra Pinecone.
Når du har oprettet forbindelse til Pinecone vektordatabasen, skal du oprette et enkelt vektorindeks (svarende til en tabel i traditionelle DB'er). Navngiv indekset retrieval-augmentation-aws
og juster indekset dimension
, metric
parametre med dem, der kræves af indlejringsmodellen (MiniLM i dette tilfælde).
For at begynde at indsætte data skal du køre følgende:
Du kan begynde at forespørge i indekset med spørgsmålet fra tidligere i dette indlæg.
Ovenstående output viser, at vi returnerer relevante kontekster for at hjælpe os med at besvare vores spørgsmål. Siden vi top_k = 1
, index.query
returnerede det øverste resultat sammen med de metadata, der læser Managed Spot Training can be used with all instances supported in Amazon
.
Forøgelse af prompten
Brug de hentede kontekster til at forstærke prompten og beslutte en maksimal mængde kontekst, der skal tilføres LLM. Brug 1000
tegnbegrænsning til iterativt at tilføje hver returneret kontekst til prompten, indtil du overskrider indholdslængden.
Foder context_str
ind i LLM-prompten som vist i følgende skærmbillede:
[Input]: Hvilke instanser kan jeg bruge med Managed Spot Training i SageMaker? [Output]: Baseret på den angivne kontekst kan du bruge Managed Spot Training med alle forekomster understøttet i Amazon SageMaker. Derfor er svaret: Alle instanser understøttes i Amazon SageMaker.
Logikken virker, så pak den ind i en enkelt funktion for at holde tingene rene.
Du kan nu stille spørgsmål som dem, der er vist i følgende:
Ryd op
For at stoppe med at pådrage sig uønskede afgifter skal du slette modellen og slutpunktet.
Konklusion
I dette indlæg introducerede vi dig til RAG med LLM'er med åben adgang på SageMaker. Vi viste også, hvordan man implementerer Amazon SageMaker Jumpstart-modeller med Llama 2, Hugging Face LLM'er med Flan T5 og indlejring af modeller med MiniLM.
Vi implementerede en komplet end-to-end RAG-pipeline ved hjælp af vores open-access-modeller og et Pinecone-vektorindeks. Ved at bruge dette viste vi, hvordan man minimerer hallucinationer og holder LLM-viden opdateret og i sidste ende forbedrer brugeroplevelsen og tilliden til vores systemer.
For at køre dette eksempel på egen hånd skal du klone dette GitHub-lager og gennemgå de foregående trin ved hjælp af Spørgsmål besvare notesbog på GitHub.
Om forfatterne
Vedant Jain er Sr. AI/ML Specialist, der arbejder på strategiske Generative AI-initiativer. Inden han kom til AWS, har Vedant haft ML/Data Science Specialty-stillinger hos forskellige virksomheder såsom Databricks, Hortonworks (nu Cloudera) og JP Morgan Chase. Uden for sit arbejde brænder Vedant for at lave musik, klatring, bruge videnskab til at leve et meningsfuldt liv og udforske køkkener fra hele verden.
James Briggs er en Staff Developer Advocate hos Pinecone, med speciale i vektorsøgning og AI/ML. Han guider udviklere og virksomheder i at udvikle deres egne GenAI-løsninger gennem online undervisning. Før Pinecone arbejdede James på kunstig intelligens for små tech-startups til etablerede finansselskaber. Uden for arbejdet har James en passion for at rejse og omfavne nye eventyr, lige fra surfing og scuba til Muay Thai og BJJ.
Xin Huang er en Senior Applied Scientist for Amazon SageMaker JumpStart og Amazon SageMaker indbyggede algoritmer. Han fokuserer på at udvikle skalerbare maskinlæringsalgoritmer. Hans forskningsinteresser er inden for området naturlig sprogbehandling, forklarlig dyb læring på tabeldata og robust analyse af ikke-parametrisk rum-tid-klynger. Han har udgivet mange artikler i ACL, ICDM, KDD-konferencer og Royal Statistical Society: Series A.
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- PlatoData.Network Vertical Generative Ai. Styrk dig selv. Adgang her.
- PlatoAiStream. Web3 intelligens. Viden forstærket. Adgang her.
- PlatoESG. Kulstof, CleanTech, Energi, Miljø, Solenergi, Affaldshåndtering. Adgang her.
- PlatoHealth. Bioteknologiske og kliniske forsøgs intelligens. Adgang her.
- Kilde: https://aws.amazon.com/blogs/machine-learning/mitigate-hallucinations-through-retrieval-augmented-generation-using-pinecone-vector-database-llama-2-from-amazon-sagemaker-jumpstart/
- :har
- :er
- :ikke
- :hvor
- $OP
- 1
- 10
- 100
- 11
- 12
- 14
- 15 %
- 16
- 17
- 19
- 23
- 32
- 7
- 8
- 9
- a
- Om
- over
- adgang
- Ifølge
- Konto
- tværs
- tilføje
- Yderligere
- yderligere information
- Vedtagelse
- eventyr
- fortaler
- igen
- AI
- ai use cases
- AI / ML
- algoritmer
- tilpasse
- Alle
- sammen
- allerede
- også
- Amazon
- Amazon SageMaker
- Amazon SageMaker JumpStart
- Amazon SageMaker Studio
- Amazon Web Services
- beløb
- an
- analyse
- ,
- besvare
- svar
- enhver
- api
- app
- anvendt
- tilgang
- tilgange
- ER
- OMRÅDE
- omkring
- AS
- spørg
- At
- Forsøg på
- forøge
- augmented
- auto
- automatisk
- til rådighed
- AWS
- bund
- baseret
- BE
- fordi
- før
- begynde
- mellem
- Blog
- Bloom
- både
- bredere
- bygge
- indbygget
- virksomheder
- men
- by
- CAN
- fange
- tilfælde
- tilfælde
- tegn
- afgifter
- chase
- ren
- tydeligt
- Klatring
- Cloudera
- klyngedannelse
- Kolonne
- Kolonner
- Virksomheder
- kompatibel
- fuldføre
- komponent
- komponenter
- konferencer
- tilsluttet
- Konsol
- indeholder
- indeholder
- indhold
- sammenhæng
- sammenhænge
- konversation
- samtale AI
- konvertere
- Selskaber
- korrigere
- korrekt
- skabe
- kritisk
- For øjeblikket
- data
- Database
- Dato
- DBS
- beslutte
- dyb
- dyb læring
- indsætte
- implementering
- Udvikler
- udviklere
- udvikling
- Udvikling
- Dimension
- direkte
- diskutere
- do
- gør
- gør ikke
- Er ikke
- domæne
- Don
- Drop
- i løbet af
- hver
- tidligere
- lettere
- økosystem
- Uddannelse
- effektiv
- effektivt
- indlejring
- omfavne
- kodning
- ende
- ende til ende
- Endpoint
- forbedre
- Miljø
- etableret
- Endog
- eksempel
- overstige
- udførelse
- forventet
- erfaring
- udforske
- Udforskning
- omfattende
- ekstern
- ekstrakt
- Ansigtet
- hurtigere
- Funktionalitet
- Fed
- få
- finansiere
- Finde
- slut
- Fornavn
- Flyde
- fokuserer
- efter
- Til
- format
- Foundation
- Gratis
- fra
- funktion
- generelt
- genereret
- generere
- generation
- generative
- Generativ AI
- få
- GitHub
- Giv
- given
- giver
- Go
- Goes
- GPU
- Guides
- håndtere
- sker
- Have
- he
- Held
- hjælpe
- link.
- stærkt
- hans
- Hvordan
- How To
- Men
- HTTPS
- Huang
- Hub
- KrammerFace
- læsbar
- i
- ID
- ideal
- identificere
- id'er
- if
- billede
- implementeret
- importere
- in
- omfatter
- Herunder
- Forøg
- indeks
- indekseret
- industrier
- informere
- oplysninger
- initiativer
- indgang
- indgange
- installere
- instans
- integreret
- interesser
- grænseflade
- interne
- ind
- introduceret
- IT
- Varer
- james
- sammenføjning
- jp
- JP Morgan
- JP Morgan Chase
- jpg
- Holde
- Nøgle
- Kend
- viden
- Sprog
- stor
- større
- lancere
- føre
- læring
- lærer
- Længde
- biblioteker
- Livet
- ligesom
- GRÆNSE
- Liste
- Lister
- Lives
- Llama
- LLM
- logik
- Se
- leder
- Lot
- maskine
- machine learning
- lave
- Making
- lykkedes
- manuelt
- mange
- Match
- tændstikker
- maksimal
- maksimumsbeløb
- Kan..
- betyde
- meningsfuld
- midler
- Hukommelse
- Metadata
- metode
- afbøde
- ML
- model
- modeller
- penge
- mere
- Morgan
- mest
- meget
- flere
- Musik
- skal
- navn
- Natural
- Natural Language Processing
- Behov
- behov
- Ny
- næste
- NLP
- notesbog
- nu
- bedøvet
- objekt
- of
- on
- ONE
- online
- kun
- åbent
- drift
- or
- ordrer
- OS
- Ellers
- vores
- ud
- output
- udgange
- uden for
- egen
- papirer
- parametre
- særlig
- især
- passerer
- Bestået
- lidenskab
- lidenskabelige
- Udfør
- udfører
- Tilladelser
- billede
- pipeline
- Almindeligt
- plato
- Platon Data Intelligence
- PlatoData
- Populær
- positioner
- Indlæg
- strømforsyning
- forudsigelse
- Forudsigelser
- Predictor
- foretrækkes
- forhindre
- Eksempel
- tidligere
- tidligere
- Forud
- Problem
- behandle
- Processer
- forarbejdning
- Profil
- prompter
- proprietære
- forudsat
- giver
- leverer
- offentligt
- offentliggjort
- Python
- pytorch
- forespørgsler
- spørgsmål
- Spørgsmål
- hurtigt
- rækkevidde
- spænder
- klar
- modtagende
- optegnelser
- regioner
- relevant
- stole
- Repository
- repræsenterer
- kræver
- påkrævet
- forskning
- Svar
- resultere
- Resultater
- afkast
- vender tilbage
- robust
- klippe
- roller
- Royal
- Kør
- løber
- sagemaker
- samme
- siger
- skalerbar
- Scale
- Videnskab
- Videnskabsmand
- score
- Skærm
- SDK
- Søg
- søgninger
- se
- tilsyneladende
- Vælg
- senior
- forstand
- dømme
- Series
- Serie A
- Tjenester
- sæt
- bør
- Vis
- viste
- vist
- Shows
- side
- lignende
- enklere
- siden
- enkelt
- Størrelse
- lille
- mindre
- So
- Samfund
- Alene
- løsninger
- Løsninger
- nogle
- et eller andet sted
- Kilde
- Space
- specialist
- speciale
- Specialty
- specifikt
- Spot
- Personale
- Nystartede
- statistiske
- Trin
- Steps
- Stands
- butik
- forhandler
- Strategisk
- String
- Studio
- sådan
- support
- Understøttet
- Understøtter
- systemet
- Systemer
- bord
- tager
- Opgaver
- tech
- tech startups
- Teknologier
- fortæller
- tekst
- thai
- end
- at
- Området
- verdenen
- deres
- Them
- derfor
- Disse
- de
- ting
- denne
- dem
- Gennem
- tid
- til
- token
- tokenization
- også
- værktøjer
- top
- traditionelle
- Kurser
- transformer
- transformers
- transformationer
- Oversætte
- Traveling
- Stol
- to
- typer
- Ultimativt
- usandsynligt
- ustoppelig.
- indtil
- uønsket
- Opdatering
- us
- brug
- anvendte
- Bruger
- Brugererfaring
- brugere
- ved brug af
- Værdier
- forskellige
- udgave
- versioner
- via
- visuel
- vente
- går igennem
- ønsker
- var
- Wave
- Vej..
- we
- web
- webservices
- web-baseret
- Hvad
- hvornår
- som
- mens
- bred
- Bred rækkevidde
- vilje
- med
- uden
- Arbejde
- arbejdede
- arbejder
- virker
- world
- ville
- wrap
- X
- Ja
- Du
- Din
- zephyrnet