Generativ dataintelligens

Avancerade RAG-mönster på Amazon SageMaker | Amazon webbtjänster

Datum:

Idag använder kunder från alla branscher – oavsett om det är finansiella tjänster, hälsovård och biovetenskap, resor och gästfrihet, media och underhållning, telekommunikation, programvara som en tjänst (SaaS) och till och med proprietära modellleverantörer – stora språkmodeller (LLM) för att bygga applikationer som fråge och svar (QnA) chatbots, sökmotorer och kunskapsbaser. Dessa generativ AI applikationer används inte bara för att automatisera befintliga affärsprocesser, utan har också förmågan att förvandla upplevelsen för kunder som använder dessa applikationer. Med de framsteg som görs med LLMs som Mixtral-8x7B Instruktion, derivat av arkitekturer såsom blandning av experter (MoE), letar kunder ständigt efter sätt att förbättra prestandan och noggrannheten hos generativa AI-applikationer samtidigt som de tillåter dem att effektivt använda ett bredare utbud av modeller med stängd och öppen källkod.

Ett antal tekniker används vanligtvis för att förbättra noggrannheten och prestandan för en LLM:s utdata, såsom finjustering med parameter effektiv finjustering (PEFT), förstärkningsinlärning från mänsklig feedback (RLHF), och uppträder kunskapsdestillation. Men när du bygger generativa AI-applikationer kan du använda en alternativ lösning som möjliggör dynamisk inkorporering av extern kunskap och låter dig kontrollera informationen som används för generering utan att behöva finjustera din befintliga grundmodell. Det är här Retrieval Augmented Generation (RAG) kommer in, specifikt för generativa AI-applikationer i motsats till de dyrare och robustare finjusteringsalternativen vi har diskuterat. Om du implementerar komplexa RAG-applikationer i dina dagliga uppgifter kan du stöta på vanliga utmaningar med dina RAG-system som felaktig hämtning, ökande storlek och komplexitet på dokument och översvämning av sammanhang, vilket avsevärt kan påverka kvaliteten och tillförlitligheten hos genererade svar .

Det här inlägget diskuterar RAG-mönster för att förbättra svarsnoggrannheten med hjälp av LangChain och verktyg som den överordnade dokumenthämtaren utöver tekniker som kontextuell komprimering för att göra det möjligt för utvecklare att förbättra befintliga generativa AI-applikationer.

Lösningsöversikt

I det här inlägget demonstrerar vi användningen av Mixtral-8x7B Instruct-textgenerering kombinerat med BGE Large En-inbäddningsmodellen för att effektivt konstruera ett RAG QnA-system på en Amazon SageMaker-anteckningsbok med hjälp av det överordnade dokumentåterställningsverktyget och kontextuell komprimeringsteknik. Följande diagram illustrerar arkitekturen för denna lösning.

Du kan distribuera den här lösningen med bara några få klick med hjälp av Amazon SageMaker JumpStart, en helt hanterad plattform som erbjuder toppmoderna grundmodeller för olika användningsfall som innehållsskrivning, kodgenerering, frågesvar, copywriting, sammanfattning, klassificering och informationssökning. Den tillhandahåller en samling förutbildade modeller som du kan distribuera snabbt och med lätthet, vilket påskyndar utvecklingen och driftsättningen av applikationer för maskininlärning (ML). En av nyckelkomponenterna i SageMaker JumpStart är Model Hub, som erbjuder en stor katalog av förtränade modeller, som Mixtral-8x7B, för en mängd olika uppgifter.

Mixtral-8x7B använder en MoE-arkitektur. Denna arkitektur tillåter olika delar av ett neuralt nätverk att specialisera sig på olika uppgifter, vilket effektivt delar upp arbetsbördan mellan flera experter. Detta tillvägagångssätt möjliggör effektiv utbildning och distribution av större modeller jämfört med traditionella arkitekturer.

En av de främsta fördelarna med MoE-arkitekturen är dess skalbarhet. Genom att fördela arbetsbördan mellan flera experter kan MoE-modeller tränas på större datamängder och uppnå bättre prestanda än traditionella modeller av samma storlek. Dessutom kan MoE-modeller vara mer effektiva under slutledning eftersom endast en undergrupp av experter behöver aktiveras för en given ingång.

För mer information om Mixtral-8x7B Instruct på AWS, se Mixtral-8x7B är nu tillgänglig i Amazon SageMaker JumpStart. Mixtral-8x7B-modellen görs tillgänglig under den tillåtande Apache 2.0-licensen, för användning utan begränsningar.

I det här inlägget diskuterar vi hur du kan använda Langkedja att skapa effektiva och effektivare RAG-applikationer. LangChain är ett Python-bibliotek med öppen källkod designat för att bygga applikationer med LLM. Det tillhandahåller ett modulärt och flexibelt ramverk för att kombinera LLM med andra komponenter, såsom kunskapsbaser, hämtningssystem och andra AI-verktyg, för att skapa kraftfulla och anpassningsbara applikationer.

Vi går igenom att bygga en RAG-pipeline på SageMaker med Mixtral-8x7B. Vi använder Mixtral-8x7B Instruct-textgenereringsmodellen med BGE Large En-inbäddningsmodellen för att skapa ett effektivt QnA-system med RAG på en SageMaker-anteckningsbok. Vi använder en ml.t3.medium-instans för att demonstrera implementering av LLM:er via SageMaker JumpStart, som kan nås via en SageMaker-genererad API-slutpunkt. Denna inställning möjliggör utforskning, experimentering och optimering av avancerade RAG-tekniker med LangChain. Vi illustrerar också integreringen av FAISS Embedding-butiken i RAG-arbetsflödet, och lyfter fram dess roll i att lagra och hämta inbäddningar för att förbättra systemets prestanda.

Vi utför en kort genomgång av SageMaker-anteckningsboken. För mer detaljerade och steg-för-steg-instruktioner, se Avancerade RAG-mönster med Mixtral på SageMaker Jumpstart GitHub-repo.

Behovet av avancerade RAG-mönster

Avancerade RAG-mönster är viktiga för att förbättra LLM:ers nuvarande kapacitet när det gäller att bearbeta, förstå och generera människoliknande text. När dokumentens storlek och komplexitet ökar, kan representation av flera aspekter av dokumentet i en enda inbäddning leda till en förlust av specificitet. Även om det är viktigt att fånga den allmänna essensen av ett dokument, är det lika viktigt att känna igen och representera de olika underkontexterna inom. Detta är en utmaning man ofta ställs inför när man arbetar med större dokument. En annan utmaning med RAG är att med hämtning är du inte medveten om de specifika frågor som ditt dokumentlagringssystem kommer att hantera vid intag. Detta kan leda till att information som är mest relevant för en fråga begravs under text (kontextspill). För att mildra misslyckanden och förbättra den befintliga RAG-arkitekturen kan du använda avancerade RAG-mönster (överordnad dokumenthämtning och kontextuell komprimering) för att minska hämtningsfel, förbättra svarskvaliteten och möjliggöra komplex frågehantering.

Med de tekniker som diskuteras i det här inlägget kan du ta itu med viktiga utmaningar i samband med extern kunskapsinhämtning och integration, vilket gör att din applikation kan leverera mer exakta och kontextmedvetna svar.

I de följande avsnitten utforskar vi hur överordnade dokumenthämtare och kontextuell komprimering kan hjälpa dig att hantera några av de problem vi har diskuterat.

Förälder dokument retriever

I föregående avsnitt lyfte vi fram utmaningar som RAG-ansökningar möter när de hanterar omfattande dokument. För att möta dessa utmaningar, överordnade dokumenthämtare kategorisera och beteckna inkommande dokument som överordnade dokument. Dessa dokument är erkända för sin omfattande karaktär men används inte direkt i sin ursprungliga form för inbäddningar. Istället för att komprimera ett helt dokument till en enda inbäddning, dissekerar överordnade dokumenthämtare dessa överordnade dokument till barnhandlingar. Varje underordnat dokument fångar olika aspekter eller ämnen från det bredare överordnade dokumentet. Efter identifieringen av dessa underordnade segment tilldelas individuella inbäddningar till var och en, som fångar deras specifika tematiska väsen (se följande diagram). Under hämtning åberopas det överordnade dokumentet. Denna teknik ger riktade men breda sökmöjligheter, vilket ger LLM ett bredare perspektiv. Överordnade dokumenthämtare ger LLM:er en tvåfaldig fördel: specificiteten hos underordnade dokumentinbäddningar för exakt och relevant informationshämtning, tillsammans med anropet av överordnade dokument för svarsgenerering, vilket berikar LLM:s utdata med ett skiktat och grundligt sammanhang.

Kontextuell komprimering

För att ta itu med frågan om kontextspill som diskuterats tidigare kan du använda kontextuell komprimering för att komprimera och filtrera de hämtade dokumenten i linje med frågans sammanhang, så att endast relevant information bevaras och bearbetas. Detta uppnås genom en kombination av en basåterhämtning för initial dokumenthämtning och en dokumentkompressor för att förfina dessa dokument genom att minska deras innehåll eller utesluta dem helt baserat på relevans, som illustreras i följande diagram. Detta strömlinjeformade tillvägagångssätt, som underlättas av den kontextuella komprimeringsretrievern, förbättrar RAG-applikationens effektivitet avsevärt genom att tillhandahålla en metod för att extrahera och använda endast det som är väsentligt från en mängd information. Den tar itu med frågan om överbelastning av information och irrelevant databehandling direkt, vilket leder till förbättrad svarskvalitet, mer kostnadseffektiva LLM-operationer och en smidigare övergripande återhämtningsprocess. I grund och botten är det ett filter som skräddarsyr informationen till den aktuella frågan, vilket gör det till ett välbehövligt verktyg för utvecklare som strävar efter att optimera sina RAG-applikationer för bättre prestanda och användarnöjdhet.

Förutsättningar

Om du är ny på SageMaker, se Amazon SageMaker utvecklingsguide.

Innan du börjar med lösningen, skapa ett AWS-konto. När du skapar ett AWS-konto får du en enkel inloggningsidentitet (SSO) som har fullständig åtkomst till alla AWS-tjänster och resurser på kontot. Denna identitet kallas AWS-kontot root-användare.

Loggar in på AWS Management Console att använda e-postadressen och lösenordet som du använde för att skapa kontot ger dig fullständig tillgång till alla AWS-resurser på ditt konto. Vi rekommenderar starkt att du inte använder root-användaren för vardagliga uppgifter, inte ens de administrativa.

Håll dig istället till bästa praxis för säkerhet in AWS identitets- och åtkomsthantering (IAM), och skapa en administrativ användare och grupp. Lås sedan rotanvändaruppgifterna säkert och använd dem för att utföra endast ett fåtal konto- och tjänsthanteringsuppgifter.

Mixtral-8x7b-modellen kräver en ml.g5.48xlarge-instans. SageMaker JumpStart ger ett förenklat sätt att komma åt och distribuera över 100 olika grundmodeller med öppen källkod och tredjepartsföretag. För att starta en slutpunkt för att vara värd för Mixtral-8x7B från SageMaker JumpStart, kan du behöva begära en höjning av tjänstekvoten för att få tillgång till en ml.g5.48xlarge-instans för endpoint-användning. Du kan begära höjningar av tjänstekvoten genom konsolen, AWS-kommandoradsgränssnitt (AWS CLI), eller API för att tillåta åtkomst till dessa ytterligare resurser.

Konfigurera en SageMaker notebook-instans och installera beroenden

För att komma igång, skapa en SageMaker anteckningsbok-instans och installera de nödvändiga beroenden. Referera till GitHub repo för att säkerställa en framgångsrik installation. När du har konfigurerat notebook-instansen kan du distribuera modellen.

Du kan också köra notebook-datorn lokalt i din föredragna integrerade utvecklingsmiljö (IDE). Se till att du har Jupyter notebook lab installerat.

Distribuera modellen

Distribuera Mixtral-8X7B Instruct LLM-modellen på SageMaker JumpStart:

# Import the JumpStartModel class from the SageMaker JumpStart library
from sagemaker.jumpstart.model import JumpStartModel

# Specify the model ID for the HuggingFace Mixtral 8x7b Instruct LLM model
model_id = "huggingface-llm-mixtral-8x7b-instruct"
model = JumpStartModel(model_id=model_id)
llm_predictor = model.deploy()

Distribuera BGE Large En inbäddningsmodellen på SageMaker JumpStart:

# Specify the model ID for the HuggingFace BGE Large EN Embedding model
model_id = "huggingface-sentencesimilarity-bge-large-en"
text_embedding_model = JumpStartModel(model_id=model_id)
embedding_predictor = text_embedding_model.deploy()

Konfigurera LangChain

Efter att ha importerat alla nödvändiga bibliotek och distribuerat Mixtral-8x7B-modellen och BGE Large En-inbäddningsmodellen, kan du nu ställa in LangChain. För steg-för-steg-instruktioner, se GitHub repo.

Dataförberedelse

I det här inlägget använder vi flera år av Amazons brev till aktieägare som en textkorpus att utföra QnA på. För mer detaljerade steg för att förbereda data, se GitHub repo.

Frågesvar

När data är förberedda kan du använda omslaget som tillhandahålls av LangChain, som sveper runt vektorlagret och tar indata för LLM. Denna omslag utför följande steg:

  1. Ta ingångsfrågan.
  2. Skapa en frågainbäddning.
  3. Hämta relevanta dokument.
  4. Inkludera dokumenten och frågan i en uppmaning.
  5. Anropa modellen med prompten och generera svaret på ett läsbart sätt.

Nu när vektorbutiken är på plats kan du börja ställa frågor:

prompt_template = """<s>[INST]
{query}
[INST]"""
PROMPT = PromptTemplate(
    template=prompt_template, input_variables=["query"]
)
query = "How has AWS evolved?"
answer = wrapper_store_faiss.query(question=PROMPT.format(query=query), llm=llm)
print(answer)
AWS, or Amazon Web Services, has evolved significantly since its initial launch in 2006. It started as a feature-poor service, offering only one instance size, in one data center, in one region of the world, with Linux operating system instances only. There was no monitoring, load balancing, auto-scaling, or persistent storage at the time. However, AWS had a successful launch and has since grown into a multi-billion-dollar service.

Over the years, AWS has added numerous features and services, with over 3,300 new ones launched in 2022 alone. They have expanded their offerings to include Windows, monitoring, load balancing, auto-scaling, and persistent storage. AWS has also made significant investments in long-term inventions that have changed what's possible in technology infrastructure.

One example of this is their investment in chip development. AWS has also seen a robust new customer pipeline and active migrations, with many companies opting to move to AWS for the agility, innovation, cost-efficiency, and security benefits it offers. AWS has transformed how customers, from start-ups to multinational companies to public sector organizations, manage their technology infrastructure.

Vanlig retrieverkedja

I det föregående scenariot utforskade vi det snabba och enkla sättet att få ett sammanhangsmedvetet svar på din fråga. Låt oss nu titta på ett mer anpassningsbart alternativ med hjälp av RetrievalQA, där du kan anpassa hur de hämtade dokumenten ska läggas till i prompten med hjälp av parametern chain_type. För att kontrollera hur många relevanta dokument som ska hämtas kan du också ändra k-parametern i följande kod för att se olika utdata. I många scenarier kanske du vill veta vilka källdokument som LLM använde för att generera svaret. Du kan få dessa dokument i utdata med return_source_documents, som returnerar de dokument som läggs till i LLM-promptens sammanhang. RetrievalQA låter dig också tillhandahålla en anpassad promptmall som kan vara specifik för modellen.

from langchain.chains import RetrievalQA

prompt_template = """<s>[INST]
Use the following pieces of context to provide a concise answer to the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.

{context}

Question: {question}

[INST]"""
PROMPT = PromptTemplate(
    template=prompt_template, input_variables=["context", "question"]
)

qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=vectorstore_faiss.as_retriever(
        search_type="similarity", search_kwargs={"k": 3}
    ),
    return_source_documents=True,
    chain_type_kwargs={"prompt": PROMPT}
)

Låt oss ställa en fråga:

query = "How did AWS evolve?"
result = qa({"query": query})
print(result['result'])
AWS (Amazon Web Services) evolved from an initially unprofitable investment to an $85B annual revenue run rate business with strong profitability, offering a wide range of services and features, and becoming a significant part of Amazon's portfolio. Despite facing skepticism and short-term headwinds, AWS continued to innovate, attract new customers, and migrate active customers, offering benefits such as agility, innovation, cost-efficiency, and security. AWS also expanded its long-term investments, including chip development, to provide new capabilities and change what's possible for its customers.

Överordnad dokumentretrieverkedja

Låt oss titta på ett mer avancerat RAG-alternativ med hjälp av ParentDocumentRetriever. När du arbetar med dokumenthämtning kan du stöta på en avvägning mellan att lagra små bitar av ett dokument för korrekta inbäddningar och större dokument för att bevara mer sammanhang. Den överordnade dokumenthämtaren uppnår den balansen genom att dela upp och lagra små bitar av data.

Vi använder en parent_splitter att dela upp originaldokumenten i större bitar som kallas överordnade dokument och en child_splitter för att skapa mindre underordnade dokument från originaldokumenten:

# This text splitter is used to create the parent documents
parent_splitter = RecursiveCharacterTextSplitter(chunk_size=2000)

# This text splitter is used to create the child documents
# It should create documents smaller than the parent
child_splitter = RecursiveCharacterTextSplitter(chunk_size=400)

# The vectorstore to use to index the child chunks
vectorstore_faiss = FAISS.from_documents(
    child_splitter.split_documents(documents),
    sagemaker_embeddings,
)

De underordnade dokumenten indexeras sedan i ett vektorlager med hjälp av inbäddningar. Detta möjliggör effektiv hämtning av relevanta underordnade dokument baserat på likhet. För att hämta relevant information hämtar den överordnade dokumenthämtaren först de underordnade dokumenten från vektorlagret. Den söker sedan upp föräldra-ID:n för dessa underordnade dokument och returnerar motsvarande större överordnade dokument.

qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=retriever,
    return_source_documents=True,
    chain_type_kwargs={"prompt": PROMPT}
)

Låt oss ställa en fråga:

query = "How did AWS evolve?"
result = qa({"query": query})
print(result['result'])
AWS (Amazon Web Services) started with a feature-poor initial launch of the Elastic Compute Cloud (EC2) service in 2006, providing only one instance size, in one data center, in one region of the world, with Linux operating system instances only, and without many key features like monitoring, load balancing, auto-scaling, or persistent storage. However, AWS's success allowed them to quickly iterate and add the missing capabilities, eventually expanding to offer various flavors, sizes, and optimizations of compute, storage, and networking, as well as developing their own chips (Graviton) to push price and performance further. AWS's iterative innovation process required significant investments in financial and people resources over 20 years, often well in advance of when it would pay out, to meet customer needs and improve long-term customer experiences, loyalty, and returns for shareholders.

Kontextuell kompressionskedja

Låt oss titta på ett annat avancerat RAG-alternativ som heter kontextuell komprimering. En utmaning med hämtning är att vi vanligtvis inte vet vilka specifika frågor ditt dokumentlagringssystem kommer att möta när du matar in data i systemet. Det betyder att den information som är mest relevant för en fråga kan vara begravd i ett dokument med mycket irrelevant text. Att skicka hela dokumentet genom din ansökan kan leda till dyrare LLM-samtal och sämre svar.

Den kontextuella komprimeringsåtervinningen tar itu med utmaningen att hämta relevant information från ett dokumentlagringssystem, där relevant data kan begravas i dokument som innehåller mycket text. Genom att komprimera och filtrera de hämtade dokumenten baserat på det givna frågekontexten returneras endast den mest relevanta informationen.

För att använda den kontextuella komprimeringsåterställningen behöver du:

  • En bas retriever – Detta är den initiala retriever som hämtar dokument från lagringssystemet baserat på frågan
  • En dokumentkompressor – Den här komponenten tar de ursprungligen hämtade dokumenten och förkortar dem genom att minska innehållet i enskilda dokument eller ta bort irrelevanta dokument helt och hållet, med hjälp av frågekontexten för att bestämma relevans

Lägga till kontextuell komprimering med en LLM-kedjeextraktor

Slå först in din basretriever med en ContextualCompressionRetriever. Du lägger till en LLMChainExtractor, som upprepar de ursprungligen returnerade dokumenten och extraherar endast det innehåll som är relevant för frågan från varje.

from langchain.retrievers import ContextualCompressionRetrieverfrom langchain.retrievers.document_compressors import LLMChainExtractor

text_splitter = RecursiveCharacterTextSplitter(
    # Set a really small chunk size, just to show.
    chunk_size=1000,
    chunk_overlap=100,
)

docs = text_splitter.split_documents(documents)
retriever = FAISS.from_documents(
    docs,
    sagemaker_embeddings,
).as_retriever()

compressor = LLMChainExtractor.from_llm(llm)
compression_retriever = ContextualCompressionRetriever(
    base_compressor=compressor, base_retriever=retriever
)

compressed_docs = compression_retriever.get_relevant_documents(
    "How was Amazon impacted by COVID-19?"
)

Initiera kedjan med hjälp av ContextualCompressionRetriever med en LLMChainExtractor och skicka in prompten via chain_type_kwargs argument.

qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=compression_retriever,
    return_source_documents=True,
    chain_type_kwargs={"prompt": PROMPT}
)

Låt oss ställa en fråga:

query = "How did AWS evolve?"
result = qa({"query": query})
print(result['result'])
AWS evolved by starting as a small project inside Amazon, requiring significant capital investment and facing skepticism from both inside and outside the company. However, AWS had a head start on potential competitors and believed in the value it could bring to customers and Amazon. AWS made a long-term commitment to continue investing, resulting in over 3,300 new features and services launched in 2022. AWS has transformed how customers manage their technology infrastructure and has become an $85B annual revenue run rate business with strong profitability. AWS has also continuously improved its offerings, such as enhancing EC2 with additional features and services after its initial launch.

Filtrera dokument med ett LLM-kedjefilter

Smakämnen LLMChainFilter är en något enklare men mer robust kompressor som använder en LLM-kedja för att bestämma vilka av de ursprungligen hämtade dokumenten som ska filtreras bort och vilka som ska returneras, utan att manipulera dokumentinnehållet:

from langchain.retrievers.document_compressors import LLMChainFilter

_filter = LLMChainFilter.from_llm(llm)
compression_retriever = ContextualCompressionRetriever(
    base_compressor=_filter, base_retriever=retriever
)

compressed_docs = compression_retriever.get_relevant_documents(
    "How was Amazon impacted by COVID-19?"
)
print(compressed_docs)

Initiera kedjan med hjälp av ContextualCompressionRetriever med en LLMChainFilter och skicka in prompten via chain_type_kwargs argument.

qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=compression_retriever,
    return_source_documents=True,
    chain_type_kwargs={"prompt": PROMPT}
)

Låt oss ställa en fråga:

query = "How did AWS evolve?"
result = qa({"query": query})
print(result['result'])
AWS (Amazon Web Services) evolved by initially launching feature-poor but iterating quickly based on customer feedback to add necessary capabilities. This approach allowed AWS to launch EC2 in 2006 with limited features and then continuously add new functionalities, such as additional instance sizes, data centers, regions, operating system options, monitoring tools, load balancing, auto-scaling, and persistent storage. Over time, AWS transformed from a feature-poor service to a multi-billion-dollar business by focusing on customer needs, agility, innovation, cost-efficiency, and security. AWS now has an $85B annual revenue run rate and offers over 3,300 new features and services each year, catering to a wide range of customers from start-ups to multinational companies and public sector organizations.

Jämför resultat

Följande tabell jämför resultat från olika frågor baserat på teknik.

Teknik Fråga 1 Fråga 2 Jämförelse
Hur utvecklades AWS? Varför är Amazon framgångsrika?
Vanlig Retriever Chain Output AWS (Amazon Web Services) utvecklades från en initialt olönsam investering till en 85 mb Trots skepsis och kortsiktig motvind fortsatte AWS att förnya, attrahera nya kunder och migrera aktiva kunder, vilket erbjuder fördelar som smidighet, innovation, kostnadseffektivitet och säkerhet. AWS utökade också sina långsiktiga investeringar, inklusive utveckling av chip, för att ge nya möjligheter och förändra vad som är möjligt för sina kunder. Amazon är framgångsrika tack vare sin ständiga innovation och expansion till nya områden som tekniska infrastrukturtjänster, digitala läsenheter, röststyrda personliga assistenter och nya affärsmodeller som tredjepartsmarknaden. Dess förmåga att skala verksamheten snabbt, vilket framgår av den snabba expansionen av dess leverans- och transportnätverk, bidrar också till dess framgång. Dessutom har Amazons fokus på optimering och effektivitetsvinster i sina processer resulterat i produktivitetsförbättringar och kostnadsminskningar. Exemplet med Amazon Business belyser företagets förmåga att dra nytta av sina styrkor inom e-handel och logistik inom olika sektorer. Baserat på svaren från den vanliga retrieverkedjan märker vi att även om den ger långa svar, lider den av kontextspill och misslyckas med att nämna några betydande detaljer från korpusen när det gäller att svara på den angivna frågan. Den vanliga hämtningskedjan kan inte fånga nyanserna med djup eller kontextuell insikt, och potentiellt saknar kritiska aspekter av dokumentet.
Utdata för överordnad dokumentåterhämtning AWS (Amazon Web Services) startade med en funktionsfattig initial lansering av tjänsten Elastic Compute Cloud (EC2) 2006, som endast tillhandahåller en instansstorlek, i ett datacenter, i en region i världen, med endast instanser av Linux-operativsystem , och utan många nyckelfunktioner som övervakning, lastbalansering, automatisk skalning eller beständig lagring. Men AWS framgång gjorde det möjligt för dem att snabbt iterera och lägga till de saknade funktionerna, och så småningom expandera för att erbjuda olika smaker, storlekar och optimeringar av beräkning, lagring och nätverk, samt utveckla sina egna chips (Graviton) för att driva pris och prestanda ytterligare . AWS iterativa innovationsprocess krävde betydande investeringar i finansiella och personella resurser under 20 år, ofta i god tid innan den skulle betala ut, för att möta kundernas behov och förbättra långsiktiga kundupplevelser, lojalitet och avkastning för aktieägarna. Amazon är framgångsrika tack vare sin förmåga att ständigt förnya sig, anpassa sig till förändrade marknadsförhållanden och möta kundernas behov inom olika marknadssegment. Detta är uppenbart i framgången för Amazon Business, som har vuxit till att driva cirka 35 miljarder USD i årlig bruttoförsäljning genom att leverera urval, värde och bekvämlighet till företagskunder. Amazons investeringar i e-handel och logistik har också möjliggjort skapandet av tjänster som Köp med Prime, som hjälper handlare med webbsidor direkt till konsumenter att driva konvertering från visningar till köp. Den överordnade dokumentåterhämtaren fördjupar sig djupare i detaljerna i AWS:s tillväxtstrategi, inklusive den iterativa processen att lägga till nya funktioner baserat på kundfeedback och den detaljerade resan från en funktionsfattig initial lansering till en dominerande marknadsposition, samtidigt som den ger en kontextrik respons. . Svaren täcker ett brett spektrum av aspekter, från tekniska innovationer och marknadsstrategi till organisatorisk effektivitet och kundfokus, vilket ger en helhetssyn på de faktorer som bidrar till framgång tillsammans med exempel. Detta kan tillskrivas den överordnade dokumenthämtarens riktade men ändå breda sökmöjligheter.
LLM Chain Extractor: Kontextuell komprimeringsutgång AWS utvecklades genom att starta som ett litet projekt inom Amazon, som krävde betydande kapitalinvesteringar och mötte skepsis både inom och utanför företaget. AWS hade dock ett försprång på potentiella konkurrenter och trodde på värdet det kunde tillföra kunder och Amazon. AWS gjorde ett långsiktigt åtagande att fortsätta att investera, vilket resulterade i över 3,300 2022 nya funktioner och tjänster som lanserades 85. AWS har förändrat hur kunder hanterar sin tekniska infrastruktur och har blivit en årlig intäktsverksamhet på 2 miljarder USD med stark lönsamhet. AWS har också kontinuerligt förbättrat sina erbjudanden, som att förbättra ECXNUMX med ytterligare funktioner och tjänster efter den första lanseringen. Baserat på det angivna sammanhanget kan Amazons framgång tillskrivas dess strategiska expansion från en bokförsäljningsplattform till en global marknadsplats med ett levande ekosystem för tredjepartssäljare, tidiga investeringar i AWS, innovation i introduktionen av Kindle och Alexa och betydande tillväxt i årlig intäkt från 2019 till 2022. Denna tillväxt ledde till utvidgningen av uppfyllnadscentrets fotavtryck, skapandet av ett sista mils transportnätverk och byggandet av ett nytt sorteringscenternätverk, som var optimerat för produktivitet och kostnadsminskningar. LLM kedjeutdragaren upprätthåller en balans mellan att täcka nyckelpunkter heltäckande och att undvika onödigt djup. Den anpassar sig dynamiskt till frågans sammanhang, så resultatet är direkt relevant och heltäckande.
LLM-kedjefilter: Kontextuell komprimeringsutgång AWS (Amazon Web Services) utvecklades genom att initialt lansera funktionsfattiga men upprepade snabbt baserat på kundfeedback för att lägga till nödvändiga funktioner. Detta tillvägagångssätt gjorde det möjligt för AWS att lansera EC2 2006 med begränsade funktioner och sedan kontinuerligt lägga till nya funktioner, såsom ytterligare instansstorlekar, datacenter, regioner, operativsystemalternativ, övervakningsverktyg, lastbalansering, automatisk skalning och beständig lagring. Med tiden förvandlades AWS från en funktionsfattig tjänst till en mångmiljardaffär genom att fokusera på kundbehov, smidighet, innovation, kostnadseffektivitet och säkerhet. AWS har nu en årlig intäktstakt på 85 miljarder USD och erbjuder över 3,300 XNUMX nya funktioner och tjänster varje år, vilket vänder sig till ett brett spektrum av kunder från nystartade företag till multinationella företag och offentliga organisationer. Amazon är framgångsrikt tack vare sina innovativa affärsmodeller, kontinuerliga tekniska framsteg och strategiska organisatoriska förändringar. Företaget har konsekvent stört traditionella industrier genom att introducera nya idéer, såsom en e-handelsplattform för olika produkter och tjänster, en tredjepartsmarknadsplats, molninfrastrukturtjänster (AWS), Kindle e-läsare och Alexa röststyrda personliga assistent . Dessutom har Amazon gjort strukturella förändringar för att förbättra sin effektivitet, som att omorganisera sitt amerikanska nätverk för att minska kostnaderna och leveranstiderna, vilket ytterligare bidrar till dess framgång. I likhet med LLM-kedjeextraktorn ser LLM-kedjefiltret till att även om nyckelpunkterna täcks, är resultatet effektivt för kunder som letar efter kortfattade och kontextuella svar.

När vi jämför dessa olika tekniker kan vi se att i sammanhang som att beskriva AWS:s övergång från en enkel tjänst till en komplex enhet på flera miljarder dollar, eller förklara Amazons strategiska framgångar, saknar den vanliga retrieverkedjan precisionen som de mer sofistikerade teknikerna erbjuder, leder till mindre riktad information. Även om väldigt få skillnader är synliga mellan de avancerade teknikerna som diskuteras, är de mycket mer informativa än vanliga retrieverkedjor.

För kunder inom branscher som sjukvård, telekommunikation och finansiella tjänster som vill implementera RAG i sina applikationer, gör begränsningarna i den vanliga retrieverkedjan när det gäller att tillhandahålla precision, undvika redundans och effektivt komprimera information den mindre lämpad för att uppfylla dessa behov jämfört med till den mer avancerade överordnade dokumentåtervinningen och kontextuella komprimeringstekniker. Dessa tekniker kan destillera stora mängder information till de koncentrerade, effektfulla insikter som du behöver, samtidigt som de hjälper till att förbättra prisprestanda.

Städa upp

När du är klar med att köra anteckningsboken, radera resurserna du skapade för att undvika att avgifter för de resurser som används:

# Delete resources
llm_predictor.delete_model()
llm_predictor.delete_endpoint()
embedding_predictor.delete_model()
embedding_predictor.delete_endpoint()

Slutsats

I det här inlägget presenterade vi en lösning som låter dig implementera den överordnade dokumenthämtaren och teknikerna för kontextuell komprimeringskedje för att förbättra LLM:ers förmåga att bearbeta och generera information. Vi testade dessa avancerade RAG-tekniker med Mixtral-8x7B Instruct- och BGE Large En-modellerna som finns tillgängliga med SageMaker JumpStart. Vi utforskade också användningen av beständig lagring för inbäddningar och dokumentbitar och integration med företagsdatalager.

De tekniker vi utförde förfinar inte bara sättet som LLM-modeller får tillgång till och införlivar extern kunskap, utan förbättrar också avsevärt kvaliteten, relevansen och effektiviteten hos deras resultat. Genom att kombinera hämtning från stora textkorpora med språkgenereringsmöjligheter, gör dessa avancerade RAG-tekniker det möjligt för LLM:er att producera mer fakta, sammanhängande och kontextanpassade svar, vilket förbättrar deras prestanda över olika naturliga språkbehandlingsuppgifter.

SageMaker JumpStart är i centrum för denna lösning. Med SageMaker JumpStart får du tillgång till ett omfattande sortiment av modeller med öppen och sluten källkod, vilket effektiviserar processen för att komma igång med ML och möjliggör snabba experiment och distribution. För att komma igång med att distribuera den här lösningen, navigera till anteckningsboken i GitHub repo.


Om författarna

Niithiyn Vijeaswaran är lösningsarkitekt på AWS. Hans fokusområde är generativ AI och AWS AI-acceleratorer. Han har en kandidatexamen i datavetenskap och bioinformatik. Niithiyn arbetar nära med Generative AI GTM-teamet för att möjliggöra AWS-kunder på flera fronter och påskynda deras införande av generativ AI. Han är ett ivrigt fan av Dallas Mavericks och tycker om att samla på sneakers.

Sebastian Bustillo är lösningsarkitekt på AWS. Han fokuserar på AI/ML-teknologier med en djup passion för generativ AI och datoracceleratorer. På AWS hjälper han kunder att låsa upp affärsvärde genom generativ AI. När han inte är på jobbet tycker han om att brygga en perfekt kopp specialkaffe och utforska världen med sin fru.

Armando Diaz är lösningsarkitekt på AWS. Han fokuserar på generativ AI, AI/ML och dataanalys. På AWS hjälper Armando kunder att integrera banbrytande generativ AI-kapacitet i sina system, vilket främjar innovation och konkurrensfördelar. När han inte är på jobbet tycker han om att umgås med sin fru och familj, vandra och resa jorden runt.

Dr Farooq Sabir är Senior Artificiell Intelligens och Machine Learning Specialist Solutions Architect på AWS. Han har doktorsexamen och MS-examen i elektroteknik från University of Texas i Austin och en MS i datavetenskap från Georgia Institute of Technology. Han har över 15 års arbetslivserfarenhet och gillar även att undervisa och mentor studenter. På AWS hjälper han kunder att formulera och lösa sina affärsproblem inom datavetenskap, maskininlärning, datorseende, artificiell intelligens, numerisk optimering och relaterade domäner. Baserad i Dallas, Texas, älskar han och hans familj att resa och åka på långa vägresor.

Marco Punio är en lösningsarkitekt fokuserad på generativ AI-strategi, tillämpade AI-lösningar och forskning för att hjälpa kunder att hyperskala på AWS. Marco är en digital inbyggd molnrådgivare med erfarenhet inom FinTech, Healthcare & Life Sciences, Software-as-a-service och nu senast inom telekommunikationsindustrin. Han är en kvalificerad tekniker med en passion för maskininlärning, artificiell intelligens och fusioner och förvärv. Marco är baserad i Seattle, WA och tycker om att skriva, läsa, träna och bygga applikationer på sin fritid.

AJ Dhimine är lösningsarkitekt på AWS. Han är specialiserad på generativ AI, serverlös datoranvändning och dataanalys. Han är en aktiv medlem/mentor i Machine Learning Technical Field Community och har publicerat flera vetenskapliga artiklar om olika AI/ML-ämnen. Han arbetar med kunder, allt från nystartade företag till företag, för att utveckla AWSome generativa AI-lösningar. Han brinner särskilt för att utnyttja stora språkmodeller för avancerad dataanalys och utforska praktiska tillämpningar som hanterar verkliga utmaningar. Utanför jobbet tycker AJ om att resa och är för närvarande i 53 länder med målet att besöka alla länder i världen.

plats_img

Senaste intelligens

plats_img

Chatta med oss

Hallå där! Hur kan jag hjälpa dig?