Compartir a través de


Introducción al chat de IA sin servidor con RAG usando LlamaIndex

Haga más sencillo el desarrollo de aplicaciones de inteligencia artificial con RAG mediante sus propios datos administrados por LlamaIndex, Azure Functions y tecnologías sin servidor. Estas herramientas administran la infraestructura y escalan de forma automática, lo que le permiten centrarse en la funcionalidad del bot de chat. LlamaIndex controla la canalización de datos desde la ingesta hasta la respuesta transmitida.

Captura de pantalla de la aplicación de chat en el explorador donde se ve la entrada del chat y la respuesta.

Introducción a la arquitectura

El flujo de la aplicación incluye:

  • Uso de la interfaz de chat para escribir una solicitud.
  • Envío de la solicitud del usuario a la API sin servidor a través de llamadas HTTP.
  • Al recibir la solicitud del usuario, se usa el sistema LlamaIndex para procesar y transmitir la respuesta. La API sin servidor usa un motor para crear una conexión con el modelo de lenguaje grande (LLM) de Azure OpenAI y el índice vectorial de LlamaIndex.

En el siguiente diagrama se muestra una arquitectura sencilla de la aplicación de chat:

Diagrama de la arquitectura de la aplicación de chat con RAG usando LlamaIndex.

En este ejemplo se usa LlamaIndex para generar inserciones y almacenar en su propio almacén de vectores. LlamaIndex también incluye la integración con otros almacenes de vectores, como Búsqueda de Azure AI. Esa integración no aparece en este ejemplo.

¿Dónde está Azure en esta arquitectura?

La arquitectura de la aplicación se basa en los siguientes servicios y componentes:

  • Azure OpenAI representa el proveedor de IA al que se envían las consultas del usuario.
  • LlamaIndex es el marco que nos ayuda a ingerir, transformar y vectorizar nuestro contenido (archivo PDF) y crear un índice de búsqueda a partir de nuestros datos.
  • Azure Container Apps es el entorno de contenedor donde se hospeda la aplicación.
  • La Identidad administrada de Azure permite garantizar la mejor seguridad y eliminar los requisitos como desarrollador para usar las credenciales y las claves de API.

LlamaIndex administra los datos desde la ingesta hasta la recuperación

Para implementar un sistema RAG (Retrieval-Augmented Generation) mediante LlamaIndex, los siguientes pasos clave se coinciden con la funcionalidad LlamaIndex:

Proceso Descripción LlamaIndex
Ingesta de datos Importe datos de orígenes como archivos PDF, API o bases de datos. SimpleDirectoryReader
Fragmentos de documentos Divida documentos grandes en fragmentos más pequeños. SentenceSplitter
Creación de índices vectoriales Cree un índice vectorial para búsquedas de similitud eficaces. VectorStoreIndex
Recuperación recursiva (opcional) del índice Administre conjuntos de datos complejos con recuperación jerárquica.
Conversión a motor de consultas Convierta el índice vectorial en un motor de consulta. asQueryEngine
Configuración avanzada de consultas (opcional) Use agentes para un sistema multiagente.
Implementación de la canalización de RAG Defina una función objetivo que recoja las consultas del usuario y recupere los fragmentos de documento correspondientes.
Tarea de recuperación Procesar consultas y reclasificar documentos. RetrieverQueryEngine, CohereRerank

Requisitos previos

Hay disponible un entorno contenedor de desarrollo con todas las dependencias necesarias para completar este artículo. Puede ejecutar el contenedor de desarrollo en GitHub Codespaces (en un navegador) o localmente utilizando Visual Studio Code.

Para usar este artículo, necesita los siguientes requisitos previos:

Entorno de desarrollo abierto

Use las instrucciones siguientes para implementar un entorno de desarrollo preconfigurado que contenga todas las dependencias necesarias para completar este artículo.

GitHub Codespaces ejecuta un contenedor de desarrollo administrado por GitHub con Visual Studio Code para la web como interfaz de usuario. Para obtener el entorno de desarrollo más sencillo, utilice Codespaces de GitHub de modo que tenga las herramientas y dependencias de desarrollador correctas preinstaladas para completar este artículo.

Importante

Todas las cuentas de GitHub pueden usar Codespaces durante un máximo de 60 horas gratis cada mes con 2 instancias principales. Para obtener más información, consulte Almacenamiento y horas de núcleo incluidas mensualmente en GitHub Codespaces.

  1. Abra en codespace.

    Abrir en GitHub Codespaces

  2. Espere a que se inicie Codespaces. Este proceso de startup puede tardar unos minutos.

  3. En el terminal de la parte inferior de la pantalla, inicie sesión en Azure con la CLI para desarrolladores de Azure.

    azd auth login
    

    Complete el proceso de autenticación.

  4. Las tareas restantes de este artículo tienen lugar en el contexto de este contenedor de desarrollo.

Implementación y ejecución

El repositorio de ejemplo contiene todo el código y los archivos de configuración necesarios para implementar una aplicación de chat sin servidor en Azure. Los siguientes pasos le guiarán a través del proceso de implementación de la muestra en Azure.

Implementación de la aplicación de chat en Azure

Importante

Los recursos Azure creados en esta sección incurren en costes inmediatos, principalmente del recurso Azure AI Search. Estos recursos pueden acumular costes incluso si interrumpe el comando antes de que se ejecute por completo.

  1. Para aprovisionar los recursos de Azure e implementar el código fuente, ejecute el siguiente comando de la CLI para desarrolladores de Azure:

    azd up
    
  2. Use la siguiente tabla para responder a las solicitudes:

    Prompt Respuesta
    Nombre del entorno Hágala corta y en minúsculas. Agregue su nombre o alias. Por ejemplo, john-chat. Se usa como parte del nombre del grupo de recursos.
    Subscription Seleccione la suscripción en la que crear los recursos.
    Ubicación (para el hospedaje) Seleccione una ubicación cercana en la lista.
    Localización del modelo OpenAI Seleccione una ubicación cercana en la lista. Si está disponible la misma ubicación que la primera, selecciónela.
  3. Espere hasta que se implemente la aplicación. La implementación puede tardar entre 5 y 10 minutos.

  4. Después de implementar correctamente la aplicación, verá dos direcciones URL mostradas en el terminal.

  5. Seleccione esa URL etiquetada Deploying service webapp para abrir la aplicación de chat en un navegador.

    Captura de pantalla del resultado del comando de implementación, donde se ve la dirección URL de la aplicación web.

Utilice la aplicación de chat para obtener respuestas de archivos PDF

La aplicación de chat se carga previamente con las información sobre los aspectos físicos del correo postal nacional en un catálogo de archivos PDF. Puedes usar la aplicación de chat para hacer preguntas sobre la carta de correo y los paquetes. Los siguientes pasos le guiarán a través del proceso de uso de la aplicación de chat.

  1. En el explorador, seleccione o escriba ¿Cuánto cuesta enviar un paquete grande a Francia?

  2. LlamaIndex deriva la respuesta, usa el archivo PDF y transmite la respuesta.

    Captura de pantalla de la aplicación de chat en el explorador donde se ve la entrada del chat y la respuesta.

    La respuesta procede de Azure OpenAI con influencia de los datos de PDF ingeridos en el almacén de vectores de LlamaIndex.

Limpieza de recursos

Para limpiar los recursos, hay dos cosas que debe tener en cuenta:

  • Recursos de Azure, puede limpiar los recursos con la CLI para desarrolladores de Azure, azd.
  • Su entorno de desarrollador; GitHub Codespaces o DevContainers a través de Visual Studio Code.

Limpieza de los recursos de Azure

Los recursos Azure creados en este artículo se facturan a su suscripción Azure. Si no espera necesitar estos recursos en el futuro, elimínelos para evitar incurrir en más gastos.

Ejecute el siguiente comando de la CLI para desarrolladores de Azure para eliminar los recursos de Azure y eliminar el código de origen:

azd down --purge

Limpieza de entornos de desarrollador

La eliminación del entorno de GitHub Codespaces garantiza que pueda maximizar la cantidad de derechos de horas gratuitas por núcleo que obtiene para su cuenta.

Importante

Para obtener más información sobre los derechos de la cuenta de GitHub, consulte Almacenamiento y horas de núcleo incluidas mensualmente en GitHub Codespaces.

  1. Inicie sesión en el panel de GitHub Codespaces (https://github.com/codespaces).

  2. Busque los espacios de código que se ejecutan actualmente procedentes del repositorio de GitHub Azure-Samples/llama-index-javascript.

    Captura de pantalla de todos los espacios de código en ejecución, incluidos su estado y las plantillas.

  3. Abra el menú contextual, ..., del codespace y luego seleccione Eliminar.

Obtener ayuda

Este repositorio de muestras ofrece información para la resolución de problemas.

Si su problema no se resuelve, regístrelo en el apartado de problemas del repositorio.

Paso siguiente