Met Retrieval Augmented Generation (RAG) kunt u een groot taalmodel (LLM) voorzien van toegang tot gegevens uit externe kennisbronnen zoals opslagplaatsen, databases en API's zonder dat u dit hoeft te verfijnen. Door generatieve AI te gebruiken voor het beantwoorden van vragen, stelt RAG LLM's in staat om vragen te beantwoorden met de meest relevante, up-to-date informatie en optioneel hun gegevensbronnen te citeren ter verificatie.
Een typische RAG-oplossing voor het ophalen van kennis uit documenten maakt gebruik van een inbeddingsmodel om de gegevens uit de gegevensbronnen om te zetten in inbedding en slaat deze inbedding op in een vectordatabase. Wanneer een gebruiker een vraag stelt, doorzoekt deze de vectordatabase en haalt documenten op die het meest lijken op de zoekopdracht van de gebruiker. Vervolgens combineert het de opgehaalde documenten en de zoekopdracht van de gebruiker in een uitgebreide prompt die naar de LLM wordt gestuurd voor het genereren van tekst. Er zijn twee modellen in deze implementatie: het embeddingsmodel en de LLM die het uiteindelijke antwoord genereert.
In dit bericht laten we zien hoe te gebruiken Amazon SageMaker Studio om een RAG-vraag-antwoordoplossing te bouwen.
Gebruik van notitieboekjes voor het beantwoorden van vragen op basis van RAG
Het implementeren van RAG houdt doorgaans in dat u experimenteert met verschillende inbeddingsmodellen, vectordatabases, modellen voor het genereren van tekst en aanwijzingen, terwijl u ook fouten in uw code oplost totdat u een functioneel prototype bereikt. Amazon Sage Maker biedt beheerde Jupyter-notebooks uitgerust met GPU-instances, zodat u tijdens deze eerste fase snel kunt experimenteren zonder extra infrastructuur op te zetten. Er zijn twee opties voor het gebruik van notebooks in SageMaker. De eerste optie is een snelle lancering laptops beschikbaar via SageMaker Studio. In SageMaker Studio, de geïntegreerde ontwikkelomgeving (IDE) die speciaal is gebouwd voor ML, kunt u notebooks starten die op verschillende instantietypen en met verschillende configuraties draaien, samenwerken met collega's en toegang krijgen tot extra speciaal gebouwde functies voor machine learning (ML). De tweede optie is het gebruik van een SageMaker notebook-instantie, een volledig beheerde ML-rekeninstantie waarop de Jupyter Notebook-app wordt uitgevoerd.
In dit bericht presenteren we een RAG-oplossing die de kennis van het model uitbreidt met aanvullende gegevens uit externe kennisbronnen om nauwkeurigere antwoorden te bieden die specifiek zijn voor een aangepast domein. We gebruiken een enkele SageMaker Studio-notebook die draait op een ml.g5.2xlarge
exemplaar (1 A10G GPU) en Lama 2 7b chat hf, de verfijnde versie van Llama 2 7b, die is geoptimaliseerd voor dialooggebruiksscenario's van Hugging Face Hub. We gebruiken twee AWS Media & Entertainment Blog-posts als voorbeeld van externe gegevens, die we met de BAAI/bge-small-en-v1.5 inbedding. We slaan de inbedding op pinecone, een vectorgebaseerde database die krachtige zoek- en gelijkenismatching biedt. We bespreken ook hoe u kunt overstappen van experimenteren in de notebook naar het implementeren van uw modellen op SageMaker-eindpunten voor realtime gevolgtrekking wanneer u uw prototyping voltooit. Dezelfde aanpak kan worden gebruikt met verschillende modellen en vectordatabases.
Overzicht oplossingen
Het volgende diagram illustreert de oplossingsarchitectuur.
Het implementeren van de oplossing bestaat uit twee stappen op hoog niveau: het ontwikkelen van de oplossing met behulp van SageMaker Studio-notebooks, en het implementeren van de modellen voor gevolgtrekking.
Ontwikkel de oplossing met SageMaker Studio-notebooks
Voer de volgende stappen uit om te beginnen met het ontwikkelen van de oplossing:
- Laad het Llama-2 7b-chatmodel van Hugging Face Hub in de notebook.
- Maak een PromptTemplate met LangChain en gebruik het om aanwijzingen voor uw gebruiksscenario te maken.
- Voeg voor 1 à 2 voorbeeldprompts relevante statische tekst uit externe documenten toe als promptcontext en beoordeel of de kwaliteit van de antwoorden verbetert.
- Ervan uitgaande dat de kwaliteit verbetert, implementeert u de RAG-workflow voor het beantwoorden van vragen:
- Verzamel de externe documenten die het model kunnen helpen de vragen in uw gebruiksscenario beter te beantwoorden.
- Laad het BGE-insluitingsmodel en gebruik het om insluitingen van deze documenten te genereren.
- Bewaar deze inbedding in een Pinecone-index.
- Wanneer een gebruiker een vraag stelt, voer dan een overeenkomstzoekopdracht uit in Pinecone en voeg de inhoud van de meest vergelijkbare documenten toe aan de context van de prompt.
Implementeer de modellen in SageMaker voor gevolgtrekking op schaal
Wanneer u uw prestatiedoelen bereikt, kunt u de modellen implementeren in SageMaker voor gebruik door generatieve AI-toepassingen:
- Implementeer het Llama-2 7b-chatmodel op een realtime eindpunt van SageMaker.
- Implementeer de BAAI/bge-small-en-v1.5 embeddings-model naar een real-time eindpunt van SageMaker.
- Gebruik de geïmplementeerde modellen in uw vraag om generatieve AI-toepassingen te beantwoorden.
In de volgende secties begeleiden we u door de stappen voor het implementeren van deze oplossing in SageMaker Studio-notebooks.
Voorwaarden
Om de stappen in dit bericht te volgen, heb je een AWS-account en een AWS Identiteits- en toegangsbeheer (IAM)-rol met machtigingen voor het maken en openen van de oplossingsbronnen. Als u nieuw bent bij AWS, zie Maak een zelfstandig AWS-account aan.
Om SageMaker Studio-notebooks in uw AWS-account te gebruiken, heeft u een SageMaker-domein met een gebruikersprofiel dat toestemming heeft om de SageMaker Studio-app te starten. Als u nieuw bent bij SageMaker Studio, kunt u de Snelle Studio-installatie is de snelste manier om aan de slag te gaan. Met een enkele klik voorziet SageMaker het SageMaker-domein van standaardvoorinstellingen, inclusief het instellen van het gebruikersprofiel, de IAM-rol, IAM-authenticatie en openbare internettoegang. Het notitieboekje voor dit bericht gaat uit van een ml.g5.2xlarge
exemplaartype. Om uw quotum te bekijken of te verhogen, opent u de AWS Service Quotas-console en kiest u AWS-services in het navigatievenster, kies Amazon Sage Makeren raadpleeg de waarde voor Studio KernelGateway-apps die worden uitgevoerd ml.g5.2xlarge
instanties.
Nadat u uw quotumlimiet heeft bevestigd, moet u de afhankelijkheden voltooien om Llama 2 7b-chat te gebruiken.
Llama 2 7b-chat is beschikbaar onder de Llama 2-licentie. Om toegang te krijgen tot Llama 2 op Hugging Face, moet je eerst een paar stappen voltooien:
- Maak een Hugging Face-account aan als je er nog geen hebt.
- Vul het formulier "Verzoek om toegang tot de volgende versie van Llama" in op de Meta van de.
- Toegang aanvragen tot Lama 2 7b chatten op knuffelend gezicht.
Nadat u toegang heeft gekregen, kunt u een nieuw toegangstoken maken om toegang te krijgen tot modellen. Om een toegangstoken te maken, navigeert u naar de Instellingen pagina op de Hugging Face-website.
Om het als vectordatabase te kunnen gebruiken, heeft u een account bij Pinecone nodig. Pinecone is beschikbaar op AWS via de AWS Marketplace. De website van Pinecone biedt ook de mogelijkheid om een gratis account dat wordt geleverd met machtigingen om een enkele index te maken, wat voldoende is voor de doeleinden van dit bericht. Om uw Pinecone-sleutels op te halen, opent u de Dennenappel console En kies API Keys.
Stel het notebook en de omgeving in
Om de code in dit bericht te volgen, opent u SageMaker Studio en kloont u het volgende GitHub-repository. Open vervolgens het notitieboekje studio-local-gen-ai/rag/RAG-with-Llama-2-on-Studio.ipynb en kies de PyTorch 2.0.0 Python 3.10 GPU-geoptimaliseerde afbeelding, Python 3-kernel en ml.g5.2xlarge
als het exemplaartype. Als dit de eerste keer is dat u SageMaker Studio-notebooks gebruikt, raadpleegt u Maak of open een Amazon SageMaker Studio-notebook.
Om de ontwikkelomgeving in te richten, moet u de benodigde Python-bibliotheken installeren, zoals gedemonstreerd in de volgende code:
%%writefile requirements.txt
sagemaker>=2.175.0
transformers==4.33.0
accelerate==0.21.0
datasets==2.13.0
langchain==0.0.297
pypdf>=3.16.3
pinecone-client
sentence_transformers
safetensors>=0.3.3
!pip install -U -r requirements.txt
Laad het vooraf getrainde model en de tokenizer
Nadat u de vereiste bibliotheken heeft geïmporteerd, kunt u de Lama-2 7b chatten model samen met de bijbehorende tokenizers van Hugging Face. Deze geladen modelartefacten worden opgeslagen in de lokale map binnen SageMaker Studio. Hierdoor kunt u ze snel opnieuw in het geheugen laden wanneer u uw werk op een ander tijdstip moet hervatten.
import torch from transformers import ( AutoTokenizer, LlamaTokenizer, LlamaForCausalLM, GenerationConfig, AutoModelForCausalLM
)
import transformers tg_model_id = "meta-llama/Llama-2-7b-chat-hf" #the model id in Hugging Face
tg_model_path = f"./tg_model/{tg_model_id}" #the local directory where the model will be saved tg_model = AutoModelForCausalLM.from_pretrained(tg_model_id, token=hf_access_token,do_sample=True, use_safetensors=True, device_map="auto", torch_dtype=torch.float16
tg_tokenizer = AutoTokenizer.from_pretrained(tg_model_id, token=hf_access_token) tg_model.save_pretrained(save_directory=tg_model_path, from_pt=True)
tg_tokenizer.save_pretrained(save_directory=tg_model_path, from_pt=True)
Stel een vraag waarvoor actuele informatie vereist is
U kunt het model nu gaan gebruiken en vragen stellen. Llama-2-chatmodellen verwachten dat de prompt het volgende formaat volgt:
<s>[INST] <<SYS>>
system_prompt
<<SYS>>
{{ user_message }} [/INST]
U kunt gebruik maken van de Promptsjabloon van LangChain om een recept te maken op basis van het promptformaat, zodat u in de toekomst eenvoudig prompts kunt maken:
from langchain import PromptTemplate template = """<s>[INST] <<SYS>>nYou are an assistant for question-answering tasks. You are helpful and friendly. Use the following pieces of retrieved context to answer the query. If you don't know the answer, you just say I don't know. Use three sentences maximum and keep the answer concise.
<<SYS>>n
{context}n
{question} [/INST] """
prompt_template = PromptTemplate( template=template, input_variables=['context','question'] )
Laten we het model een vraag stellen waarvoor recente informatie uit 2023 nodig is. U kunt LangChain gebruiken en specifiek de LLMChain type keten en geef als parameters de LLM door, de promptsjabloon die u eerder hebt gemaakt, en de vraag:
question = "When can I visit the AWS M&E Customer Experience Center in New York City?" tg_tokenizer.add_special_tokens( {"pad_token": "[PAD]"} )
tg_tokenizer.padding_side = "left" tg_pipe = transformers.pipeline(task='text-generation', model=tg_model, tokenizer=tg_tokenizer, num_return_sequences=1, eos_token_id=tg_tokenizer.eos_token_id, pad_token_id=tg_tokenizer.eos_token_id, max_new_tokens=400, temperature=0.7) from langchain.chains import LLMChain
from langchain.llms import HuggingFacePipeline llm=HuggingFacePipeline(pipeline=tg_pipe, model_kwargs={'temperature':0.7})
llm_chain = LLMChain(llm=llm, prompt=prompt_template)
no_context_response = llm_chain.predict(context="", question=question)
print(no_context_response)
We krijgen het volgende gegenereerde antwoord:
Bedankt dat u contact heeft opgenomen! Het AWS M&E Customer Experience Center in New York City is momenteel gesloten voor bezoek vanwege de COVID-19-pandemie. U kunt echter hun officiële website of sociale media-accounts raadplegen voor updates over wanneer het centrum weer opengaat. In de tussentijd kunt u hun virtuele rondleidingen en bronnen verkennen die online beschikbaar zijn.
Verbeter het antwoord door context aan de prompt toe te voegen
Het antwoord dat we hebben gegenereerd, is niet helemaal waar. Laten we kijken of we het kunnen verbeteren door wat context te bieden. U kunt een uittreksel uit het bericht toevoegen AWS kondigt een nieuw M&E Customer Experience Center aan in New York, met updates over het onderwerp uit 2023:
context = """Media and entertainment (M&E) customers continue to face challenges in creating more content, more quickly, and distributing it to more endpoints than ever before in their quest to delight viewers globally. Amazon Web Services (AWS), along with AWS Partners, have showcased the rapid evolution of M&E solutions for years at industry events like the National Association of Broadcasters (NAB) Show and the International Broadcast Convention (IBC). Until now, AWS for M&E technology demonstrations were accessible in this way just a few weeks out of the year. Customers are more engaged than ever before; they want to have higher quality conversations regarding user experience and media tooling. These conversations are best supported by having an interconnected solution architecture for reference. Scheduling a visit of the M&E Customer Experience Center will be available starting November 13th, please send an email to AWS-MediaEnt-CXC@amazon.com."""
Gebruik de LLMChain opnieuw en geef de voorgaande tekst door als context:
context_response = llm_chain.predict(context=context, question=question)
print(context_response)
Het nieuwe antwoord beantwoordt de vraag met actuele informatie:
Vanaf 13 november kun je het AWS M&E Customer Experience Center in New York City bezoeken. Stuur een e-mail naar AWS-MediaEnt-CXC@amazon.com om een bezoek te plannen.
We hebben bevestigd dat door het toevoegen van de juiste context de prestaties van het model worden verbeterd. Nu kunt u uw inspanningen richten op het vinden en toevoegen van de juiste context voor de gestelde vraag. Met andere woorden: implementeer RAG.
Implementeer het beantwoorden van RAG-vragen met BGE-inbedding en Pinecone
Op dit moment moet u een beslissing nemen over de informatiebronnen om de kennis van het model te vergroten. Deze bronnen kunnen interne webpagina's of documenten binnen uw organisatie zijn, of openbaar beschikbare gegevensbronnen. Voor de doeleinden van dit bericht en omwille van de eenvoud hebben we twee AWS Blog-berichten gekozen die in 2023 zijn gepubliceerd:
Deze berichten zijn al beschikbaar als PDF-documenten in de gegevensprojectmap in SageMaker Studio voor snelle toegang. Om de documenten in overzichtelijke stukken te verdelen, kunt u gebruik maken van de RecursieveCharacterTextSplitter methode van LangChain:
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.document_loaders import PyPDFDirectoryLoader loader = PyPDFDirectoryLoader("./data/") documents = loader.load() text_splitter=RecursiveCharacterTextSplitter( chunk_size=1000, chunk_overlap=5
)
docs = text_splitter.split_documents(documents)
Gebruik vervolgens het BGE-inbeddingsmodel bge-klein-nl door de Peking Academie voor Kunstmatige Intelligentie (BAAI) die beschikbaar is op Hugging Face om de inbedding van deze brokken te genereren. Download het model en sla het op in de lokale map in Studio. We gebruiken fp32 zodat het op de CPU van de instantie kan draaien.
em_model_name = "BAAI/bge-small-en"
em_model_path = f"./em-model" from transformers import AutoModel
# Load model from HuggingFace Hub
em_model = AutoModel.from_pretrained(em_model_name,torch_dtype=torch.float32)
em_tokenizer = AutoTokenizer.from_pretrained(em_model_name,device="cuda") # save model to disk
em_tokenizer.save_pretrained(save_directory=f"{em_model_path}/model",from_pt=True)
em_model.save_pretrained(save_directory=f"{em_model_path}/model",from_pt=True)
em_model.eval()
Gebruik de volgende code om een embedding_generator-functie te maken, die de documentfragmenten als invoer neemt en de insluitingen genereert met behulp van het BGE-model:
# Tokenize sentences
def tokenize_text(_input, device): return em_tokenizer( [_input], padding=True, truncation=True, return_tensors='pt' ).to(device) # Run embedding task as a function with model and text sentences as input
def embedding_generator(_input, normalize=True): # Compute token embeddings with torch.no_grad(): embedded_output = em_model( **tokenize_text( _input, em_model.device ) ) sentence_embeddings = embedded_output[0][:, 0] # normalize embeddings if normalize: sentence_embeddings = torch.nn.functional.normalize( sentence_embeddings, p=2, dim=1 ) return sentence_embeddings[0, :].tolist() sample_sentence_embedding = embedding_generator(docs[0].page_content)
print(f"Embedding size of the document --->", len(sample_sentence_embedding))
In dit bericht demonstreren we een RAG-workflow met behulp van Pinecone, een beheerde, cloud-native vector-database dat biedt ook een API voor het zoeken naar gelijkenissen. U bent vrij om de volgende code te herschrijven om de vectordatabase van uw voorkeur te gebruiken.
Wij initialiseren a Pinecone Python-client en maak een nieuwe vectorzoekindex met behulp van de uitvoerlengte van het inbeddingsmodel. We gebruiken de ingebouwde Pinecone-klasse van LangChain om de insluitingen op te nemen die we in de vorige stap hebben gemaakt. Er zijn drie parameters nodig: de documenten die moeten worden opgenomen, de functie voor het genereren van insluitingen en de naam van de Pinecone-index.
import pinecone
pinecone.init( api_key = os.environ["PINECONE_API_KEY"], environment = os.environ["PINECONE_ENV"]
)
#check if index already exists, if not we create it
index_name = "rag-index"
if index_name not in pinecone.list_indexes(): pinecone.create_index( name=index_name, dimension=len(sample_sentence_embedding), ## 384 for bge-small-en metric='cosine' ) #insert the embeddings
from langchain.vectorstores import Pinecone
vector_store = Pinecone.from_documents( docs, embedding_generator, index_name=index_name
)
Nu het Llama-2 7B-chatmodel in het geheugen is geladen en de insluitingen zijn geïntegreerd in de Pinecone-index, kunt u deze elementen nu combineren om de antwoorden van Llama 2 voor ons vraag-antwoordgebruik te verbeteren. Om dit te bereiken kun je de LangChain inzetten OphalenQA, dat de initiële prompt uitbreidt met de meest vergelijkbare documenten uit het vectorarchief. Door in te stellen return_source_documents=True
, krijgt u inzicht in de exacte documenten die zijn gebruikt om het antwoord te genereren als onderdeel van het antwoord, zodat u de juistheid van het antwoord kunt verifiëren.
from langchain.chains import RetrievalQA
import textwrap #helper method to improve the readability of the response
def print_response(llm_response): temp = [textwrap.fill(line, width=100) for line in llm_response['result'].split('n')] response = 'n'.join(temp) print(f"{llm_response['query']}n n{response}'n n Source Documents:") for source in llm_response["source_documents"]: print(source.metadata) llm_qa_chain = RetrievalQA.from_chain_type( llm=llm, #the Llama-2 7b chat model chain_type='stuff', retriever=vector_store.as_retriever(search_kwargs={"k": 2}), # perform similarity search in Pinecone return_source_documents=True, #show the documents that were used to answer the question chain_type_kwargs={"prompt": prompt_template}
)
print_response(llm_qa_chain(question))
Wij krijgen het volgende antwoord:
Vraag: Wanneer kan ik het AWS M&E Customer Experience Center in New York City bezoeken?
A: Ik help je graag! Afhankelijk van de context zal het AWS M&E Customer Experience Center in New York City vanaf 13 november beschikbaar zijn voor bezoeken. U kunt een e-mail sturen naar AWS-MediaEnt-CXC@amazon.com om een bezoek te plannen.'
Bron documenten:
{'page': 4.0, 'source': 'data/AWS kondigt nieuw M&E Customer Experience Center aan in New York City _ AWS voor M&E Blog.pdf'}
{'page': 2.0, 'source': 'data/AWS kondigt nieuw M&E Customer Experience Center aan in New York City _ AWS voor M&E Blog.pdf'}
Laten we een andere vraag proberen:
question2=" How many awards have AWS Media Services won in 2023?"
print_response(llm_qa_chain(question2))
Wij krijgen het volgende antwoord:
Vraag: Hoeveel prijzen heeft AWS Media Services in 2023 gewonnen?
A: Volgens de blogpost heeft AWS Media Services in 2023 vijf brancheprijzen gewonnen.'
Bron documenten:
{'page': 0.0, 'source': 'data/AWS Media Services krijgt brancheonderscheidingen _ AWS voor M&E Blog.pdf'}
{'page': 1.0, 'source': 'data/AWS Media Services krijgt brancheonderscheidingen _ AWS voor M&E Blog.pdf'}
Nadat u voldoende vertrouwen heeft opgebouwd, kunt u de modellen inzetten SageMaker-eindpunten voor realtime gevolgtrekking. Deze endpoints worden volledig beheerd en bieden ondersteuning voor automatisch schalen.
SageMaker biedt grote modelinferentie met behulp van Large Model Inference-containers (LMI's), die we kunnen gebruiken om onze modellen te implementeren. Deze containers zijn uitgerust met vooraf geïnstalleerde open source-bibliotheken zoals DeepSpeed, waardoor de implementatie van prestatieverhogende technieken zoals tensor-parallellisme tijdens inferentie wordt vergemakkelijkt. Bovendien gebruiken ze DJLServing als een vooraf gebouwde geïntegreerde modelserver. DJLServing is een krachtige, universele modelserving-oplossing die ondersteuning biedt voor dynamische batchverwerking en automatische schaling van werknemers, waardoor de doorvoer wordt verhoogd.
In onze aanpak gebruiken we de SageMaker LMI met DJLServing en DeepSpeed Inference om de Llama-2-chat 7b- en BGE-modellen te implementeren op SageMaker-eindpunten die draaien op ml.g5.2xlarge
instanties, waardoor realtime gevolgtrekking mogelijk is. Als u deze stappen zelf wilt volgen, raadpleeg dan de bijbehorende handleiding notitieboekje voor gedetailleerde instructies.
Je hebt er twee nodig ml.g5.2xlarge
exemplaren voor implementatie. Om uw quotum te bekijken of te verhogen, opent u de AWS Service Quotas-console en kiest u AWS-services in het navigatievenster, kies Amazon Sage Makeren verwijs naar de waarde voor ml.g5.2xlarge
voor eindpuntgebruik.
De volgende stappen schetsen het proces van het implementeren van aangepaste modellen voor de RAG-workflow op een SageMaker-eindpunt:
- Implementeer de Lama-2 7b chatmodel naar een real-time eindpunt van SageMaker dat draait op een
ml.g5.2xlarge
bijvoorbeeld voor het snel genereren van tekst. - Implementeer de BAAI/bge-small-en-v1.5 embeddings-model naar een real-time eindpunt van SageMaker dat draait op een
ml.g5.2xlarge
voorbeeld. Als alternatief kunt u uw eigen inbeddingsmodel implementeren. - Stel een vraag en gebruik de LangChain OphalenQA om de prompt uit te breiden met de meest vergelijkbare documenten van Pinecone, dit keer met behulp van het model dat is geïmplementeerd in het realtime eindpunt van SageMaker:
# convert your local LLM into SageMaker endpoint LLM
llm_sm_ep = SagemakerEndpoint( endpoint_name=tg_sm_model.endpoint_name, # <--- Your text-gen model endpoint name region_name=region, model_kwargs={ "temperature": 0.05, "max_new_tokens": 512 }, content_handler=content_handler,
) llm_qa_smep_chain = RetrievalQA.from_chain_type( llm=llm_sm_ep, # <--- This uses SageMaker Endpoint model for inference chain_type='stuff', retriever=vector_store.as_retriever(search_kwargs={"k": 2}), return_source_documents=True, chain_type_kwargs={"prompt": prompt_template}
)
- Gebruik LangChain om te verifiëren dat het SageMaker-eindpunt met het insluitingsmodel werkt zoals verwacht, zodat het kan worden gebruikt voor toekomstige documentopname:
response_model = smr_client.invoke_endpoint( EndpointName=em_sm_model.endpoint_name, <--- Your embedding model endpoint name Body=json.dumps({ "text": "This is a sample text" }), ContentType="application/json",
) outputs = json.loads(response_model["Body"].read().decode("utf8"))['outputs']
Opruimen
Voer de volgende stappen uit om uw bronnen op te schonen:
- Wanneer u klaar bent met werken in uw SageMaker Studio-notebook, zorg er dan voor dat u het
ml.g5.2xlarge
om eventuele kosten te vermijden door het stoppictogram te kiezen. Je kunt ook instellen configuratiescripts voor de levenscyclus om bronnen automatisch af te sluiten wanneer ze niet worden gebruikt.
- Als u de modellen op SageMaker-eindpunten hebt geïmplementeerd, voert u de volgende code uit aan het einde van het notitieblok om de eindpunten te verwijderen:
#delete your text generation endpoint
sm_client.delete_endpoint( EndpointName=tg_sm_model.endpoint_name
)
# delete your text embedding endpoint
sm_client.delete_endpoint( EndpointName=em_sm_model.endpoint_name
)
- Voer ten slotte de volgende regel uit om de Pinecone-index te verwijderen:
pinecone.delete_index(index_name)
Conclusie
SageMaker-notebooks bieden een eenvoudige manier om uw reis een vliegende start te geven met Retrieval Augmented Generation. Hiermee kunt u interactief experimenteren met verschillende modellen, configuraties en vragen zonder extra infrastructuur op te zetten. In dit bericht hebben we laten zien hoe we de prestaties van Llama 2 7b-chat kunnen verbeteren in een gebruiksscenario voor het beantwoorden van vragen met behulp van LangChain, het BGE-insluitingsmodel en Pinecone. Om aan de slag te gaan, start u SageMaker Studio en voert u het notitieboekje beschikbaar in het volgende GitHub repo. Deel uw mening in de commentarensectie!
Over de auteurs
Anastasia Tzeveleka is een Machine Learning en AI Specialist Solutions Architect bij AWS. Ze werkt samen met klanten in EMEA en helpt hen bij het ontwerpen van machine learning-oplossingen op schaal met behulp van AWS-services. Ze heeft aan projecten in verschillende domeinen gewerkt, waaronder Natural Language Processing (NLP), MLOps en Low Code No Code-tools.
Pranav Murthy is een AI/ML Specialist Solutions Architect bij AWS. Hij richt zich op het helpen van klanten bij het bouwen, trainen, implementeren en migreren van machine learning (ML)-workloads naar SageMaker. Hij werkte eerder in de halfgeleiderindustrie en ontwikkelde grote computer vision (CV) en natuurlijke taalverwerkingsmodellen (NLP) om halfgeleiderprocessen te verbeteren. In zijn vrije tijd houdt hij van schaken en reizen.
- Door SEO aangedreven content en PR-distributie. Word vandaag nog versterkt.
- PlatoData.Network Verticale generatieve AI. Versterk jezelf. Toegang hier.
- PlatoAiStream. Web3-intelligentie. Kennis versterkt. Toegang hier.
- PlatoESG. carbon, CleanTech, Energie, Milieu, Zonne, Afvalbeheer. Toegang hier.
- Plato Gezondheid. Intelligentie op het gebied van biotech en klinische proeven. Toegang hier.
- Bron: https://aws.amazon.com/blogs/machine-learning/use-amazon-sagemaker-studio-to-build-a-rag-question-answering-solution-with-llama-2-langchain-and-pinecone-for-fast-experimentation/
- : heeft
- :is
- :niet
- :waar
- $UP
- 1
- 10
- 100
- 13
- 16
- 2023
- 33
- 500
- 7
- a
- AC
- Academy
- toegang
- Toegang tot gegevens
- beschikbaar
- Volgens
- Account
- accounts
- nauwkeurigheid
- accuraat
- Bereiken
- toevoegen
- toe te voegen
- Extra
- Daarnaast
- aanhangen
- weer
- AI
- AI / ML
- toelaten
- Het toestaan
- toestaat
- langs
- al
- ook
- Amazone
- Amazon Sage Maker
- Amazon SageMaker Studio
- Amazon Web Services
- Amazon Web Services (AWS)
- an
- en
- kondigt
- beantwoorden
- antwoorden
- elke
- APIs
- gebruiken
- toepassingen
- nadering
- apps
- architectuur
- ZIJN
- kunstmatig
- kunstmatige intelligentie
- AS
- vragen
- schatten
- Assistent
- Vereniging
- gaat uit van
- At
- vergroten
- aangevuld
- augments
- authenticatie
- auto
- webmaster.
- Beschikbaar
- vermijd
- Bekroond
- awards
- AWS
- gebaseerde
- BE
- geweest
- vaardigheden
- BEST
- Betere
- Blog
- Blog Posts
- lichaam
- uitzenden
- bouw
- ingebouwd
- by
- CAN
- geval
- gevallen
- Centreren
- keten
- ketens
- uitdagingen
- lasten
- controle
- Schaakspel
- Kies
- het kiezen van
- uitgekozen
- Plaats
- klasse
- schoon
- Klik
- CLOSED
- code
- samenwerken
- collega's
- COM
- combineren
- combines
- hoe
- komt
- opmerkingen
- compleet
- Berekenen
- computer
- Computer visie
- beknopt
- vertrouwen
- Configuratie
- BEVESTIGD
- bestaat uit
- troosten
- containers
- content
- verband
- voortzetten
- Conventie
- conversaties
- converteren
- Overeenkomend
- kon
- Covid-19
- COVID-19 pandemie
- en je merk te creëren
- aangemaakt
- Wij creëren
- Op dit moment
- gewoonte
- klant
- klantervaring
- Klanten
- gegevens
- Database
- databanken
- beslissen
- Standaard
- verrukking
- tonen
- gedemonstreerd
- afhankelijkheden
- implementeren
- ingezet
- het inzetten
- inzet
- gedetailleerd
- het ontwikkelen van
- Ontwikkeling
- apparaat
- Dialoog
- anders
- bespreken
- verspreiden van
- verdelen
- document
- documenten
- domein
- domeinen
- don
- Dont
- beneden
- Download
- twee
- gedurende
- dynamisch
- e
- Vroeger
- gemakkelijk
- inspanningen
- geeft je de mogelijkheid
- inbedding
- EMEA
- maakt
- waardoor
- einde
- Endpoint
- bezig
- verhogen
- Onstpanning
- geheel
- Milieu
- uitgerust
- gevestigd
- EVENTS
- OOIT
- Evolutie
- voorbeeld
- bestaat
- verwachten
- verwacht
- ervaring
- experiment
- Verken
- extern
- extract
- Gezicht
- faciliterende
- SNELLE
- snelste
- Voordelen
- weinig
- finale
- het vinden van
- Voornaam*
- eerste keer
- vijf
- Focus
- richt
- volgen
- volgend
- Voor
- formulier
- formaat
- Naar voren
- Gratis
- vriendelijk
- oppompen van
- geheel
- functie
- functioneel
- toekomst
- Krijgen
- voortbrengen
- gegenereerde
- genereert
- generatie
- generatief
- generatieve AI
- generator
- krijgen
- Wereldwijd
- Doelen
- gaan
- GPU
- verleend
- gelukkig
- Hebben
- met
- he
- hulp
- nuttig
- het helpen van
- helpt
- high-level
- hoge performantie
- hoger
- zijn
- Hit
- Hoe
- How To
- Echter
- HTML
- HTTPS
- Naaf
- KnuffelenGezicht
- i
- IBC
- ICON
- ID
- Identiteit
- if
- illustreert
- beeld
- uitvoeren
- uitvoering
- uitvoering
- importeren
- verbeteren
- verbeterd
- verbetert
- in
- Anders
- omvat
- Inclusief
- Laat uw omzet
- meer
- index
- -industrie
- Industrie Evenementen
- informatie
- Infrastructuur
- eerste
- invoer
- installeren
- instantie
- instructies
- geïntegreerde
- Intelligentie
- met elkaar verbonden
- intern
- Internationale
- Internet
- internet toegang
- in
- IT
- HAAR
- jpg
- json
- voor slechts
- Houden
- toetsen
- blijven
- kennis
- taal
- Groot
- lancering
- leren
- links
- Lengte
- Niveau
- bibliotheken
- als
- LIMIT
- Lijn
- Lama
- LLM
- laden
- lader
- lokaal
- Laag
- machine
- machine learning
- maken
- handelbaar
- beheerd
- veel
- matching
- maximaal
- ondertussen
- Media
- Geheugen
- meta
- Metadata
- methode
- trekken
- ML
- MLops
- model
- modellen
- meer
- meest
- Dan moet je
- NAB
- naam
- nationaal
- Naturel
- Natural Language Processing
- OP DEZE WEBSITE VIND JE
- Navigatie
- noodzakelijk
- Noodzaak
- behoeften
- New
- Nieuwe toegang
- New York
- new york city
- volgende
- nlp
- geen
- notitieboekje
- November
- nu
- of
- bieden
- Aanbod
- officieel
- Officiële website
- on
- EEN
- online.
- open
- open source
- geoptimaliseerde
- Keuze
- Opties
- or
- organisatie
- OS
- Overige
- onze
- uit
- schets
- uitgang
- uitgangen
- het te bezitten.
- stootkussen
- pagina
- pandemisch
- brood
- parameters
- deel
- partners
- passeren
- Uitvoeren
- prestatie
- permissies
- fase
- stukken
- Plato
- Plato gegevensintelligentie
- PlatoData
- spelen
- dan
- Post
- Berichten
- bij voorkeur
- presenteren
- vorig
- die eerder
- processen
- verwerking
- Profiel
- project
- projecten
- prototype
- prototyping
- zorgen voor
- het verstrekken van
- publiek
- in het openbaar
- gepubliceerde
- doeleinden
- Python
- pytorch
- kwaliteit
- zoektocht
- vraag
- Contact
- Quick
- snel
- snel
- snel
- het bereiken van
- real-time
- recent
- recept
- verwijzen
- referentie
- met betrekking tot
- relevante
- heropenen
- vereisen
- nodig
- Voorwaarden
- vereist
- Resources
- antwoord
- reacties
- resultaat
- hervat
- terugkeer
- beoordelen
- rechts
- Rol
- lopen
- lopend
- sagemaker
- sake
- dezelfde
- Bespaar
- gered
- ervaren
- Scale
- scaling
- rooster
- scheduling
- Ontdek
- zoekopdrachten
- Tweede
- secties
- zien
- halfgeleider
- sturen
- verzonden
- server
- service
- Diensten
- reeks
- het instellen van
- Delen
- ze
- tonen
- tentoongesteld
- vertoonde
- sluiten
- stilgelegd
- gelijk
- eenvoud
- single
- Maat
- So
- Social
- social media
- oplossing
- Oplossingen
- sommige
- bron
- bronnen
- specialist
- specifiek
- specifiek
- standalone
- begin
- gestart
- Start
- statisch
- Stap voor
- Stappen
- stop
- shop
- opgeslagen
- winkels
- eenvoudig
- studio
- dergelijk
- voldoende
- ondersteuning
- ondersteunde
- zeker
- snel
- neemt
- Taak
- taken
- technieken
- Technologie
- sjabloon
- tekst
- neem contact
- dat
- De
- hun
- Ze
- Er.
- daarbij
- Deze
- ze
- dit
- drie
- Door
- doorvoer
- niet de tijd of
- naar
- teken
- tokenize
- tools
- onderwerp
- fakkel
- torens
- Trainen
- transformers
- overgang
- Reizend
- waar
- proberen
- twee
- type dan:
- types
- typisch
- typisch
- voor
- Universeel
- tot
- up-to-date
- updates
- Gebruik
- .
- use case
- gebruikt
- Gebruiker
- Gebruikerservaring
- toepassingen
- gebruik
- gebruik maken van
- waarde
- divers
- Verificatie
- controleren
- versie
- via
- kijkers
- Virtueel
- virtuele rondleidingen
- zichtbaarheid
- visie
- Bezoek
- Bezoeken
- lopen
- willen
- Manier..
- we
- web
- webservices
- Website
- weken
- waren
- wanneer
- telkens als
- welke
- en
- wil
- Met
- binnen
- zonder
- Won
- woorden
- Mijn werk
- werkte
- werker
- workflow
- werkzaam
- Bedrijven
- jaar
- jaar
- york
- You
- Your
- jezelf
- zephyrnet