caso de uso: Inteligencia artificial, Gestión de contenido, Búsquedas inteligentes
Industrias: Fabricación y movilidad
Productos: MongoDB Atlas, MongoDB Atlas Search, Búsqueda vectorial de MongoDB Atlas, Búsqueda híbrida
Socios: Google Cloud
Resumen de la solución
Las industrias intensivas en capital, como la aeroespacial, la energética, la automovilística y la manufacturera, dependen de décadas de conocimientos técnicos complejos. Sin embargo, este conocimiento técnico se encuentra en colecciones de documentos estáticos como manuales, guías de mantenimiento y wikis internos, que se almacenan como archivos PDF o archivos no estructurados que pueden ser difíciles de acceder. Como resultado, los trabajadores de primera línea no pueden recuperar información precisa en tiempo real.
Esta brecha genera los siguientes desafíos para las empresas:
El tiempo de inactividad operativo puede costar a las empresas hasta $260,000 por hora, con algunos sectores como el automotriz soportando costos de $50,000 por minuto. Sumando estos costos, la encuesta Valor de la fiabilidad de ABB encontró que más de dos tercios de las empresas industriales experimentan interrupciones del servicio no planificadas al menos una vez al mes, con costos típicos de $125,000 por hora.
Los errores y retrabajos en la producción afectan 97a % de los profesionales de la manufactura debido a una documentación deficiente.
Las ineficiencias de la documentación reducen las ganancias de otras iniciativas tecnológicas, según 73% de los profesionales de la manufactura.
Para abordar esta brecha, esta solución presenta un marco arquitectónico para transformar documentos inertes en una base de conocimientos dinámica mediante el uso de tecnología consciente del contexto. RAG. A diferencia de los sistemas RAG estándar, que pierden contexto crítico al dividir los documentos en fragmentos, el RAG contextual conserva la estructura jerárquica y las relaciones en la documentación técnica. Los usuarios pueden formular preguntas en lenguaje natural y recibir respuestas precisas de su documentación, ya que el sistema encuentra y presenta automáticamente la información más relevante, conservando su contexto técnico original.
Al mantener la estructura del documento durante el proceso RAG, el sistema garantiza que las advertencias de seguridad permanezcan conectadas a sus procedimientos y que las especificaciones técnicas conserven su alcance adecuado. El sistema resultante hace que las operaciones sean más seguras, acelera la productividad y prepara el camino para aplicaciones industriales de próxima generación de IA.
Arquitecturas de Referencia
La arquitectura para construir un sistema RAG con conciencia de contexto consiste en tres capas principales:
Capa de pipeline de ingestión
Capa de plataforma de datos
Capa de consulta
Estas capas trabajan juntas para transformar documentación técnica estática en una base de conocimiento inteligente. Cada capa mantiene la estructura del documento y permite una coincidencia precisa de palabras clave y comprensión semántica. Esta sección discute las capas de ingestión y consulta, mientras que la sección Enfoque del modelo de datos cubre la capa de la plataforma de datos en mayor detalle.
El gráfico siguiente ilustra el flujo de datos desde la ingesta del PDF hasta las respuestas a las queries del usuario, mostrando los componentes técnicos y sus interacciones. Demuestra cómo cada capa procesa, almacena y recupera documentación técnica preservando el contexto.
Figura 1. RAG consciente del contexto para la arquitectura de documentos técnicos
La capa de canalización de ingestión
La capa de pipeline de ingestión transforma archivos PDF sin procesar en datos estructurados que conservan el contenido y el contexto. Esto mejora la calidad y confiabilidad de tu sistema RAG al garantizar que las relaciones técnicas, las estructuras jerárquicas y las dependencias contextuales se mantengan intactas durante el proceso de segmentación, evitando la pérdida de información crítica. Utiliza el Cuaderno de Ingesta de Datos del Manual del Automóvil para desarrollar tu capa de pipeline de ingesta. Este archivo proporciona una guía detallada sobre cómo implementar esta capa y te guía a través del siguiente proceso.
1. Convertir Documentos Portátiles a DataFrames estructurados
Para desarrollar la capa de tu pipeline de ingesta, comienza utilizando el
google-cloud-documentai Biblioteca de Python para procesar el PDF fuente. Analiza la respuesta de la API en un DataFrame estructurado de Pandas. Cada fila representa un bloque de texto distinto con columnas para:
Coordenadas de la caja delimitadora
Número de página
Contenido del texto
2. Aplicar reglas para la inferencia estructural
Luego, itera a través del DataFrame y aplica un motor basado en reglas para inferir el contexto, de la siguiente manera:
Detección de encabezado: los bloques de texto en mayúsculas o con tamaños de fuente más grandes se identifican como encabezados de sección.
Reconocimiento de listados y procedimientos: Las posiciones de los recuadros delimitadores horizontales revelan patrones de sangría que indican listados o pasos de procedimientos.
Estrategia de segmentación semántica: El texto se agrupa en fragmentos significativos, continuando hasta que se encuentra un encabezado principal, asegurando que los procedimientos y las tablas permanezcan intactos.
3. Enriquece los datos para una recuperación de alta calidad
Créez une variable de string nommée breadcrumb_trail pour capturer le chemin hiérarchique de chaque fragment. Precede esta cadena al texto del fragmento antes de enviarlo al modelo textembedding-gecko de Google Vertex AI. Este diseño mejora la relevancia de la búsqueda semántica al codificar el texto del fragmento y su posición contextual en la jerarquía del documento con incrustaciones vectoriales.
4. Utilice un enfoque alternativo
Utiliza modelos de vectorización de fragmentos contextualizados, como voyage-context-3, para simplificar el proceso. Estos modelos analizan el contexto global de un documento al generar un embedding y ofrecen las siguientes ventajas:
Ingestión simplificada: Reduzca los pasos manuales de aumento de contexto, como crear y anteponer la variable
breadcrumb_trail. El modelo gestiona la inserción de contexto automáticamente durante la incrustación.Mayor precisión de recuperación: genere incrustaciones matizadas que mejoren la calidad de recuperación para fragmentos que carecen de contexto local.
Sensibilidad reducida al fragmentado: Implementar un proceso de recuperación menos dependiente del fragmentado. La conciencia global del modelo compensa una segmentación subóptima.
La capa de consulta
La capa de consulta implementa un enfoque de búsqueda por niveles que combina la coincidencia exacta con la búsqueda semántica. Cada nivel se ejecuta de forma independiente y sus resultados se combinan mediante la fusión de puntuaciones, como se indica a continuación:
El nivel 1 proporciona una coincidencia de palabras clave de alta precisión.
El nivel 2 agrega comprensión semántica a la puntuación de clasificación final.
Esta sección muestra cómo crear una capa de consulta que equilibre la precisión y la recuperación, manteniendo la transparencia de la puntuación. Los sistemas de producción utilizan enfoques por capas para la relevancia de la búsqueda y así medir la precisión de un documento recuperado para satisfacer la consulta del usuario.
Nivel 1: Precisión con búsqueda de texto compuesta
Las aplicaciones industriales requieren precisión para encontrar términos como códigos de error o números de parte. Puedes lograr esta precisión utilizando una estrategia multinivel dentro de un operador compound en Atlas búsqueda, como se indica a continuación:
{ "$search": { "index": "manual_text_search_index", "compound": { "should": [ // High-Precision: Exact phrase matching with highest boost { "phrase": { "query": "car won't start", "path": "breadcrumb_trail", "score": { "boost": { "value": 10 } } } }, // Balanced Relevance: Individual word matching with medium boost { "text": { "query": "car won't start", "path": "text", "score": { "boost": { "value": 4 } } } }, // High-Recall: Fuzzy matching to catch typos with low boost { "text": { "query": "car won't start", "path": "text", "fuzzy": {}, "score": { "boost": { "value": 1.5 } } } } ] } } }
Esta query utiliza la cláusula should, que permite compilar consultas de búsqueda compuestas. Las puntuaciones resultantes corresponden a la suma de todas las cláusulas coincidentes de la siguiente manera:
Una coincidencia de frase exacta aplica un multiplicador de puntuación de 10 para garantizar la clasificación más alta para los documentos con la frase exacta.
La coincidencia de palabras individuales aplica un multiplicador de puntuación de 4 a los documentos que contienen términos de búsqueda individuales. Esta funcionalidad captura contenido relevante incluso cuando las palabras aparecen por separado.
La coincidencia difusa aplica un multiplicador de puntuación del 1.5. Esta funcionalidad detecta documentos con errores tipográficos o variaciones y evita que superen a las coincidencias exactas.
Nivel 2: Descomponiendo la Búsqueda Híbrida para Transparencia
Utilice $rankFusion para combinar la consulta de texto precisa compound del nivel 1 con la búsqueda vectorial del nivel 2. Este operador de agregación ofrece precisión en la coincidencia de palabras clave y comprensión semántica. También puedes desglosar la puntuación final para mostrar exactamente cómo la búsqueda de texto y vectorial contribuyen a la clasificación de cada resultado. Esta transparencia permite a los desarrolladores:
Depure la relevancia de búsqueda para identificar si la búsqueda de texto o la búsqueda vectorial está impulsando el resultado de clasificación.
Comprenda por qué ciertos documentos tienen una clasificación más alta a través de desgloses claros de puntuaciones.
Optimice los escenarios de pruebas A/B con diferentes estrategias de ponderación.
Implemente la búsqueda híbrida con el archivo search_new.py. Este archivo contiene código que realiza lo siguiente:
Ejecuta
$rankFusionconscoreDetailsusando el siguiente pipeline de agregación:{ $rankFusion: { input: { pipelines: { <myPipeline1>: <expression>, <myPipeline2>: <expression>, ... } }, combination: { weights: { <myPipeline1>: <numeric expression>, <myPipeline2>: <numeric expression>, ... } }, scoreDetails: <bool> } } Extrae metadatos utilizando el operador
$addFields:{ $addFields: { scoreDetails: { $meta: "scoreDetails" } } } Aísla las contribuciones de la canalización mediante los operadores
$filtery$arrayElemAtpara analizar la matrizscoreDetails. Este enfoque crea campos para rangos y puntuaciones específicos devectorPipelineyfullTextPipeline.Calcula la contribución real de cada método de búsqueda utilizando la RRF fórmula, multiplicada por ponderaciones definidas por el usuario. Establece la constante
ka 60 para controlar la influencia de los resultados de menor rango.Proporciona resultados transparentes para las clasificaciones de búsqueda, de la siguiente manera:
SearchResult( score=0.0123, # Final combined RRF score vector_score=0.0086, # Vector pipeline contribution text_score=0.0037 # Text pipeline contribution )
Enfoque de modelo de datos
La capa de la plataforma de datos es el componente central de la arquitectura de referencia. Sirve como almacén persistente para todos los resultados enriquecidos del flujo de ingesta, proporcionando una base unificada para la capa de consulta. En esta solución, el modelo de documento de MongoDB impulsa la plataforma de datos al consolidar texto, incrustaciones, contexto jerárquico y metadatos en una única estructura.
Este enfoque elimina la necesidad de múltiples sistemas, como bases de datos separadas para metadatos, embeddings y búsqueda de texto completo, reduciendo la complejidad mientras se preserva el contexto rico necesario para la recuperación precisa de documentación técnica.
Los diseños tradicionales de varios sistemas introducen los siguientes desafíos:
Silos de datos: sincronizar y duplicar información entre sistemas aumenta la fragilidad y crea cuellos de botella operativos.
Gastos en general operativos: Ejecutar, escalar y asegurar servicios separados aumentan los costos de infraestructura.
Fricción para desarrolladores: Integrar y aprender APIs dispares retrasa la innovación.
Por el contrario, el modelo orientado a documentos simplifica la arquitectura. La capa de plataforma de datos admite de forma nativa RAG consciente del contexto, ya que almacena tanto el contenido como sus relaciones contextuales, garantizando que la búsqueda y la recuperación preserven la jerarquía y el documento significado.
A continuación se muestra un ejemplo del modelo de documento que almacena el texto de un solo fragmento de documento técnico junto con sus metadatos enriquecidos:
{ "_id": { "$oid": "685011ade0cccc356ba545df" }, "text": "WARNING: Switching off the engine when your vehicle is still ...", "breadcrumb_trail": "ENGINE START STOP -- WHAT IS AUTOMATIC ENGINE STOP", "heading_level_1": null, "heading_level_2": "WHAT IS AUTOMATIC ENGINE STOP", "heading_level_3": "Starting and Stopping the Engine", "content_type": [ "procedure", "safety" ], "metadata": { "source_pages": "122-122", "chunk_length": 1459, "systems": [ "engine", "transmission" ] }, "id": "chunk_00174", "prev_chunk_id": "chunk_00173", "next_chunk_id": "chunk_00175", "embedding": [ -0.016625087708234787, ..., 0.005507152993232012, -0.022588932886719704 ] }
El documento contiene los siguientes campos relevantes:
text:Contenido de texto sin formato, seleccionado por Atlas Search.breadcrumb_trail: Una string legible que conserva el contexto jerárquico completo. Este campo mantiene la estructura de navegación del documento para un RAG consciente del contexto.content_typeUna matriz de etiquetas que alimenta los filtros de selección múltiple en la interfaz de navegación. Este campo utiliza un índice.metadata.source_pagesUn rango de enteros que vincula el fragmento a su página original en el PDF fuente.metadata.systemsUn arreglo de etiquetas utilizado para filtrar y poblado mediante mapeo de palabras clave.idUn identificador único para el fragmento que asegura la trazabilidad.embeddingRepresentación vectorial de dimensión 768del texto contextualizado del fragmento. Este campo utiliza un índice de búsqueda vectorial Atlas para la recuperación de vectores.
Compilar la solución
Para implementar esta solución, siga las instrucciones del README en este repositorio de GitHub. Este repositorio lo guía a través de los siguientes pasos.
Lecciones clave
Establece un sistema dinámico de registro para el conocimiento técnico: Transforma documentos estáticos en una base de conocimientos estructurada y consultable mediante el almacenamiento de información técnica en MongoDB. MongoDB sirve como una fuente unificada de datos para las operaciones de su organización, asegurando que todas las aplicaciones de IA accedan a información coherente y rica en contexto. Este sistema proporciona una base sólida para herramientas posteriores, como chatbots de diagnóstico y sistemas de mantenimiento predictivo.
Engineer búsqueda híbrida: Combina búsqueda de texto y búsqueda vectorial con
$rankFusionpara la búsqueda híbrida. Descomponer puntuaciones finales para lograr transparencia en la depuración y ajuste de relevancia.Transforma sistemas RAG: Utiliza modelos de embedding como
voyage-context-3para procesar documentos completos y mantener el detalle a nivel de fragmento. Esta implementación proporciona hasta un 20% mejor recuperación de rendimiento que los enfoques estándar.
Autores
Mehar Grewal, MongoDB
Rami Pinto, MongoDB