Retrieval Augmented Generation (RAG) consente di fornire un modello linguistico di grandi dimensioni (LLM) con accesso ai dati da fonti di conoscenza esterne come repository, database e API senza la necessità di ottimizzarlo. Quando si utilizza l'intelligenza artificiale generativa per la risposta alle domande, RAG consente ai LLM di rispondere alle domande con le informazioni più pertinenti e aggiornate e facoltativamente citare le proprie fonti di dati per la verifica.
Una tipica soluzione RAG per il recupero della conoscenza dai documenti utilizza un modello di incorporamenti per convertire i dati dalle origini dati in incorporamenti e memorizza questi incorporamenti in un database vettoriale. Quando un utente pone una domanda, esegue una ricerca nel database vettoriale e recupera i documenti più simili alla query dell'utente. Successivamente, combina i documenti recuperati e la query dell'utente in un prompt ampliato che viene inviato a LLM per la generazione del testo. Esistono due modelli in questa implementazione: il modello di incorporamento e il LLM che genera la risposta finale.
In questo post, dimostriamo come utilizzare Amazon Sage Maker Studio per costruire una soluzione di risposta alle domande RAG.
Utilizzo di notebook per la risposta alle domande basata su RAG
L'implementazione di RAG in genere comporta la sperimentazione di vari modelli di incorporamento, database vettoriali, modelli di generazione di testo e prompt, oltre al debug del codice fino a ottenere un prototipo funzionale. Amazon Sage Maker offre notebook Jupyter gestiti dotati di istanze GPU, consentendoti di sperimentare rapidamente durante questa fase iniziale senza avviare infrastrutture aggiuntive. Esistono due opzioni per utilizzare i notebook in SageMaker. La prima opzione è l'avvio rapido computer portatili disponibile tramite SageMaker Studio. In SageMaker Studio, l'ambiente di sviluppo integrato (IDE) creato appositamente per ML, puoi avviare notebook eseguiti su diversi tipi di istanze e con diverse configurazioni, collaborare con i colleghi e accedere a funzionalità aggiuntive appositamente create per l'apprendimento automatico (ML). La seconda opzione sta usando a Istanza notebook SageMaker, che è un'istanza di calcolo ML completamente gestita che esegue l'app Jupyter Notebook.
In questo post presentiamo una soluzione RAG che aumenta la conoscenza del modello con dati aggiuntivi provenienti da fonti di conoscenza esterne per fornire risposte più accurate specifiche per un dominio personalizzato. Utilizziamo un singolo notebook SageMaker Studio in esecuzione su un file ml.g5.2xlarge
istanza (1 GPU A10G) e Lama 2 7b chatta hf, la versione perfezionata di Llama 2 7b, ottimizzata per i casi d'uso dei dialoghi di Hugging Face Hub. Utilizziamo due post del blog AWS Media & Entertainment come dati esterni di esempio, che convertiamo in incorporamenti con il file BAAI/bge-small-it-v1.5 incastri. Archiviamo gli incorporamenti in pigna, un database basato su vettori che offre ricerca ad alte prestazioni e corrispondenza delle somiglianze. Discuteremo anche di come passare dalla sperimentazione sul notebook alla distribuzione dei modelli sugli endpoint SageMaker per l'inferenza in tempo reale una volta completata la prototipazione. Lo stesso approccio può essere utilizzato con diversi modelli e database vettoriali.
Panoramica della soluzione
Il diagramma seguente illustra l'architettura della soluzione.
L'implementazione della soluzione prevede due passaggi di alto livello: lo sviluppo della soluzione utilizzando i notebook SageMaker Studio e la distribuzione dei modelli per l'inferenza.
Sviluppa la soluzione utilizzando i notebook SageMaker Studio
Completa i seguenti passaggi per iniziare a sviluppare la soluzione:
- Carica il modello di chat Llama-2 7b da Hugging Face Hub nel notebook.
- Crea un modello di richiesta con LangChain e utilizzarlo per creare prompt per il tuo caso d'uso.
- Per 1-2 prompt di esempio, aggiungi testo statico pertinente da documenti esterni come contesto del prompt e valuta se la qualità delle risposte migliora.
- Supponendo che la qualità migliori, implementa il flusso di lavoro di risposta alle domande RAG:
- Raccogli i documenti esterni che possono aiutare il modello a rispondere meglio alle domande nel tuo caso d'uso.
- Carica il modello di incorporamenti BGE e usalo per generare incorporamenti di questi documenti.
- Archivia questi incorporamenti in un indice Pinecone.
- Quando un utente pone una domanda, esegui una ricerca di somiglianza in Pinecone e aggiungi il contenuto dei documenti più simili al contesto della richiesta.
Distribuisci i modelli a SageMaker per l'inferenza su larga scala
Una volta raggiunti i tuoi obiettivi prestazionali, puoi distribuire i modelli su SageMaker per utilizzarli nelle applicazioni di intelligenza artificiale generativa:
- Distribuisci il modello di chat Llama-2 7b su un endpoint in tempo reale SageMaker.
- Distribuire il BAAI/bge-small-it-v1.5 modello di incorporamento su un endpoint in tempo reale SageMaker.
- Utilizza i modelli distribuiti nella tua domanda rispondendo alle applicazioni di intelligenza artificiale generativa.
Nelle sezioni seguenti ti guideremo attraverso le fasi di implementazione di questa soluzione nei notebook SageMaker Studio.
Prerequisiti
Per seguire i passaggi descritti in questo post, devi disporre di un account AWS e di un file Gestione dell'identità e dell'accesso di AWS (IAM) ruolo con autorizzazioni per creare e accedere alle risorse della soluzione. Se sei nuovo in AWS, consulta Crea un account AWS autonomo.
Per utilizzare i notebook SageMaker Studio nel tuo account AWS, è necessario un file dominio SageMaker con un profilo utente dotato delle autorizzazioni per avviare l'app SageMaker Studio. Se non conosci SageMaker Studio, il file Configurazione rapida di Studio è il modo più veloce per iniziare. Con un solo clic, SageMaker fornisce al dominio SageMaker preimpostazioni predefinite, inclusa la configurazione del profilo utente, del ruolo IAM, dell'autenticazione IAM e dell'accesso a Internet pubblico. Il taccuino per questo post presuppone un ml.g5.2xlarge
tipo di istanza. Per rivedere o aumentare la tua quota, apri la console AWS Service Quotas, scegli Servizi AWS nel pannello di navigazione, scegli Amazon Sage Makere fare riferimento al valore per le app Studio KernelGateway in esecuzione ml.g5.2xlarge
le istanze.
Dopo aver confermato il limite della tua quota, devi completare le dipendenze per utilizzare la chat di Llama 2 7b.
La chat di Llama 2 7b è disponibile sotto il file Licenza lama 2. Per accedere a Llama 2 su Hugging Face, devi prima completare alcuni passaggi:
- Crea un account Hugging Face se non ne hai già uno.
- Compila il modulo “Richiedi accesso alla prossima versione di Llama” sul Meta sito web.
- Richiedi l'accesso a Lama 2 7b chiacchierata sul Volto che abbraccia.
Dopo che ti è stato concesso l'accesso, puoi creare un nuovo token di accesso per accedere ai modelli. Per creare un token di accesso, vai al file Impostazioni profilo pagina sul sito web di Hugging Face.
Devi avere un account con Pinecone per usarlo come database vettoriale. Pinecone è disponibile su AWS tramite il file Mercato AWS. Il sito web Pinecone offre anche la possibilità di creare un file account gratuito che viene fornito con le autorizzazioni per creare un singolo indice, che è sufficiente per gli scopi di questo post. Per recuperare le chiavi della Pigna, apri il file Consolle Pigna e scegli Tasti API.
Configurare il notebook e l'ambiente
Per seguire il codice in questo post, apri SageMaker Studio e clona quanto segue Repository GitHub. Quindi, apri il taccuino studio-local-gen-ai/rag/RAG-with-Llama-2-on-Studio.ipynb e scegli l'immagine ottimizzata per GPU PyTorch 2.0.0 Python 3.10, il kernel Python 3 e ml.g5.2xlarge
come tipo di istanza. Se è la prima volta che utilizzi i notebook SageMaker Studio, fai riferimento a Crea o apri un notebook Amazon SageMaker Studio.
Per configurare l'ambiente di sviluppo, è necessario installare le librerie Python necessarie, come dimostrato nel codice seguente:
%%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
Caricare il modello e il tokenizzatore pre-addestrati
Dopo aver importato le librerie richieste, è possibile caricare il file Lama-2 7b chiacchierata modello insieme ai tokenizzatori corrispondenti di Hugging Face. Questi artefatti del modello caricati vengono archiviati nella directory locale all'interno di SageMaker Studio. Ciò ti consente di ricaricarli rapidamente in memoria ogni volta che devi riprendere il lavoro in un momento diverso.
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)
Fai una domanda che richieda informazioni aggiornate
Ora puoi iniziare a utilizzare il modello e porre domande. I modelli di chat di Llama-2 prevedono che la richiesta aderisca al seguente formato:
<s>[INST] <<SYS>>
system_prompt
<<SYS>>
{{ user_message }} [/INST]
È possibile utilizzare il Modello Prompt da LangChain per creare una ricetta basata sul formato del prompt, in modo da poter creare facilmente i prompt in futuro:
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'] )
Poniamo al modello una domanda che necessita di informazioni recenti dal 2023. Puoi utilizzare LangChain e in particolare il LLMChain tipo di catena e passare come parametri il LLM, il modello di prompt creato in precedenza e la domanda:
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)
Otteniamo la seguente risposta generata:
Grazie per avermi contattato! L'AWS M&E Customer Experience Center di New York City è attualmente chiuso alle visite a causa della pandemia di COVID-19. Tuttavia, puoi controllare il loro sito web ufficiale o gli account sui social media per eventuali aggiornamenti su quando il centro riaprirà. Nel frattempo, puoi esplorare i loro tour virtuali e le risorse disponibili online.
Migliora la risposta aggiungendo contesto al prompt
La risposta che abbiamo generato non è del tutto vera. Vediamo se possiamo migliorarlo fornendo un po' di contesto. Puoi aggiungere un estratto dal post AWS annuncia il nuovo M&E Customer Experience Center a New York, che include gli aggiornamenti sul tema dal 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."""
Utilizza nuovamente LLMChain e passa il testo precedente come contesto:
context_response = llm_chain.predict(context=context, question=question)
print(context_response)
La nuova risposta risponde alla domanda con informazioni aggiornate:
Puoi visitare l'AWS M&E Customer Experience Center a New York City a partire dal 13 novembre. Invia un'e-mail a AWS-MediaEnt-CXC@amazon.com per programmare una visita.
Abbiamo confermato che aggiungendo il giusto contesto, le prestazioni del modello migliorano. Ora puoi concentrare i tuoi sforzi sulla ricerca e sull'aggiunta del contesto giusto per la domanda posta. In altre parole, implementare RAG.
Implementa la risposta alle domande RAG con incorporamenti BGE e Pinecone
A questo punto è necessario decidere le fonti di informazione per migliorare la conoscenza del modello. Queste origini potrebbero essere pagine Web o documenti interni all'interno della tua organizzazione oppure origini dati disponibili pubblicamente. Ai fini di questo post e per ragioni di semplicità, abbiamo scelto due post del blog AWS pubblicati nel 2023:
Questi post sono già disponibili come documenti PDF nella directory dei progetti dati in SageMaker Studio per un accesso rapido. Per dividere i documenti in parti gestibili, è possibile utilizzare il file RicorsivoCharacterTextSplitter metodo da 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)
Successivamente, utilizzare il modello di incorporamento BGE bge-small-it creato dalla Accademia di Intelligenza Artificiale di Pechino (BAAI) disponibile su Hugging Face per generare gli incorporamenti di questi blocchi. Scarica e salva il modello nella directory locale in Studio. Usiamo fp32 in modo che possa essere eseguito sulla CPU dell'istanza.
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()
Utilizza il codice seguente per creare una funzione embedding_generator, che accetta i blocchi del documento come input e genera gli incorporamenti utilizzando il modello BGE:
# 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 questo post mostriamo un flusso di lavoro RAG utilizzando Pinecone, un sistema gestito e nativo del cloud banca dati vettoriale che offre anche un API per la ricerca di similarità. Sei libero di riscrivere il seguente codice per utilizzare il tuo database vettoriale preferito.
Inizializziamo a Client Python Pigna e creare un nuovo indice di ricerca vettoriale utilizzando la lunghezza di output del modello di incorporamento. Utilizziamo la classe Pinecone integrata di LangChain per acquisire gli incorporamenti che abbiamo creato nel passaggio precedente. Sono necessari tre parametri: i documenti da acquisire, la funzione di generazione degli incorporamenti e il nome dell'indice Pinecone.
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
)
Con il modello di chat Llama-2 7B caricato in memoria e gli incorporamenti integrati nell'indice Pinecone, ora puoi combinare questi elementi per migliorare le risposte di Llama 2 per il nostro caso d'uso di risposta alle domande. Per raggiungere questo obiettivo, puoi utilizzare LangChain RecuperoQA, che aumenta il prompt iniziale con i documenti più simili dell'archivio vettoriale. IMPOSTANDO return_source_documents=True
, ottieni visibilità sui documenti esatti utilizzati per generare la risposta come parte della risposta, consentendoti di verificarne l'accuratezza.
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))
Otteniamo la seguente risposta:
D: Quando posso visitare l'AWS M&E Customer Experience Center a New York City?
R: Sono felice di aiutarti! A seconda del contesto, l'AWS M&E Customer Experience Center di New York City sarà disponibile per le visite a partire dal 13 novembre. Puoi inviare un'e-mail a AWS-MediaEnt-CXC@amazon.com per programmare una visita.'
Documenti di origine:
{'page': 4.0, 'source': 'data/AWS annuncia il nuovo M&E Customer Experience Center a New York City _ AWS for M&E Blog.pdf'}
{'page': 2.0, 'source': 'data/AWS annuncia il nuovo M&E Customer Experience Center a New York City _ AWS for M&E Blog.pdf'}
Proviamo con una domanda diversa:
question2=" How many awards have AWS Media Services won in 2023?"
print_response(llm_qa_chain(question2))
Otteniamo la seguente risposta:
D: Quanti premi ha vinto AWS Media Services nel 2023?
R: Secondo il post del blog, AWS Media Services ha vinto cinque premi di settore nel 2023."
Documenti di origine:
{'page': 0.0, 'source': 'data/AWS Media Services ha ricevuto riconoscimenti di settore _ Blog AWS for M&E.pdf'}
{'page': 1.0, 'source': 'data/AWS Media Services ha ricevuto riconoscimenti di settore _ Blog AWS for M&E.pdf'}
Dopo aver stabilito un livello di confidenza sufficiente, è possibile distribuire i modelli in Endpoint SageMaker per inferenza in tempo reale. Questi endpoint sono completamente gestiti e offrono supporto per la scalabilità automatica.
SageMaker offre inferenza di modelli di grandi dimensioni utilizzando contenitori LMI (Large Model Inference), che possiamo utilizzare per distribuire i nostri modelli. Questi contenitori sono dotati di librerie open source preinstallate come DeepSpeed, che facilitano l'implementazione di tecniche di miglioramento delle prestazioni come il parallelismo tensore durante l'inferenza. Inoltre, utilizzano DJLServing come server modello integrato precostruito. DJLServing è una soluzione di model-serving universale e ad alte prestazioni che offre supporto per il batching dinamico e il ridimensionamento automatico dei lavoratori, aumentando così la produttività.
Nel nostro approccio, utilizziamo SageMaker LMI con DJLServing e DeepSpeed Inference per distribuire i modelli Llama-2-chat 7b e BGE agli endpoint SageMaker in esecuzione su ml.g5.2xlarge
istanze, consentendo l'inferenza in tempo reale. Se desideri seguire personalmente questi passaggi, fai riferimento alla documentazione allegata taccuino per le istruzioni dettagliate.
Ne avrai bisogno di due ml.g5.2xlarge
istanze per la distribuzione. Per rivedere o aumentare la tua quota, apri la console AWS Service Quotas, scegli Servizi AWS nel pannello di navigazione, scegli Amazon Sage Makere fare riferimento al valore di ml.g5.2xlarge
per l'utilizzo dell'endpoint.
I passaggi seguenti descrivono il processo di distribuzione di modelli personalizzati per il flusso di lavoro RAG su un endpoint SageMaker:
- Distribuire il Lama-2 7b modello di chat su un endpoint in tempo reale SageMaker in esecuzione su un file
ml.g5.2xlarge
esempio per la generazione rapida di testo. - Distribuire il BAAI/bge-small-it-v1.5 modello di incorporamento su un endpoint in tempo reale SageMaker in esecuzione su un file
ml.g5.2xlarge
esempio. In alternativa, puoi distribuire il tuo modello di incorporamento. - Fai una domanda e usa LangChain RecuperoQA per aumentare il prompt con i documenti più simili di Pinecone, questa volta utilizzando il modello distribuito nell'endpoint in tempo reale 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}
)
- Utilizza LangChain per verificare che l'endpoint SageMaker con il modello di incorporamento funzioni come previsto in modo che possa essere utilizzato per l'acquisizione futura di documenti:
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']
ripulire
Completa i seguenti passaggi per ripulire le tue risorse:
- Una volta finito di lavorare sul tuo notebook SageMaker Studio, assicurati di spegnere il
ml.g5.2xlarge
esempio per evitare eventuali addebiti scegliendo l'icona di arresto. Puoi anche impostare script di configurazione del ciclo di vita per spegnere automaticamente le risorse quando non vengono utilizzate.
- Se hai distribuito i modelli sugli endpoint SageMaker, esegui il codice seguente alla fine del notebook per eliminare gli endpoint:
#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
)
- Infine, esegui la riga seguente per eliminare l'indice Pinecone:
pinecone.delete_index(index_name)
Conclusione
I notebook SageMaker forniscono un modo semplice per iniziare il tuo viaggio con Retrieval Augmented Generation. Ti consentono di sperimentare in modo interattivo vari modelli, configurazioni e domande senza creare infrastrutture aggiuntive. In questo post, abbiamo mostrato come migliorare le prestazioni della chat di Llama 2 7b in un caso d'uso di risposta a domande utilizzando LangChain, il modello di incorporamento BGE e Pinecone. Per iniziare, avvia SageMaker Studio ed esegui il file taccuino disponibile di seguito Repository GitHub. Per favore condividi i tuoi pensieri nella sezione commenti!
Circa gli autori
Anastasia Zeveleka è un Machine Learning and AI Specialist Solutions Architect presso AWS. Lavora con i clienti in EMEA e li aiuta a progettare soluzioni di machine learning su larga scala utilizzando i servizi AWS. Ha lavorato a progetti in diversi domini tra cui Natural Language Processing (NLP), MLOps e strumenti Low Code No Code.
Pranav Murthy è un AI/ML Specialist Solutions Architect presso AWS. Il suo obiettivo è aiutare i clienti a creare, addestrare, distribuire e migrare carichi di lavoro di machine learning (ML) su SageMaker. In precedenza ha lavorato nel settore dei semiconduttori sviluppando modelli di visione artificiale (CV) di grandi dimensioni e di elaborazione del linguaggio naturale (NLP) per migliorare i processi dei semiconduttori. Nel tempo libero gli piace giocare a scacchi e viaggiare.
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- PlatoData.Network Generativo verticale Ai. Potenzia te stesso. Accedi qui.
- PlatoAiStream. Intelligenza Web3. Conoscenza amplificata. Accedi qui.
- PlatoneESG. Carbonio, Tecnologia pulita, Energia, Ambiente, Solare, Gestione dei rifiuti. Accedi qui.
- Platone Salute. Intelligence sulle biotecnologie e sulle sperimentazioni cliniche. Accedi qui.
- Fonte: 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/
- :ha
- :È
- :non
- :Dove
- $ SU
- 1
- 10
- 100
- 13
- 16
- 2023
- 33
- 500
- 7
- a
- AC
- Academy
- accesso
- Accesso ai dati
- accessibile
- Secondo
- Il mio account
- conti
- precisione
- preciso
- Raggiungere
- aggiungere
- l'aggiunta di
- aggiuntivo
- Inoltre
- aderire
- ancora
- AI
- AI / ML
- consentire
- Consentire
- consente
- lungo
- già
- anche
- Amazon
- Amazon Sage Maker
- Amazon Sage Maker Studio
- Amazon Web Services
- Amazon Web Services (AWS)
- an
- ed
- annuncia
- rispondere
- risposte
- in qualsiasi
- API
- App
- applicazioni
- approccio
- applicazioni
- architettura
- SONO
- artificiale
- intelligenza artificiale
- AS
- chiedere
- valutare
- Assistant
- Associazione
- assume
- At
- aumentare
- aumentata
- aumenti
- Autenticazione
- auto
- automaticamente
- disponibile
- evitare
- assegnato
- premi
- AWS
- basato
- BE
- stato
- prima
- MIGLIORE
- Meglio
- Blog
- Post di Blog
- stile di vita
- BROADCAST
- costruire
- incassato
- by
- Materiale
- Custodie
- casi
- centro
- catena
- Catene
- sfide
- oneri
- dai un'occhiata
- Scacchi
- Scegli
- la scelta
- scelto
- Città
- classe
- cavedano
- clicca
- chiuso
- codice
- collaboreranno
- colleghi
- COM
- combinare
- combina
- Venire
- viene
- Commenti
- completamento di una
- Calcolare
- computer
- Visione computerizzata
- conciso
- fiducia
- Configurazione
- CONFERMATO
- consiste
- consolle
- Tecnologie Container
- contenuto
- contesto
- continua
- Convenzione
- Conversazioni
- convertire
- Corrispondente
- potuto
- COVID-19
- Pandemia di COVID-19
- creare
- creato
- Creazione
- Attualmente
- costume
- cliente
- esperienza del cliente
- Clienti
- dati
- Banca Dati
- banche dati
- decide
- Predefinito
- deliziare
- dimostrare
- dimostrato
- dipendenze
- schierare
- schierato
- distribuzione
- deployment
- dettagliati
- in via di sviluppo
- Mercato
- dispositivo
- dialogo
- diverso
- discutere
- distribuzione
- dividere
- documento
- documenti
- dominio
- domini
- don
- Dont
- giù
- scaricare
- dovuto
- durante
- dinamico
- e
- In precedenza
- facilmente
- sforzi
- elementi
- incorporamento
- Abilita
- consentendo
- fine
- endpoint
- impegnato
- accrescere
- Intrattenimento
- interamente
- Ambiente
- attrezzato
- sviluppate
- eventi
- EVER
- evoluzione
- esempio
- esiste
- attenderti
- previsto
- esperienza
- esperimento
- esplora
- esterno
- estratto
- Faccia
- facilitando
- FAST
- più veloce
- Caratteristiche
- pochi
- finale
- ricerca
- Nome
- prima volta
- cinque
- Focus
- si concentra
- seguire
- i seguenti
- Nel
- modulo
- formato
- Avanti
- Gratis
- amichevole
- da
- completamente
- function
- funzionale
- futuro
- Guadagno
- generare
- generato
- genera
- ELETTRICA
- generativo
- AI generativa
- generatore
- ottenere
- Globalmente
- Obiettivi
- andando
- GPU
- concesso
- contento
- Avere
- avendo
- he
- Aiuto
- utile
- aiutare
- aiuta
- alto livello
- Alte prestazioni
- superiore
- il suo
- Colpire
- Come
- Tutorial
- Tuttavia
- HTML
- HTTPS
- Hub
- abbracciare il viso
- i
- IBC
- ICON
- ID
- Identità
- if
- illustra
- Immagine
- realizzare
- implementazione
- Implementazione
- importare
- competenze
- migliorata
- migliora
- in
- In altre
- inclusi
- Compreso
- Aumento
- crescente
- Index
- industria
- Eventi
- informazioni
- Infrastruttura
- inizialmente
- ingresso
- install
- esempio
- istruzioni
- integrato
- Intelligence
- interconnesso
- interno
- Internazionale
- Internet
- accesso ad Internet
- ai miglioramenti
- IT
- SUO
- viaggio
- jpg
- json
- ad appena
- mantenere
- Tasti
- Sapere
- conoscenze
- Lingua
- grandi
- lanciare
- apprendimento
- a sinistra
- Lunghezza
- Livello
- biblioteche
- piace
- LIMITE
- linea
- Lama
- LLM
- caricare
- caricatore
- locale
- Basso
- macchina
- machine learning
- make
- maneggevole
- gestito
- molti
- corrispondenza
- massimo
- intanto
- Media
- Memorie
- Meta
- Metadati
- metodo
- migrare
- ML
- MLOp
- modello
- modelli
- Scopri di più
- maggior parte
- devono obbligatoriamente:
- NAB
- Nome
- il
- Naturale
- Elaborazione del linguaggio naturale
- Navigare
- Navigazione
- necessaria
- Bisogno
- esigenze
- New
- Nuovo accesso
- New York
- New York City
- GENERAZIONE
- nlp
- no
- taccuino
- Novembre
- adesso
- of
- offrire
- Offerte
- ufficiale
- Sito ufficiale
- on
- ONE
- online
- aprire
- open source
- ottimizzati
- Opzione
- Opzioni
- or
- organizzazione
- OS
- Altro
- nostro
- su
- contorno
- produzione
- uscite
- proprio
- sentiero
- pagina
- pandemia
- vetro
- parametri
- parte
- partner
- passare
- Eseguire
- performance
- permessi
- fase
- pezzi
- Platone
- Platone Data Intelligence
- PlatoneDati
- gioco
- per favore
- Post
- Post
- preferito
- presenti
- precedente
- in precedenza
- processi
- i processi
- lavorazione
- Profilo
- progetto
- progetti
- prototipo
- prototipazione
- fornire
- fornitura
- la percezione
- pubblicamente
- pubblicato
- fini
- Python
- pytorch
- qualità
- ricerca
- domanda
- Domande
- Presto
- rapidamente
- veloce
- rapidamente
- raggiungendo
- tempo reale
- recente
- ricetta
- riferimento
- riferimento
- per quanto riguarda
- pertinente
- riaprire
- richiedere
- necessario
- Requisiti
- richiede
- Risorse
- risposta
- risposte
- colpevole
- curriculum vitae
- ritorno
- recensioni
- destra
- Ruolo
- Correre
- running
- sagemaker
- sake
- stesso
- Risparmi
- salvato
- dire
- Scala
- scala
- programma
- programmazione
- Cerca
- Ricerche
- Secondo
- sezioni
- vedere
- semiconduttore
- inviare
- inviato
- server
- servizio
- Servizi
- set
- regolazione
- Condividi
- lei
- mostrare attraverso le sue creazioni
- in mostra
- ha mostrato
- chiuso
- fermare
- simile
- semplicità
- singolo
- Taglia
- So
- Social
- Social Media
- soluzione
- Soluzioni
- alcuni
- Fonte
- fonti
- specialista
- specifico
- in particolare
- standalone
- inizia a
- iniziato
- Di partenza
- statico
- step
- Passi
- Fermare
- Tornare al suo account
- memorizzati
- negozi
- lineare
- studio
- tale
- sufficiente
- supporto
- supportato
- sicuro
- rapidamente
- prende
- Task
- task
- tecniche
- Tecnologia
- modello
- testo
- di
- che
- Il
- loro
- Li
- Là.
- in tal modo
- Strumenti Bowman per analizzare le seguenti finiture:
- di
- questo
- tre
- Attraverso
- portata
- tempo
- a
- token
- tokenize
- strumenti
- argomento
- torcia
- tour
- Treni
- trasformatori
- transizione
- Di viaggio
- vero
- prova
- seconda
- Digitare
- Tipi di
- tipico
- tipicamente
- per
- universale
- fino a quando
- up-to-date
- Aggiornamenti
- Impiego
- uso
- caso d'uso
- utilizzato
- Utente
- Esperienza da Utente
- usa
- utilizzando
- utilizzare
- APPREZZIAMO
- vario
- Convalida
- verificare
- versione
- via
- spettatori
- virtuale
- tour virtuali
- visibilità
- visione
- Visita
- Visite
- camminare
- volere
- Modo..
- we
- sito web
- servizi web
- Sito web
- Settimane
- sono stati
- quando
- ogni volta che
- quale
- while
- volere
- con
- entro
- senza
- Ha vinto
- parole
- Lavora
- lavorato
- lavoratore
- flusso di lavoro
- lavoro
- lavori
- anno
- anni
- York
- Tu
- Trasferimento da aeroporto a Sharm
- te stesso
- zefiro