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.
Cree un chatbot basado en RAG con Oracle Cloud Infrastructure Search con OpenSearch
Introducción
En este tutorial, te guiaremos a través del proceso de creación de un chatbot basado en generación aumentada de recuperación (RAG) utilizando OCI OpenSearch como base de datos vectorial y modelos de servicio OCI Generative AI (como Cohere y Llama). Al final de este tutorial, habrá creado una solución de chatbot capaz de procesar documentos, almacenarlos como incrustaciones de vectores en OpenSearch y recuperar información relevante durante las conversaciones.
Además, crearemos una interfaz de usuario intuitiva mediante Streamlit, lo que le permitirá cargar documentos, interactuar con el chatbot y acceder a la información relevante sin esfuerzo. Este tutorial cubre todo, desde la configuración de su entorno hasta la prueba del chatbot con sus propios archivos PDF.
Objetivos
-
Configure un cluster OpenSearch en OCI para almacenar incrustaciones de documentos.
-
Configure el entorno de desarrollo con Conda y las dependencias necesarias.
-
Configure la autenticación de OCI para una integración perfecta.
-
Escriba y configure el código del motor de chatbot.
-
Cree una interfaz de usuario interactiva mediante Streamlit para cargar documentos y consultar el chatbot.
-
Cargue documentos (PDF) e interactúe con el chatbot para consultarlos.
Requisitos
-
Una cuenta de OCI con los permisos necesarios para crear clusters OpenSearch.
-
Máquina virtual (VM) con Python instalado.
-
Familiaridad con bases de datos vectoriales y modelos de lenguaje grandes.
-
Conocimientos básicos del desarrollo de la interfaz de programación de aplicaciones (API) y del motor de chatbots.
-
Cree una búsqueda con OpenSearch políticas de IAM y políticas de OCI Generative AI.
Tarea 1: Configuración de un cluster OpenSearch con OCI con OpenSearch
-
Crear un Cluster. Para obtener más información, consulte Creación de un cluster OpenSearch con OCI Search con OpenSearch
-
Una vez creado el cluster, copie el punto final de API, junto con las credenciales de usuario para configurarlas en la aplicación.
Tarea 2: Configuración del entorno de Python
-
Inicie una instancia con la imagen de Oracle Linux y la unidad básica en OCI. Para obtener más información, consulte Inicio de una instancia de Linux.
-
Instale Python 3.11 en Oracle Linux. Para obtener más información, consulte Installing Python.
-
Ejecute el siguiente comando para actualizar la versión de Python.
sudo update-alternatives --set python /usr/bin/python3.11
-
Cree una carpeta de proyecto denominada
opensearch_rag_chatbot
. -
Vaya a la carpeta creada e instale dependencias mediante la creación de un archivo denominado
requirements.txt
en ella.python -m venv venv source ./venv/bin/activate pip install -r requirements.txt
-
Ejecute el siguiente comando para probar la instalación de Streamlit.
streamlit hello
-
Si los puertos Streamlit y OpenSearch (
8501
/9200
) no están abiertos en el firewall, agréguelos mediante el siguiente comando.sudo firewall-cmd --list-all sudo firewall-cmd --permanent --add-port=8501/tcp sudo firewall-cmd --permanent --add-port=9200/tcp sudo firewall-cmd --reload
Tarea 3: Configuración de la autenticación de OCI
-
Cree una carpeta
.oci
en el directorio raíz y configure el archivoconfig
.[DEFAULT] user=ocid1.user.oc1.. fingerprint=40:02:56: key_file=/path/to/oci_api_key.pem tenancy=ocid1.tenancy.oc1.. region=us-region-1
Nota: Para obtener más información, consulte Creación de un archivo de configuración para Oracle Date a Science.
Tarea 4: Escribir el código del motor de chatbot
-
Siga esta estructura de proyecto para la base de código.
opensearch_rag_chatbot/ ├── app.py # Main Streamlit app ├── chat_engine.py # Logic for RAG and GenAI integration ├── config.py # Config file for secrets and settings ├── ingest_data_opens.py # Script for processing and indexing PDFs in OpenSearch ├── oci_utils.py # Utility for OCI configurations
-
Descargue los siguientes archivos de código de ejemplo como ejemplos de trabajo.
Nota: Estos programas de ejemplo pueden requerir personalización para casos de uso específicos y manejo de errores adicional. Además, en los ejemplos, se utiliza un principal de usuario para establecer una conexión con el cluster OpenSearch. Sin embargo, se recomienda almacenar información confidencial, como secretos y credenciales, en OCI Vault para mejorar la seguridad. A continuación, puede recuperar estos secretos de forma dinámica en tiempo de ejecución. Para obtener más información sobre la gestión y recuperación de secretos de forma segura, consulte Mantenimiento de la seguridad de los datos mediante el almacén.
Tarea 5: Carga de documentos y prueba del chatbot
-
Ejecute el siguiente comando para ejecutar la aplicación.
cd opensearch_rag_chatbot python -m venv venv source ./venv/bin/activate streamlit run app.py
-
Copie la URL generada para acceder a la aplicación Streamlit. Comience a cargar archivos PDF y pruebe la funcionalidad del chatbot.
Solución de problemas y consejos
-
Errores de conexión: verifique la URL y las credenciales del cluster OpenSearch.
-
Incidencias de índice: asegúrese de que las configuraciones de OpenSearch en
config.py
son correctas. -
Errores de procesamiento de PDF: confirme la compatibilidad del formato PDF.
-
Comprobación de configuración: compruebe la precisión del archivo
config.py
.
Nota: Los logs están disponibles en la salida de la consola de Streamlit, que proporciona información detallada sobre las operaciones y los errores.
Pasos Siguientes
Para los siguientes pasos, considere ampliar su chatbot agregando soporte para más formatos de documento, como archivos Word o HTML, y experimentando con diferentes modelos de incrustación para mejorar la precisión de respuesta del chatbot en dominios específicos. También puede mejorar la interfaz de usuario de Streamlit con funciones adicionales, como soporte para varias cargas de documentos, historial de consultas o comentarios en tiempo real sobre procesos largos.
Enlaces relacionados
Agradecimientos
- Autores: Pavan Upadhyay (ingeniero principal de nube), Saket Bihari (ingeniero principal de nube)
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, visita education.oracle.com/learning-explorer para convertirte en un Oracle Learning Explorer.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Create RAG based Chatbot using Oracle Cloud Infrastructure Search with OpenSearch
G20424-01
November 2024