Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse para obtener una cuenta gratuita, consulte Introducción a la cuenta gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar la práctica, sustituya estos valores por otros específicos de su entorno en la nube.
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
-
Complejidad reducida: la integración perfecta en LangChain, los servicios de OCI y los blocs de notas elimina la necesidad de pipelines complejos y reduce la sobrecarga de desarrollo.
-
Tiempo de comercialización más rápido: los desarrolladores pueden crear prototipos, probar y desplegar aplicaciones rápidamente, lo que garantiza una entrega de valor más rápida a los usuarios.
-
Escalabilidad y flexibilidad: la sólida infraestructura de OCI soporta las crecientes demandas de las aplicaciones empresariales, mientras que el diseño modular de LangChain permite una fácil expansión.
-
Productividad mejorada: mediante la automatización de tareas repetitivas y la simplificación de flujos de trabajo, los desarrolladores pueden centrarse en la innovación en lugar de en los desafíos operativos.
La creación de aplicaciones con LLM implica varios pasos:
- Acceso y despliegue de modelos de alto rendimiento.
- Ajuste de modelos con datos específicos del dominio.
- Integración de sistemas de recuperación para realizar consultas de datos de forma eficaz.
- Prueba, evaluación y despliegue de modelos a escala.
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
-
Descubra cómo funciona la integración de LangChain, OCI con OpenSearch, OCI Data Science Notebook, OCI Generative AI y AI Quick Actions.
-
Descubra cómo desplegar un modelo de LLM mediante acciones rápidas de IA.
-
Aprovecha la integración de LangChain mediante OCI con OpenSearch, el servicio OCI GenAI y OCI Data Science para acelerar el desarrollo de aplicaciones LLM.
Requisitos
-
Cree un cluster OpenSearch con la versión 2.11 o posterior. Para obtener más información, consulte Búsqueda y visualización de datos mediante Oracle Cloud Infrastructure Search con OpenSearch.
-
Cree una sesión de OCI Data Science Notebook. Para obtener más información, consulte Visión general de Data Science, también puede leer el primer tutorial: Integración de OCI con OpenSearch y LangChain en OCI Data Science Notebook o seguir Configuración de Data Science Notebook en su arrendamiento.
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:
- Aplicaciones prototipo: experimente con LangChain, OCI Generative AI y OCI con integraciones OpenSearch.
- Ejecutar flujos de trabajo: ejecute flujos de trabajo de ajuste, despliegue y recuperación.
- Colaborar: compartir e iterar proyectos con miembros del equipo.
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:
- Gestión de peticiones de datos: simplifica y optimiza la creación de peticiones de datos para diferentes casos de uso.
- Soporte de agente: cree agentes inteligentes que interactúen con API o herramientas externas.
- Interfaces de datos: integre orígenes de datos, sistemas de recuperación y almacenes de vectores.
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:
- Modelos bajo demanda: acceda a modelos preentrenados listos para la inferencia.
- Modelos personalizados: ajuste los LLM con datos específicos del dominio para respuestas personalizadas.
- Clusters de IA escalables: aprovecha la infraestructura de alto rendimiento para despliegues a gran escala.
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:
- Datos de índice y consulta: almacene grandes conjuntos de datos y recupere información relevante rápidamente.
- Búsqueda semántica: mejore la precisión de recuperación mediante incrustaciones.
- Escalabilidad: maneje conjuntos de datos en expansión sin comprometer el rendimiento.
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:
- Despliegue de modelos: despliegue modelos entrenados previamente o ajustados como puntos finales HTTP.
- Ajuste fino: entrena modelos con conjuntos de datos personalizados para mejorar el rendimiento específico del dominio.
- Evaluación: pruebe modelos con métricas como ROUGE y BERTScore.
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.
-
Haga clic en Acciones rápidas de IA para iniciar acciones rápidas de IA desde la sesión de bloc de notas.
-
Acceda al catálogo de modelos de LLM.
-
Haga clic en Despliegues y en Crear despliegue.
-
En la página Desplegar modelo, introduzca los detalles necesarios para crear un despliegue de modelo.
-
Una vez creado el modelo, puede ver y probar el modelo desplegado.
-
Cree una evaluación para el modelo desplegado.
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.
Enlaces relacionados
Agradecimientos
-
Autores: Landry Kezebou (ingeniero sénior de aprendizaje automático de OCI OpenSearch), Sreeni Simhadri (director sénior de desarrollo de software), Saiprasad Sethuram (ingeniero sénior de mánager)
-
Contribuyentes: Julien Lehmann (mánager de marketing de productos, Oracle Data Platform), Andy Hind (arquitecto de aplicaciones superior)
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.
Integrate LangChain, OCI Data Science Notebook, OCI with OpenSearch and OCI Generative AI to Accelerate LLM Development for RAG and Conversational Search
G25111-01
January 2025