Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Integra LangChain, OCI Data Science Notebook, OCI con OpenSearch e OCI Generative AI per accelerare lo sviluppo LLM per RAG e la ricerca conversazionale
Introduzione
In questa esercitazione verrà illustrato come LangChain, Oracle Cloud Infrastructure (OCI) Data Science Notebook, OCI con OpenSearch, OCI Data Science AI Quick Actions (AI Quick Actions) e il servizio OCI Generative AI si integrano perfettamente insieme per semplificare lo sviluppo di applicazioni LLM (Large Language Models). Questi strumenti accelerano i flussi di lavoro, migliorano la produttività e consentono un'implementazione più rapida di soluzioni AI all'avanguardia su misura per esigenze aziendali specifiche.
Nella prima esercitazione: Esercitazione 1: Integrare OCI Search con OpenSearch e LangChain all'interno di OCI Data Science Notebook, abbiamo discusso dell'impatto trasformativo dell'integrazione di LangChain, OCI con OpenSearch e Hugging Face, dimostrando come queste tecnologie possono funzionare con OCI Data Science Notebook per semplificare lo sviluppo e la produzione di soluzioni di ricerca semantica per le aziende aziendali. Abbiamo dettagliato i passi di configurazione end-to-end per l'impostazione di OCI con OpenSearch, l'impostazione di OCI Data Science Notebook, la configurazione di LangChain con la sessione notebook e la distribuzione di un caso d'uso completo per la ricerca semantica.
Basandosi su queste basi, questa esercitazione si concentra su come una perfetta integrazione tra LangChain, OCI con OpenSearch, AI Quick Actions e OCI Generative AI può accelerare lo sviluppo di applicazioni LLM per casi d'uso aziendali personalizzati. Ci immergeremo in particolare nelle soluzioni di ricerca conversazionale, Retrieval-Augmented Generation (RAG) e chatbot che rispondono alle domande, mostrando come questi strumenti insieme consentano agli sviluppatori di superare le sfide e fornire applicazioni innovative e scalabili con una codifica minima.
Nota: è possibile trovare gli esempi di codice completi per questa esercitazione nel repository degli esempi pubblici qui: OCI OpenSearch Service Code Samples.
Vantaggi dell'approccio integrato
-
Complessità ridotta: la perfetta integrazione tra LangChain, i servizi OCI e i notebook elimina la necessità di pipeline complesse e riduce il carico di lavoro dello sviluppo.
-
Time-to-market più rapido: gli sviluppatori possono creare prototipi, testare e implementare rapidamente le applicazioni, garantendo una distribuzione più rapida del valore agli utenti.
-
Scalabilità e flessibilità: la solida infrastruttura di OCI supporta le crescenti esigenze delle applicazioni aziendali, mentre il design modulare di LangChain consente una facile espansione.
-
Maggiore produttività: automatizzando le attività ripetitive e semplificando i flussi di lavoro, gli sviluppatori possono concentrarsi sull'innovazione anziché sulle sfide operative.
La creazione di applicazioni con LLM prevede più passaggi:
- Accesso e distribuzione di modelli ad alte prestazioni.
- Ottimizzazione dei modelli con dati specifici del dominio.
- Integrazione di sistemi di recupero per l'esecuzione efficiente di query sui dati.
- Test, valutazione e implementazione di modelli su larga scala.
Ogni fase può richiedere strumenti specializzati, pipeline complesse e sforzi di sviluppo significativi. Integrando LangChain con i servizi OCI, gli sviluppatori possono affrontare queste sfide in modo olistico, riducendo la complessità e migliorando la produttività.
Obiettivi
-
Scopri come funziona LangChain, OCI con OpenSearch, OCI Data Science Notebook, OCI Generative AI e AI Quick Actions.
-
Scopri come distribuire un modello LLM utilizzando AI Quick Actions.
-
Sfrutta l'integrazione LangChain utilizzando OCI con OpenSearch, il servizio GenAI OCI e OCI Data Science per accelerare lo sviluppo di applicazioni LLM.
Prerequisiti
-
Creare un cluster OpenSearch con versione 2.11 o successiva. Per ulteriori informazioni, vedere Cerca e visualizza i dati utilizzando Oracle Cloud Infrastructure Search with OpenSearch.
-
Creare una sessione notebook di OCI Data Science. Per ulteriori informazioni, vedere Panoramica di Data Science. È inoltre possibile leggere la prima esercitazione: Integra OCI con OpenSearch e LangChain all'interno di OCI Data Science Notebook oppure seguire Imposta notebook Data Science nella tenancy.
Task 1: Creare un progetto OCI Data Science e configurare i notebook
OCI Data Science Notebook offre una piattaforma flessibile e interattiva per lo sviluppo, il test e la distribuzione di applicazioni AI. L'integrazione dei notebook con i servizi OCI crea un'esperienza di sviluppo trasparente, riducendo la necessità di strumenti esterni. Con i notebook è possibile:
- Applicazioni prototipo: prova con LangChain, OCI Generative AI e OCI con integrazioni OpenSearch.
- Esegui workflow: esegue workflow di ottimizzazione, distribuzione e recupero.
- Collabora: consente di condividere e iterare progetti con membri del team.
Per creare un progetto OCI Data Science e configurare il notebook, vedere Task 2: Launch a Jupyter Notebook in OCI Data Science.
Task 2: installare LangChain
LangChain è uno dei framework più versatili per lo sviluppo di applicazioni basate su LLM. Il suo design modulare e l'ampia libreria offrono robuste astrazioni per:
- Gestione dei prompt: semplifica e ottimizza la creazione dei prompt per casi d'uso diversi.
- Supporto degli agenti: crea agenti intelligenti che interagiscono con API o strumenti esterni.
- Interfacce dati: integra origini dati, sistemi di recupero e aree di memorizzazione vettoriali.
La capacità di LangChain di interfacciarsi perfettamente con servizi cloud come OCI Generative AI, OCI con OpenSearch e OCI Data Science migliora la sua utility per la creazione di applicazioni di livello Enterprise. La flessibilità di LangChain consente agli sviluppatori di prototipare e iterare rapidamente le applicazioni, rendendolo ideale per RAG e soluzioni di ricerca conversazionale. Le sue integrazioni con i servizi OCI semplificano ulteriormente il processo di sviluppo, consentendo agli sviluppatori di concentrarsi sulla fornitura di valore. Nella prima esercitazione abbiamo parlato di come configurare LangChain con l'ambiente notebook e abbiamo illustrato un esempio end-to-end di come utilizzare LangChain per elaborare i dati non strutturati, includerli in OCI con OpenSearch ed eseguire la ricerca semantica.
Eseguire il comando seguente nel notebook per configurare LangChain e altre librerie di chiavi.
!pip install -U oci oracle_ads langchain langchain-community langchain-huggingface opensearch-py pypdf
Task 3: utilizzare LangChain per eseguire la pre-elaborazione e il chunk dei dati
Usare il codice Python seguente.
import os
from langchain.document_loaders import PyPDFLoader, CSVLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
# Step 1: Load PDF and CSV Documents
def load_documents():
# Load PDF Document
pdf_loader = PyPDFLoader("data/sample_document.pdf")
pdf_documents = pdf_loader.load()
# Load CSV Document
csv_loader = CSVLoader(file_path="data/sample_data.csv")
csv_documents = csv_loader.load()
# Combine both sets of documents
all_documents = pdf_documents + csv_documents
return all_documents
# Step 2: Split the documents into smaller chunks for better processing
def split_documents(documents):
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=100
)
split_docs = text_splitter.split_documents(documents)
return split_docs
# Load and process documents
documents = load_documents()
split_docs = split_documents(documents)
Task 4: Configurare il modello di incorporamento con OCI Generative AI Cohere
Il servizio AI generativa OCI fornisce una piattaforma completamente gestita per l'accesso a LLM all'avanguardia, come Cohere e Meta LLaMA-3. Questo server supporta i seguenti modelli:
- Modelli su richiesta: accedere ai modelli pre-addestrati pronti per l'inferenza.
- Modelli personalizzati: ottimizza gli LLM con dati specifici del dominio per risposte personalizzate.
- Cluster AI scalabili: sfrutta l'infrastruttura ad alte prestazioni per implementazioni su larga scala.
La principale differenza tra AI Quick Actions e OCI Generative AI è che AI Quick Actions ha un catalogo di modelli più ampio e offre molta più flessibilità con formazione, valutazione, ottimizzazione e gestione del ciclo di vita dei modelli. Il principale vantaggio dell'AI generativa OCI è che non è necessario possedere l'infrastruttura che ospita il modello. È possibile utilizzare l'endpoint generico per uno qualsiasi dei modelli disponibili e vengono addebitati solo in base al numero di richieste e al numero di token. Al contrario, con le azioni rapide AI, mentre hai una maggiore autonomia sul tuo LLM o su qualsiasi orchestrazione e ciclo di vita del flusso di lavoro AI / ML, paghi solo per il costo dell'infrastruttura e hai richieste illimitate.
Inoltre, il servizio OCI Generative AI ha modelli di incorporamento aziendali pronti all'uso come il modello Cohere Embed V3, creato per i dati aziendali e noto per offrire prestazioni migliori rispetto ad altri modelli di trasformatori di frasi pre-addestrati dal volto abbracciato, in particolare sui dati personalizzati. È sufficiente richiamare questo modello per generare l'incorporamento per i dati. Pertanto, riteniamo che la combinazione sia dell'AI generativa OCI che delle azioni rapide dell'AI possa offrirti il miglior valore per la tua applicazione aziendale. È possibile richiamare l'endpoint del modello di incorporamento Cohere dell'AI generativa OCI già distribuito per incorporare i dati e utilizzare le azioni rapide dell'AI per ottimizzare, testare, valutare e distribuire il modello.
LangChain si integra perfettamente con l'AI generativa OCI e l'AI Quick Action, consentendo agli sviluppatori di richiamare i modelli direttamente dal proprio ambiente OCI. Con una configurazione minima, gli sviluppatori possono iniziare a utilizzare modelli pre-addestrati o perfezionati.
Di seguito è riportato un esempio di come utilizzare l'integrazione LangChain per richiamare il modello V3 incorporato in Cohere e utilizzarlo per incorporare i documenti durante l'inclusione dei dati.
from langchain_community.embeddings import OCIGenAIEmbeddings
oci_cohere_embedding_model = OCIGenAIEmbeddings(
model_id="cohere.embed-english-v3.0",
service_endpoint="https://inference.generativeai.us-chicago-1.oci.oraclecloud.com",
compartment_id="<>YOUR-COMPARTMENT-OCID",
auth_type="RESOURCE_PRINCIPAL",
model_kwargs={"input_type": "SEARCH_DOCUMENT"}
)
Task 5: configurare OCI con OpenSearch e LangChain per abilitare i workflow RAG
RAG si basa su sistemi di recupero rapidi e accurati. OCI con il servizio OpenSearch fornisce l'infrastruttura per:
- Dati indici e query: consente di memorizzare set di dati di grandi dimensioni e di recuperare rapidamente le informazioni pertinenti.
- Ricerca semantica: migliora l'accuratezza del recupero utilizzando le incorporazioni.
- Scalabilità: gestisci l'espansione dei set di dati senza compromettere le prestazioni.
La funzionalità di area di memorizzazione vettoriale di LangChain si integra con OCI con OpenSearch per supportare i flussi di lavoro RAG. Gli sviluppatori possono utilizzare le integrazioni dell'AI generativa OCI per indicizzare e recuperare i dati in modo efficiente da OCI con OpenSearch.
Usare il codice Python seguente.
from langchain.vectorstores import OpenSearchVectorSearch
import oci
# setup your script to use Resource principal for authentication
auth_provider = oci.auth.signers.get_resource_principals_signer()
auth = ("username", "password")
AUTH_TYPE="RESOURCE_PRINCIPAL"
opensearch_url="https://amaaaaaallb3......................opensearch.us-ashburn-1.oci.oraclecloud.com:9200" // replace this whole value your opensearch url. Be sure sure to have the :9200 port in your url
# Initialize OpenSearch as the vector database
vector_db = OpenSearchVectorSearch(opensearch_url=opensearch_url,
index_name="<YOUR-INDEX-NAME>",
embedding_function=oci_cohere_embedding_model,
signer=auth_provider,
auth_type="RESOURCE_PRINCIPAL",
http_auth=auth)
Task 6: Inclusione dei dati
Utilizzare il seguente codice Python per includere i dati.
from langchain.vectorstores import OpenSearchVectorSearch
import oci
from tqdm import tqdm
batch_size=100
documents = load_documents() # function defined above feel free to or define a new one to process documents
document_chunks = split_documents(documents) // function defined above feel free to edit
index_name= <YOUR-INDEX-NAME>
# Ingest documents in batches
for i in tqdm(range(0, len(document_chunks), batch_size), desc="Ingesting batches"):
batch = document_chunks[i:i + batch_size]
vector_db.add_texts(texts=batch,
bulk_size=batch_size,
embedding=embedding_model,
opensearch_url=opensearch_url,
index_name= index_name,
signer=auth_provider,
auth_type=AUTH_TYPE,
http_auth=("username", "password"))
#refresh index
vector_db.client.indices.refresh(index=index_name)
Task 7: configurare LLM per RAG con LangChain
Le azioni rapide di AI in OCI Data Science eliminano la complessità della distribuzione e della gestione dei LLM. Fornisce un'interfaccia senza codice per:
- Distribuzione dei modelli: distribuisce modelli pre-addestrati o perfezionati come endpoint HTTP.
- Ottimizzazione: forma i modelli con set di dati personalizzati per migliorare le prestazioni specifiche del dominio.
- Valutazione: esegue il test dei modelli utilizzando metriche quali ROUGE e BERTScore.
Le azioni rapide di AI sono facili da usare e accessibili tramite l'ambiente notebook OCI Data Science. Fornisce una grande quantità di flessibilità. Ad esempio, puoi utilizzare i data set memorizzati in OCI Object Storage o il tuo notebook locale per addestrare, ottimizzare o valutare il tuo modello. È anche una soluzione molto conveniente in quanto non ci sono costi aggiuntivi oltre i costi di calcolo e storage sottostanti. Ancora più importante, puoi accedere a un catalogo di modelli controllati disponibili in AI Quick Actions, pronti per la distribuzione con pochi clic. Inoltre, hai la flessibilità di perfezionare e valutare qualsiasi di questi modelli sul tuo set di dati personalizzato senza scrivere alcun codice. Per non parlare dell'opzione di portare gli artifact del modello e distribuirli semplicemente con le azioni rapide AI senza doversi preoccupare delle complessità delle infrastrutture. Infine, è possibile utilizzare l'interfaccia prompt integrata per testare e valutare le prestazioni del modello distribuito.
L'azione rapida AI è disponibile nella sessione notebook di OCI Data Science. Per utilizzare le azioni rapide AI, assicurarsi di impostare i criteri necessari nella tenancy. Per ulteriori informazioni, vedere Criteri di azioni rapide AI.
-
Fare clic su Azioni rapide AI per avviare le azioni rapide AI dalla sessione notebook.
-
Accedi al catalogo modelli LLM.
-
Fare clic su Distribuzioni e su Crea distribuzione.
-
Nella pagina Distribuisci modello, immettere i dettagli richiesti per creare una distribuzione modello.
-
Una volta creato il modello, è possibile visualizzare e testare il modello distribuito.
-
Crea la valutazione per il modello distribuito.
Eseguire il codice seguente per utilizzare l'integrazione LangChain per richiamare un modello LLM distribuito per la risposta alle domande. In questo caso, utilizzeremo il modello LLM distribuito con AI Quick Actions, chiamando il suo endpoint di previsione come segue:
import ads
from langchain_community.llms import OCIModelDeploymentLLM
ads.set_auth("resource_principal")
endpoint = "https://modeldeployment.us-ashburn-1.oci.customer-oci.com/ocid1.datasciencemodeldeployment.oc1.iad.am....................../predict"
oads_llm = OCIModelDeploymentLLM(
endpoint=endpoint,
model="odsc-llm",
model_kwargs={"temperature": 0, "max_tokens": 500, 'top_p': 1.0, 'top_k': 1}
)
#test the invoke method to make sure model is deployed and active
oads_llm.invoke("who was the first president of the united states?")
Task 8: Esegui ricerca conversazione e RAG
Utilizzare il seguente codice Python per eseguire la ricerca delle conversazioni e l'aggregazione RAG.
# Create a retriever from the OpenSearch vector database
retriever = vector_db.as_retriever()
# Load a QA chain that combines the documents and generates an answer
combine_documents_chain = load_qa_chain(oads_llm, chain_type="stuff")
# Create the RetrievalQA chain
qa_chain = RetrievalQA(combine_documents_chain=combine_documents_chain, retriever=retriever)
# Example query
query="What was Notre Dame's first college? be explicit"
response = qa_chain.run(query)
print("Answer:", response)
L'intero codice end-to-end per questa applicazione RAG è disponibile qui: Blocco appunti di esempio del servizio OCI OpenSearch. L'intero repository di GitHub per questa esercitazione è disponibile qui: opensearch-integration-with-langchain.
Passi successivi
L'integrazione di LangChain, OCI con OpenSearch, AI Quick Actions, OCI Generative AI e notebook offre una soluzione completa per la creazione di applicazioni LLM. Sia che si stiano sviluppando sistemi RAG o strumenti di ricerca conversazionale, queste tecnologie lavorano insieme per fornire soluzioni potenti, scalabili ed efficienti.
Adottando questo approccio integrato, gli sviluppatori possono sfruttare appieno il potenziale dell'intelligenza artificiale generativa e fornire applicazioni trasformative che favoriscono il successo aziendale. Inizia a esplorare questi strumenti oggi stesso e fai il primo passo verso la creazione del futuro delle applicazioni basate sull'intelligenza artificiale.
Collegamenti correlati
Conferme
-
Autori - Landry Kezebou (Senior Machine Learning Engineer, OCI OpenSearch), Sreeni Simhadri (Senior Director of Software Development), Saiprasad Sethuram (Senior Manager Engineering)
-
Contributori - Julien Lehmann (Product Marketing Manager, Oracle Data Platform), Andy Hind (Senior Applications Architect)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.
Per la documentazione del prodotto, visita l'Oracle Help Center.
Integrate LangChain, OCI Data Science Notebook, OCI with OpenSearch and OCI Generative AI to Accelerate LLM Development for RAG and Conversational Search
G25114-01
January 2025