Retrieval-Augmented Generation med LangChain, Amazon SageMaker JumpStart och MongoDB Atlas semantisk sökning | Amazon webbtjänster

Retrieval-Augmented Generation med LangChain, Amazon SageMaker JumpStart och MongoDB Atlas semantisk sökning | Amazon webbtjänster

Generativ AI modeller har potential att revolutionera företagsverksamheten, men företag måste noga överväga hur de kan utnyttja sin kraft samtidigt som de övervinner utmaningar som att skydda data och säkerställa kvaliteten på AI-genererat innehåll.

Ramverket Retrieval-Augmented Generation (RAG) utökar meddelanden med externa data från flera källor, såsom dokumentarkiv, databaser eller API:er, för att göra grundmodeller effektiva för domänspecifika uppgifter. Det här inlägget presenterar funktionerna hos RAG-modellen och belyser den transformativa potentialen hos MongoDB Atlas med dess Vector Search-funktion.

MongoDB Atlas är en integrerad svit av datatjänster som accelererar och förenklar utvecklingen av datadrivna applikationer. Dess vektordatalager integreras sömlöst med operativ datalagring, vilket eliminerar behovet av en separat databas. Denna integration möjliggör kraftfulla semantiska sökmöjligheter genom Vektor Sök, ett snabbt sätt att bygga semantiska sökningar och AI-drivna applikationer.

Amazon SageMaker gör det möjligt för företag att bygga, träna och distribuera modeller för maskininlärning (ML). Amazon SageMaker JumpStart tillhandahåller förutbildade modeller och data som hjälper dig att komma igång med ML. Du kan komma åt, anpassa och distribuera förtränade modeller och data via SageMaker JumpStart-målsidan i Amazon SageMaker Studio med bara några klick.

Amazon Lex är ett samtalsgränssnitt som hjälper företag att skapa chatbots och röstbots som deltar i naturliga, verklighetstrogna interaktioner. Genom att integrera Amazon Lex med generativ AI kan företag skapa ett holistiskt ekosystem där användarinmatningar sömlöst övergår till sammanhängande och kontextuellt relevanta svar.

Lösningsöversikt

Följande diagram illustrerar lösningsarkitekturen.

Lösningsöversikt

I följande avsnitt går vi igenom stegen för att implementera denna lösning och dess komponenter.

Konfigurera ett MongoDB-kluster

För att skapa ett gratis MongoDB Atlas-kluster, följ instruktionerna i Skapa ett kluster. Konfigurera databasen tillgång och nätverk tillgång.

Implementera SageMaker-inbäddningsmodellen

Du kan välja inbäddningsmodell (ALL MiniLM L6 v2) på SageMaker JumpStart-modeller, bärbara datorer, lösningar sida.

SageMaker JumpStart-modeller, bärbara datorer, lösningar

Välja Distribuera att distribuera modellen.

Verifiera att modellen har distribuerats framgångsrikt och verifiera att slutpunkten har skapats.

modellen har implementerats framgångsrikt

Vektor inbäddning

Vektor inbäddning är en process för att konvertera en text eller bild till en vektorrepresentation. Med följande kod kan vi generera vektorinbäddningar med SageMaker JumpStart och uppdatera samlingen med den skapade vektorn för varje dokument:

payload = {"text_inputs": [document[field_name_to_be_vectorized]]}
query_response = query_endpoint_with_json_payload(json.dumps(payload).encode('utf-8'))
embeddings = parse_response_multiple_texts(query_response) # update the document
update = {'$set': {vector_field_name :  embeddings[0]}}
collection.update_one(query, update)

Koden ovan visar hur man uppdaterar ett enstaka objekt i en samling. För att uppdatera alla objekt följ instruktioner.

MongoDB vektordatalager

MongoDB Atlas vektorsökning är en ny funktion som låter dig lagra och söka vektordata i MongoDB. Vektordata är en typ av data som representerar en punkt i ett högdimensionellt utrymme. Denna typ av data används ofta i ML och artificiell intelligens. MongoDB Atlas Vector Search använder en teknik som kallas k-närmaste grannar (k-NN) för att söka efter liknande vektorer. k-NN fungerar genom att hitta de k mest lika vektorerna till en given vektor. De mest lika vektorerna är de som är närmast den givna vektorn när det gäller det euklidiska avståndet.

Att lagra vektordata bredvid driftsdata kan förbättra prestandan genom att minska behovet av att flytta data mellan olika lagringssystem. Detta är särskilt fördelaktigt för applikationer som kräver realtidsåtkomst till vektordata.

Skapa ett vektorsökningsindex

Nästa steg är att skapa en MongoDB vektorsökningsindex på vektorfältet du skapade i föregående steg. MongoDB använder knnVector typ för att indexera vektorinbäddningar. Vektorfältet ska representeras som en array av tal (endast BSON int32, int64 eller dubbla datatyper).

Hänvisa till Granska knnVector Typ Begränsningar för mer information om begränsningarna för knnVector typ.

Följande kod är ett exempel på en indexdefinition:

{ "mappings": { "dynamic": true, "fields": { "egVector": { "dimensions": 384, "similarity": "euclidean", "type": "knnVector" } } }
}

Observera att dimensionen måste matcha din inbäddningsmodell.

Fråga vektordatalagret

Du kan fråga vektordatalagret med hjälp av Vector Sök aggregering pipeline. Den använder vektorsökningsindexet och utför en semantisk sökning på vektordatalagret.

Följande kod är ett exempel på sökdefinition:

{ $search: { "index": "<index name>", // optional, defaults to "default" "knnBeta": { "vector": [<array-of-numbers>], "path": "<field-to-search>", "filter": {<filter-specification>}, "k": <number>, "score": {<options>} } }
}

Implementera SageMakers stora språkmodell

SageMaker JumpStart foundation modeller är förtränade stora språkmodeller (LLMs) som används för att lösa en mängd olika naturliga språkbearbetningsuppgifter (NLP), såsom textsammanfattning, frågesvar och naturlig språkinferens. De finns i en mängd olika storlekar och konfigurationer. I den här lösningen använder vi Kramande ansikte FLAN-T5-XL modell.

Sök efter modellen FLAN-T5-XL i SageMaker JumpStart.

Sök efter FLAN-T5-XL

Välja Distribuera för att ställa in FLAN-T5-XL-modellen.

Distribuera

Verifiera att modellen har distribuerats framgångsrikt och att slutpunkten är aktiv.

Retrieval-Augmented Generation med LangChain, Amazon SageMaker JumpStart och MongoDB Atlas semantisk sökning | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Skapa en Amazon Lex-bot

För att skapa en Amazon Lex-bot, utför följande steg:

  1. Välj på Amazon Lex-konsolen Skapa bot.

Skapa bot

  1. För Botnamn, ange ett namn.
  2. För Runtime-roll, Välj Skapa en roll med grundläggande Amazon Lex -behörigheter.
    Retrieval-Augmented Generation med LangChain, Amazon SageMaker JumpStart och MongoDB Atlas semantisk sökning | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  3. Ange dina språkinställningar och välj sedan Färdig .
    Retrieval-Augmented Generation med LangChain, Amazon SageMaker JumpStart och MongoDB Atlas semantisk sökning | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  4. Lägg till ett exempel på yttrande i NewIntent UI och välj Spara avsikt.
    Retrieval-Augmented Generation med LangChain, Amazon SageMaker JumpStart och MongoDB Atlas semantisk sökning | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  5. Navigera till FallbackIntent som skapades för dig som standard och växla Aktiva i Uppfyllandet sektion.
    växla till Aktiv
  6. Välja Bygga och efter att bygget har lyckats, välj Testa.
    Bygg och testa
  7. Välj kugghjulsikonen innan du testar.
    Retrieval-Augmented Generation med LangChain, Amazon SageMaker JumpStart och MongoDB Atlas semantisk sökning | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  8. ange AWS Lambda funktion som kommer att interagera med MongoDB Atlas och LLM för att ge svar. För att skapa lambdafunktionen följ dessa steg.
    9. Ange AWS Lambda-funktionen
  9. Du kan nu interagera med LLM.

Städa upp

Gör följande för att städa upp dina resurser:

  1. Ta bort Amazon Lex-boten.
  2. Ta bort lambdafunktionen.
  3. Ta bort LLM SageMaker-slutpunkten.
  4. Ta bort inbäddningsmodellens SageMaker-slutpunkt.
  5. Ta bort MongoDB Atlas-klustret.

Slutsats

I inlägget visade vi hur man skapar en enkel bot som använder MongoDB Atlas semantisk sökning och integreras med en modell från SageMaker JumpStart. Den här boten låter dig snabbt prototypa användarinteraktion med olika LLM:er i SageMaker Jumpstart samtidigt som du parar dem med sammanhanget som kommer från MongoDB Atlas.

Som alltid välkomnar AWS feedback. Lämna din feedback och frågor i kommentarsfältet.


Om författarna

Retrieval-Augmented Generation med LangChain, Amazon SageMaker JumpStart och MongoDB Atlas semantisk sökning | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Igor Alekseev är Senior Partner Solution Architect på AWS inom data- och analysdomän. I sin roll arbetar Igor med strategiska partners som hjälper dem att bygga komplexa, AWS-optimerade arkitekturer. Innan han började på AWS implementerade han som data-/lösningsarkitekt många projekt inom Big Data-domänen, inklusive flera datasjöar i Hadoop-ekosystemet. Som dataingenjör var han involverad i att tillämpa AI/ML för att upptäcka bedrägerier och kontorsautomation.


Retrieval-Augmented Generation med LangChain, Amazon SageMaker JumpStart och MongoDB Atlas semantisk sökning | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Babu Srinivasan
är Senior Partner Solutions Architect på MongoDB. I sin nuvarande roll arbetar han med AWS för att bygga de tekniska integrationerna och referensarkitekturerna för AWS- och MongoDB-lösningarna. Han har mer än två decennier av erfarenhet av databas- och molnteknologier. Han brinner för att tillhandahålla tekniska lösningar till kunder som arbetar med flera globala systemintegratörer (GSI) över flera geografiska områden.

Tidsstämpel:

Mer från AWS maskininlärning