Logo de AiToolGo

Creación de aplicaciones RAG con GKE y Cloud SQL

Discusión en profundidad
Técnico
 0
 0
 1
Este artículo proporciona una arquitectura de referencia para diseñar infraestructura para ejecutar capacidades de Generación Aumentada por Recuperación (RAG) utilizando Google Kubernetes Engine (GKE) y Cloud SQL, junto con herramientas de código abierto como Ray y Hugging Face. Describe los componentes de la arquitectura, el flujo de datos y los casos de uso prácticos en varios dominios.
  • puntos principales
  • ideas únicas
  • aplicaciones prácticas
  • temas clave
  • ideas clave
  • resultados de aprendizaje
  • puntos principales

    • 1
      Descripción general completa de la arquitectura para aplicaciones habilitadas para RAG
    • 2
      Casos de uso prácticos que demuestran aplicaciones del mundo real
    • 3
      Integración de múltiples herramientas de Google Cloud y de código abierto
  • ideas únicas

    • 1
      Explicación detallada del flujo de datos en el subsistema de incrustación
    • 2
      Uso innovador de la búsqueda semántica para mejorar las interacciones del usuario
  • aplicaciones prácticas

    • El artículo sirve como una guía práctica para desarrolladores que buscan implementar capacidades RAG en aplicaciones de IA generativa utilizando GKE y Cloud SQL.
  • temas clave

    • 1
      Diseño de arquitectura RAG
    • 2
      Integración de GKE y Cloud SQL
    • 3
      Casos de uso para aplicaciones de IA generativa
  • ideas clave

    • 1
      Exploración en profundidad de los componentes de la arquitectura RAG
    • 2
      Ejemplos prácticos de diversas industrias
    • 3
      Orientación sobre la optimización del rendimiento y los costos en entornos en la nube
  • resultados de aprendizaje

    • 1
      Comprender la arquitectura para aplicaciones de IA generativa habilitadas para RAG
    • 2
      Aprender a integrar GKE y Cloud SQL con herramientas de código abierto
    • 3
      Explorar casos de uso prácticos y mejores prácticas para la implementación
ejemplos
tutoriales
ejemplos de código
visuales
fundamentos
contenido avanzado
consejos prácticos
mejores prácticas

Introducción a RAG con GKE y Cloud SQL

Este artículo explora una arquitectura de referencia para implementar aplicaciones de Generación Aumentada por Recuperación (RAG) en Google Cloud, aprovechando Google Kubernetes Engine (GKE), Cloud SQL y herramientas populares de código abierto. RAG mejora la calidad de las salidas de IA Generativa al basarlas en conocimiento recuperado, lo que la hace ideal para aplicaciones que requieren respuestas precisas y conscientes del contexto. Esta guía está dirigida a desarrolladores familiarizados con GKE y Cloud SQL, y que poseen una comprensión conceptual de IA, Machine Learning (ML) y Modelos de Lenguaje Grandes (LLM). Profundizaremos en los componentes de la arquitectura, el flujo de datos y las consideraciones clave para construir un sistema RAG robusto y eficiente.

Descripción general de la arquitectura: Subsistemas de incrustación y servicio

La arquitectura comprende dos subsistemas principales: el subsistema de incrustación (embedding) y el subsistema de servicio. El subsistema de incrustación es responsable de ingerir datos de diversas fuentes, transformarlos en incrustaciones vectoriales y almacenar estas incrustaciones en una base de datos vectorial. El subsistema de servicio maneja las solicitudes de los usuarios, recupera información relevante de la base de datos vectorial utilizando búsqueda semántica y genera respuestas utilizando un LLM. Esta separación de responsabilidades permite un procesamiento de datos eficiente y una entrega de servicios escalable.

Flujo de datos detallado en el subsistema de incrustación

Los datos de fuentes internas y externas se cargan en Cloud Storage. Esta carga desencadena un evento que notifica al servicio de incrustación. El servicio de incrustación recupera los datos, los preprocesa utilizando Ray Data (lo que puede implicar la división en fragmentos y el formato) y genera incrustaciones vectoriales utilizando modelos de código abierto como intfloat/multilingual-e5-small. Estas incrustaciones se escriben luego en una base de datos vectorial Cloud SQL para PostgreSQL, que está optimizada para almacenar y recuperar vectores de alta dimensionalidad.

Flujo de solicitud-respuesta en el subsistema de servicio

Un usuario envía una solicitud en lenguaje natural a través de una interfaz de chat basada en web. El servidor front-end, que se ejecuta en GKE, utiliza LangChain para convertir la solicitud en una incrustación. Esta incrustación se utiliza para realizar una búsqueda semántica en la base de datos vectorial, recuperando datos relevantes. La solicitud original se combina luego con los datos recuperados para crear un prompt contextualizado, que se envía al servidor de inferencia. El servidor de inferencia, impulsado por Hugging Face TGI, utiliza un LLM de código abierto (por ejemplo, Mistral-7B-Instruct o Gemma) para generar una respuesta. La respuesta se filtra por seguridad utilizando servicios de IA Responsable (RAI) antes de ser enviada de vuelta al usuario.

Productos clave de Google Cloud y de código abierto utilizados

Esta arquitectura aprovecha varios productos clave de Google Cloud y de código abierto. Google Kubernetes Engine (GKE) proporciona la plataforma de orquestación de contenedores. Cloud Storage ofrece almacenamiento de objetos escalable. Cloud SQL para PostgreSQL, mejorado con la extensión pgvector, sirve como base de datos vectorial. Las herramientas de código abierto incluyen Hugging Face Text Generation Inference (TGI) para la gestión de LLM, Ray para la computación distribuida y LangChain para la creación de aplicaciones impulsadas por LLM.

Casos de uso: Personalización, asistencia clínica e investigación legal

RAG es aplicable a varios escenarios. Para recomendaciones de productos personalizadas, un chatbot puede aprovechar los datos históricos del usuario para proporcionar sugerencias más relevantes. En asistencia clínica, los médicos pueden usar RAG para acceder al historial del paciente y a bases de conocimiento externas para mejorar los diagnósticos. En investigación legal, los abogados pueden consultar rápidamente regulaciones y jurisprudencia, mejorado con datos de contratos internos y registros de casos.

Opciones de diseño alternativas: Vertex AI y AlloyDB

Para una solución de búsqueda vectorial totalmente administrada, considere usar Vertex AI y Vector Search. Alternativamente, puede aprovechar las capacidades de almacenamiento vectorial de otras bases de datos de Google Cloud como AlloyDB para PostgreSQL. Estas alternativas ofrecen diferentes compensaciones en términos de sobrecarga de administración y rendimiento.

Consideraciones de seguridad, privacidad y cumplimiento

La seguridad es primordial. Utilice las funciones de seguridad integradas de GKE Autopilot. Implemente Identity-Aware Proxy (IAP) para el control de acceso. Cifre los datos en reposo y en tránsito utilizando Cloud KMS. Para Cloud SQL, imponga conexiones seguras utilizando SSL/TLS o el proxy de autenticación de Cloud SQL. Utilice Sensitive Data Protection para identificar y desidentificar datos sensibles en Cloud Storage. Aproveche VPC Service Controls para prevenir la exfiltración de datos. Asegure el cumplimiento de los requisitos de residencia de datos especificando la región adecuada para el almacenamiento de datos.

Diseño de fiabilidad y alta disponibilidad

Asegure alta disponibilidad utilizando clústeres GKE regionales y configurando instancias de Cloud SQL con alta disponibilidad. Utilice las opciones de almacenamiento regional o multirregional de Cloud Storage para la redundancia de datos. Considere el uso de capacidad reservada para recursos de GPU para garantizar la disponibilidad durante eventos de escalado automático.

Estrategias de optimización de costos

Optimice los costos aprovechando la eficiencia de GKE Autopilot. Considere los Descuentos por Compromiso de Uso (Committed Use Discounts) para cargas de trabajo predecibles. Utilice Spot VMs para nodos GKE para reducir los costos de cómputo. Para Cloud SQL, utilice instancias independientes si no se requiere alta disponibilidad. Utilice las información de análisis de costos de Cloud SQL para identificar instancias con sobreaprovisionamiento. Elija la clase de Cloud Storage adecuada según la frecuencia de acceso a los datos y los requisitos de retención.

Ajuste y optimización del rendimiento

Seleccione la categoría de cómputo adecuada para los pods de GKE según los requisitos de rendimiento. Utilice tipos de máquina con GPU para servidores de inferencia y servicios de incrustación. Optimice el rendimiento de Cloud SQL asignando suficiente CPU y memoria. Utilice índices IVFFlat o HNSW para una búsqueda vectorial de vecinos más cercanos aproximados (ANN) más rápida. Utilice la herramienta Query Insights de Cloud SQL para identificar y resolver cuellos de botella de rendimiento. Para cargas de archivos grandes en Cloud Storage, considere el uso de cargas compuestas paralelas.

Implementación y próximos pasos

Una base de código de ejemplo está disponible en GitHub para implementar esta arquitectura. Este código está destinado a la experimentación y no para uso en producción. Proporciona Cloud SQL, implementa Ray, JupyterHub y Hugging Face TGI en GKE, y despliega una aplicación de chatbot de ejemplo. Recuerde eliminar cualquier recurso no utilizado después de la experimentación. Explore más revisando las mejores prácticas de GKE, investigando las opciones de grounding de IA Generativa de Google Cloud y estudiando arquitecturas que utilizan Vertex AI y Vector Search o AlloyDB. Consulte el Marco de Bien Arquitectado para IA y Machine Learning para obtener principios y recomendaciones arquitectónicas.

 Enlace original: https://cloud.google.com/architecture/rag-capable-gen-ai-app-using-gke?hl=zh-cn

Comentario(0)

user's avatar

      Herramientas Relacionadas