Nota

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

La creazione di applicazioni con LLM prevede più passaggi:

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

Prerequisiti

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:

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:

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:

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:

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:

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.

  1. Fare clic su Azioni rapide AI per avviare le azioni rapide AI dalla sessione notebook.

    immagine

  2. Accedi al catalogo modelli LLM.

    immagine

  3. Fare clic su Distribuzioni e su Crea distribuzione.

    immagine

  4. Nella pagina Distribuisci modello, immettere i dettagli richiesti per creare una distribuzione modello.

    immagine

  5. Una volta creato il modello, è possibile visualizzare e testare il modello distribuito.

    immagine

  6. Crea la valutazione per il modello distribuito.

    immagine

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. 

Conferme

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.