Note:

Integre LangChain, OCI Data Science Notebook, OCI con OpenSearch y OCI Generative AI para acelerar el desarrollo de LLM para RAG y búsqueda conversacional

Introducción

En este tutorial, exploraremos cómo LangChain, Oracle Cloud Infrastructure (OCI) Data Science Notebook, OCI with OpenSearch, OCI Data Science AI Quick Actions (AI Quick Actions) y el servicio OCI Generative AI se integran a la perfección para simplificar el desarrollo de aplicaciones de grandes modelos de lenguaje (LLM). Estas herramientas aceleran los flujos de trabajo, mejoran la productividad y permiten un despliegue más rápido de soluciones de IA de vanguardia adaptadas a necesidades empresariales específicas.

En el primer tutorial: Tutorial 1: Integración de OCI Search con OpenSearch y LangChain en OCI Data Science Notebook, hablamos del impacto transformador de integrar LangChain, OCI con OpenSearch y Hugging Face, demostrando cómo estas tecnologías pueden funcionar con OCI Data Science Notebook para simplificar el desarrollo y la producción de soluciones de búsqueda semántica para empresas. Hemos detallado los pasos de configuración integrales para configurar OCI con OpenSearch, configurar OCI Data Science Notebook, configurar LangChain con sesión de bloc de notas y desplegar un caso de uso completo para la búsqueda semántica.

Basándose en esa base, este tutorial se centra en cómo la integración perfecta en LangChain, OCI con OpenSearch, AI Quick Actions y OCI Generative AI puede acelerar el desarrollo de aplicaciones LLM para casos de uso empresariales personalizados. Nos sumergiremos particularmente en soluciones en torno a la búsqueda conversacional, la generación con recuperación aumentada (RAG) y los bots conversacionales que responden a preguntas, mostrando cómo estas herramientas juntas permiten a los desarrolladores superar los desafíos y ofrecer aplicaciones innovadoras y escalables con una codificación mínima.

Nota: Puede encontrar los ejemplos de código completos para este tutorial en nuestro repositorio de muestras públicas aquí: Muestras de código de servicio de OCI OpenSearch.

Ventajas del enfoque integrado

La creación de aplicaciones con LLM implica varios pasos:

Cada paso puede requerir herramientas especializadas, tuberías complejas y un esfuerzo de desarrollo significativo. Al integrar LangChain con los servicios de OCI, los desarrolladores pueden abordar estos desafíos de forma integral, reduciendo la complejidad y mejorando la productividad.

Objetivos

Requisitos

Tarea 1: Creación de un proyecto de OCI Data Science y configuración de blocs de notas

OCI Data Science Notebook proporciona una plataforma flexible e interactiva para desarrollar, probar e implementar aplicaciones de IA. La integración de blocs de notas con los servicios de OCI crea una experiencia de desarrollo perfecta, lo que reduce la necesidad de herramientas externas. Con los blocs de notas puede:

Para crear un proyecto de OCI Data Science y configurar el bloc de notas, consulte Tarea 2: lanzamiento de un bloc de notas de Jupyter en OCI Data Science.

Tarea 2: Instalación de LangChain

LangChain es uno de los marcos más versátiles para desarrollar aplicaciones basadas en LLM. Su diseño modular y su amplia biblioteca proporcionan abstracciones robustas para:

La capacidad de LangChain para interactuar sin problemas con servicios en la nube como OCI Generative AI, OCI with OpenSearch y OCI Data Science mejora su utilidad para crear aplicaciones empresariales. La flexibilidad de LangChain permite a los desarrolladores crear rápidamente prototipos e iterar en aplicaciones, lo que lo hace ideal para RAG y soluciones de búsqueda conversacional. Sus integraciones con los servicios de OCI optimizan aún más el proceso de desarrollo, lo que permite a los desarrolladores centrarse en ofrecer valor. En el primer tutorial, hablamos sobre cómo configurar LangChain con el entorno de bloc de notas y revisamos un ejemplo completo de cómo utilizar LangChain para procesar datos no estructurados, ingerirlos en OCI con OpenSearch y realizar una búsqueda semántica.

Ejecute el siguiente comando en el bloc de notas para configurar LangChain y otras bibliotecas de claves.

!pip install -U oci oracle_ads langchain langchain-community  langchain-huggingface  opensearch-py pypdf

Tarea 3: Uso de LangChain para preprocesar y fragmentar los datos

Utilice el siguiente código Python.

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)

Tarea 4: Configuración del modelo de embebido con OCI Generative AI Cohere

El servicio OCI Generative AI proporciona una plataforma totalmente gestionada para acceder a LLM de última generación, como Cohere y Meta LLaMA-3. Soporta los siguientes modelos:

La principal diferencia entre AI Quick Actions y OCI Generative AI es que AI Quick Actions tiene un catálogo de modelos más amplio y ofrece mucha más flexibilidad con el entrenamiento, la evaluación, el ajuste fino y la gestión del ciclo de vida del modelo. La principal ventaja de OCI Generative AI es que no tienes que poseer la infraestructura que aloja tu modelo. Puede utilizar el punto final genérico para cualquiera de los modelos disponibles y solo se cobrará en función del número de solicitudes y el número de tokens. Por el contrario, con las acciones rápidas de IA, si bien tiene más autonomía sobre su LLM o cualquier orquestación y ciclo de vida de flujos de trabajo de IA/AA, solo paga por el costo de la infraestructura y tiene solicitudes ilimitadas.

Además, el servicio OCI Generative AI está listo para utilizar modelos de integración empresarial como el modelo Cohere Embed V3, que está diseñado para datos empresariales y se sabe que tiene un mejor rendimiento que otros modelos de transformadores de oraciones preentrenados de cara de abrazo, especialmente en datos personalizados. Solo tiene que llamar a este modelo para generar incrustaciones para los datos. Por lo tanto, creemos que combinar OCI Generative AI y AI Quick Actions puede brindarte el mejor valor para tu aplicación empresarial. Puede llamar al punto final de modelo integrado de OCI Generative AI Cohere ya desplegado para incrustar sus datos y utilizar acciones rápidas de IA para ajustar, probar, evaluar y desplegar su modelo.

LangChain se integra a la perfección con OCI Generative AI y AI Quick Action, lo que permite a los desarrolladores llamar a modelos directamente desde su entorno de OCI. Con una configuración mínima, los desarrolladores pueden empezar a utilizar modelos preentrenados o ajustados.

A continuación se muestra un ejemplo sobre cómo utilizar la integración de LangChain para llamar al modelo V3 embebido de Cohere y utilizarlo para embeber documentos durante la ingesta de datos.

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"}
)

Tarea 5: Configuración de OCI con OpenSearch con LangChain para activar flujos de trabajo de RAG

RAG se basa en sistemas de recuperación rápidos y precisos. OCI con el servicio OpenSearch proporciona la infraestructura para:

La funcionalidad de almacén vectorial de LangChain se integra con OCI con OpenSearch para soportar flujos de trabajo de RAG. Los desarrolladores pueden utilizar incrustaciones de OCI Generative AI para indexar y recuperar datos de forma eficiente desde OCI con OpenSearch.

Utilice el siguiente código Python.

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)

Tarea 6: Ingesta de datos

Utilice el siguiente código Python para ingerir los datos.

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)

Tarea 7: Configuración del LLM para RAG con LangChain

Las acciones rápidas de IA en OCI Data Science eliminan la complejidad de desplegar y gestionar LLM. Proporciona una interfaz sin código para:

AI Quick Actions es fácil de usar y accesible a través del entorno de OCI Data Science Notebook. Proporciona una gran flexibilidad. Por ejemplo, puede utilizar juegos de datos almacenados en OCI Object Storage o en el bloc de notas local para entrenar, ajustar o evaluar el modelo. También es una solución muy rentable, ya que no hay cargos adicionales más allá de los costos de almacenamiento y recursos informáticos subyacentes. Lo más importante es que puedes acceder a un catálogo de modelos examinados disponibles en Acciones rápidas de IA, listos para implementar con solo unos clics. Además, tiene la flexibilidad de ajustar y evaluar cualquiera de estos modelos en su conjunto de datos personalizado sin escribir ningún código. Sin mencionar la opción de traer sus propios artefactos de modelo y simplemente implementar con acciones rápidas de IA sin tener que preocuparse por las complejidades de la infraestructura. Por último, puede utilizar la interfaz de petición de datos incorporada para probar y evaluar el rendimiento del modelo desplegado.

AI Quick Action está disponible en la sesión de OCI Data Science Notebook. Para utilizar las acciones rápidas de AI, asegúrese de configurar las políticas necesarias en su arrendamiento. Para obtener más información, consulte Políticas de acciones rápidas de IA.

  1. Haga clic en Acciones rápidas de IA para iniciar acciones rápidas de IA desde la sesión de bloc de notas.

    image

  2. Acceda al catálogo de modelos de LLM.

    image

  3. Haga clic en Despliegues y en Crear despliegue.

    image

  4. En la página Desplegar modelo, introduzca los detalles necesarios para crear un despliegue de modelo.

    image

  5. Una vez creado el modelo, puede ver y probar el modelo desplegado.

    image

  6. Cree una evaluación para el modelo desplegado.

    image

Ejecute el siguiente código para utilizar la integración LangChain para llamar a un modelo de LLM desplegado para responder a preguntas. En este caso, utilizaremos el modelo LLM desplegado con acciones rápidas de IA, llamando a su punto final de predicción de la siguiente manera:

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?")

Tarea 8: Búsqueda de conversaciones y RAG

Utilice el siguiente código Python para realizar la búsqueda de conversaciones y la 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)

El código completo de extremo a extremo para esta aplicación de RAG se puede encontrar aquí: OCI OpenSearch Service Sample Notebook. El repositorio completo de GitHub para este tutorial se puede encontrar aquí: opensearch-integration-with-langchain.

Pasos Siguientes

La integración de LangChain, OCI con OpenSearch, AI Quick Actions, OCI Generative AI y Notebooks ofrece una solución completa para crear aplicaciones LLM. Ya sea que esté desarrollando sistemas RAG o herramientas de búsqueda conversacional, estas tecnologías trabajan juntas para ofrecer soluciones potentes, escalables y eficientes.

Al adoptar este enfoque integrado, los desarrolladores pueden aprovechar todo el potencial de la IA generativa y ofrecer aplicaciones transformadoras que impulsen el éxito empresarial. Comience a explorar estas herramientas hoy mismo y dé el primer paso hacia la construcción del futuro de las aplicaciones basadas en IA.

Agradecimientos

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de formación gratuita en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.

Para obtener documentación sobre el producto, visite Oracle Help Center.