Comprende cómo usar AI Search de Databricks con incrustaciones multimodales para mejorar tus aplicaciones RAG con capacidades multimodales
por Austin Choi y Jordan Soldo
La recuperación multimodal representa un desafío significativo en los sistemas modernos de IA. Los sistemas de recuperación tradicionales luchan por buscar eficazmente entre diferentes tipos de datos sin metadatos o etiquetas extensas. Esto es particularmente problemático para las empresas de atención médica que manejan grandes volúmenes de contenido diverso, incluyendo texto, imágenes, audio y más, lo que a menudo resulta en fuentes de datos no estructuradas.
Cualquiera que trabaje en atención médica entiende la dificultad de fusionar datos no estructurados con datos estructurados. Un ejemplo común de esto es la documentación clínica, donde las notas clínicas escritas a mano o los resúmenes de alta de los pacientes a menudo se envían en PDF, imágenes y formatos similares. Esto debe convertirse manualmente o procesarse utilizando Reconocimiento Óptico de Caracteres (OCR) para encontrar la información necesaria. Incluso después de este paso, debe mapear los datos a sus datos estructurados existentes para utilizarlos de manera efectiva.
Para este blog, revisaremos lo siguiente:
Al final de este blog, verá cómo las incrustaciones multimodales permiten lo siguiente para la atención médica:
Un espacio de incrustación (AWS | Azure | GCP) es una representación matemática n-dimensional de registros que permite que una o más modalidades de datos se almacenen como vectores de números de punto flotante. Lo que hace que eso sea útil es que, en un espacio de incrustación bien construido, los registros de significado similar ocupan un espacio similar. Por ejemplo, imaginemos que teníamos la imagen de un caballo, la palabra “camión” y una grabación de audio de un perro ladrando. Pasamos estos tres puntos de datos completamente diferentes a nuestro modelo de incrustación multimodal y obtenemos lo siguiente:
Aquí hay una representación visual de dónde existirían los números en un espacio de incrustación:

En la práctica, las dimensiones del espacio de incrustación estarán en los cientos o miles, pero para ilustrar, usemos un espacio de 3. Podemos imaginar que la primera posición en estos vectores representa “animalidad”, la segunda “transportación” y la tercera “ruidosidad”. Eso tendría sentido dados los vectores, pero típicamente, no sabemos qué representa cada dimensión. Lo importante es que representan el significado semántico de los registros.
Hay varias formas de crear un espacio de incrustación multimodal, incluyendo el entrenamiento de múltiples codificadores simultáneamente (como CLIP), el uso de mecanismos de atención cruzada (como DALL-E), o el uso de varios métodos de alineación post-entrenamiento. Estos métodos permiten que el significado del registro trascienda la modalidad original y ocupe un espacio compartido con otros registros o formatos dispares.
Este espacio semántico compartido es lo que permite potentes capacidades de búsqueda intermodal. Cuando una consulta de texto y una imagen comparten representaciones vectoriales similares, es probable que compartan significados semánticos similares, lo que nos permite encontrar imágenes relevantes basadas en descripciones textuales sin etiquetas o metadatos explícitos.
Para implementar eficazmente la búsqueda multimodal, necesitamos modelos que puedan generar incrustaciones para diferentes tipos de datos dentro de un espacio vectorial compartido. Estos modelos están diseñados específicamente para comprender las relaciones entre diferentes modalidades y representarlas en un espacio matemático unificado.
Varios modelos potentes de incrustación multimodal están disponibles a partir de junio de 2025:
En Databricks, proporcionamos la infraestructura y las herramientas para alojar, evaluar y desarrollar una solución de extremo a extremo, personalizable a su caso de uso. Considere los siguientes escenarios al comenzar a implementar este caso de uso:
Para la implementación completa de esta solución, visita este repositorio aquí: Enlace de Github
Este ejemplo utilizará información sintética de pacientes como nuestros datos estructurados y explicaciones de beneficios de muestra en formato PDF como nuestros datos no estructurados. Primero, se generan datos sintéticos para usar con un Genie Space. Luego, se carga un modelo de incrustación multimodal Nomic, un modelo de incrustación multimodal de código abierto de última generación, en Databricks Model Serving para generar incrustaciones en explicaciones de beneficios de muestra encontradas en línea.
Este proceso suena complicado, pero Databricks proporciona herramientas integradas que permiten una solución completa de extremo a extremo. A nivel general, el proceso se ve así:
Este Genie Space se utilizará como una herramienta para convertir lenguaje natural en una consulta SQL para consultar nuestros datos estructurados.
En este ejemplo, se utilizará la librería Faker para generar información aleatoria de pacientes. Crearemos dos tablas para diversificar nuestros datos: Visitas de Pacientes y Ubicaciones de Práctica, con columnas como razones de visita, proveedores de seguros y tipos de seguros.
Para consultar datos usando lenguaje natural, podemos utilizar un Databricks Genie Space (AWS | Azure | GCP) para convertir nuestra consulta en lenguaje natural y recuperar datos relevantes del paciente. En la interfaz de usuario de Databricks, simplemente haga clic en la pestaña Genie en la barra izquierda → Nuevo → seleccione las tablas patient_visits y practice_locations.

Necesitamos el ID del Espacio Genie para capturar el número que sigue a rooms. Puede ver un ejemplo a continuación:
Dado que estamos usando DSPy, todo lo que necesitamos hacer es definir una función de Python.
¡Eso es todo! Ahora configuremos el flujo de trabajo de Generación Multi-Modal.
Para este paso, utilizaremos el modelo totalmente abierto colNomic-embed-multimodal-7b en HuggingFace para generar embeddings para nuestros datos no estructurados, en este caso, PDFs. Seleccionamos el modelo de Nomic debido a su licencia Apache 2.0 y su alto rendimiento en benchmarks.
El método para generar sus embeddings variará según su caso de uso y modalidad. Revise las Mejores Prácticas de Búsqueda Vectorial de Databricks (AWS | Azure | GCP) para comprender qué es lo mejor para su caso de uso.
Necesitamos que este modelo esté disponible dentro de Unity Catalog (UC) de Databricks, por lo que usaremos MLflow para cargarlo desde Huggingface y registrarlo. Luego, podemos implementar el modelo en un punto final de servicio de modelos.
El modelo de Python incluye lógica adicional para manejar entradas de imágenes, que se puede encontrar en el repositorio completo.
UC Volumes están diseñados como sistemas de archivos para alojar cualquier archivo y es donde almacenamos nuestros datos no estructurados. Puede usarlos en el futuro para almacenar otros archivos, como imágenes, y repetir el proceso según sea necesario. Esto incluye el modelo anterior. En el repositorio, verá que la caché se refiere a un volumen.
Tendrá una carpeta llamada sample_pdf_sbc que contiene algunos resúmenes de beneficios y cobertura de ejemplo. Necesitamos preparar estos PDFs para incrustarlos.
El modelo colNomic-embed-multimodal-7b está entrenado específicamente para reconocer texto e imágenes dentro de una imagen, una entrada común de los PDFs. Esto permite que el modelo funcione excepcionalmente bien al recuperar estas páginas.
Este método le permite utilizar todo el contenido dentro de un PDF sin necesidad de una estrategia de fragmentación de texto para garantizar que la recuperación funcione de manera efectiva. El modelo en sí puede incrustar estas imágenes bien en su propio espacio de embedding.
Usaremos pdf2image para convertir cada página del PDF en una imagen, preparándola para el embedding.
Ahora que tenemos las imágenes de los PDF, podemos generar los embeddings. Al mismo tiempo, podemos guardar los embeddings en una tabla Delta con columnas adicionales que recuperaremos junto con nuestra Búsqueda Vectorial, como la ruta del archivo a la ubicación del Volumen.
La creación de un índice de búsqueda vectorial se puede realizar a través de la interfaz de usuario o de la API. A continuación se muestra el método de la API.
Ahora solo necesitamos unirlo todo con un Agente.
Usamos DSPy para esto debido a su diseño declarativo y de Python puro. Nos permite iterar y desarrollar rápidamente, probando varios modelos para ver cuáles funcionarán mejor para nuestro caso de uso. Lo más importante es que la naturaleza declarativa nos permite modularizar nuestro Agente para que podamos aislar la lógica del Agente de las herramientas y centrarnos en definir CÓMO el agente debe completar su tarea.
¿Y la mejor parte? ¡Nada de ingeniería de prompts manual!
Esta firma especifica y aplica las entradas y salidas, y también explica cómo debe funcionar la firma.
El módulo tomará las instrucciones de la firma y creará un prompt óptimo para enviar al LLM. Para este caso de uso en particular, construiremos un módulo personalizado llamado `MultiModalPatientInsuranceAnalyzer()`.
Este módulo personalizado dividirá las firmas en pasos, casi como si se encadenaran llamadas, en el método forward. Seguimos este proceso:
Revisa qué herramientas utilizó el Agente y el razonamiento que siguió el Agente para responder la pregunta.
Una vez que tengas un Agente funcionando, recomendamos lo siguiente:
El marco de evaluación será crucial para comprender la eficacia con la que el índice de Búsqueda Vectorial recupera información relevante para tu agente RAG. Siguiendo estas métricas, sabrás dónde realizar ajustes, desde cambiar el modelo de incrustación hasta ajustar los prompts que interactúan con el LLM.
También deberías monitorizar si la API de Modelos Fundacionales (AWS | Azure | GCP) es suficiente para tu caso de uso. En cierto punto, alcanzarás los límites de la API para las APIs de Modelos Fundacionales, por lo que necesitarás pasar a Throughput Provisionado (AWS | Azure | GCP) para tener un punto de conexión más fiable para tu LLM.
Además, vigila de cerca tus costes frente al servicio de modelos sin servidor (AWS | Azure | GCP). La mayoría de estos costes se originarán en el servicio de modelos sin servidor de la SKU de Databricks y pueden aumentar a medida que escales.
Consulta estos blogs para entender cómo hacer esto en Databricks.
Además, los Arquitectos de Soluciones de Entrega de Databricks (DSAs) (Delivery Solutions Architects) ayudan a acelerar las iniciativas de Datos e IA en las organizaciones. Los DSAs proporcionan liderazgo arquitectónico, optimizan las plataformas en cuanto a coste y rendimiento, mejoran la experiencia del desarrollador e impulsan la ejecución exitosa de proyectos. Sirven de puente entre la implementación inicial y las soluciones de nivel de producción, trabajando en estrecha colaboración con varios equipos, incluyendo ingeniería de datos, líderes técnicos, ejecutivos y otras partes interesadas para garantizar soluciones personalizadas y un valor más rápido. Ponte en contacto con tu equipo de cuenta de Databricks para obtener más información.
¡Empieza creando tu propia App GenAI! Consulta la documentación para empezar.
En Databricks, tienes todas las herramientas que necesitas para desarrollar esta solución de extremo a extremo. Consulta los blogs a continuación para obtener información sobre cómo gestionar y trabajar con tu nuevo Agente con los Agentes Personalizados de Agent Bricks.
(Esta entrada del blog ha sido traducida utilizando herramientas basadas en inteligencia artificial) Publicación original
Suscríbete a nuestro blog y recibe las últimas publicaciones directamente en tu bandeja de entrada.