Casos de uso: Inteligencia artificial, gestióndecontenidos, búsqueda inteligente
Industrias: Fabricación y movilidad
Productos: MongoDB Atlas, Búsqueda enMongoDB Atlas, Búsqueda vectorial en MongoDB Atlas, Búsqueda híbrida
Socios: Google Cloud
Resumen de la solución
Las industrias con uso intensivo de capital, como la aeroespacial, la energética, la automotriz y la manufacturera, dependen de décadas de conocimiento técnico complejo. Sin embargo, este conocimiento técnico se almacena en colecciones de documentos estáticos, como manuales, guías de mantenimiento y wikis internas, que se almacenan en archivos PDF o no estructurados, a los que puede resultar difícil acceder. Como resultado, los trabajadores de primera línea no pueden acceder a información precisa en tiempo real.
Esta brecha genera los siguientes desafíos para las empresas:
El tiempo de inactividad operativa puede costar a las empresas hasta $,260 000 por horaAlgunos sectores, como el automotriz, experimentan costos de $,50 000 por minuto. Además de estos costos, la encuesta "Valor de la Confiabilidad" de ABB reveló que más de dos tercios de las empresas industriales experimentan interrupciones imprevistas al menos una vez al mes, con costos típicos de $,125 000 por hora.
Los errores de producción y el reproceso afectan 97al % de los profesionales de la fabricación debido a una documentación deficiente.
Las ineficiencias en la documentación reducen las ganancias de otras iniciativas tecnológicas, según el 73% de los profesionales de fabricación.
Para abordar esta brecha, esta solución presenta un marco arquitectónico para transformar documentos inertes en una base de conocimiento dinámica utilizando información sensible al 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 se mantengan vinculadas a sus procedimientos y que las especificaciones técnicas conserven su alcance adecuado. El sistema resultante aumenta la seguridad de las operaciones, acelera la productividad y sienta las bases para aplicaciones de IA industrial de próxima generación.
Arquitecturas de Referencia
La arquitectura para construir un sistema RAG consciente del contexto consta de tres capas centrales:
Capa de canalización 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 diagrama a continuación ilustra el flujo de datos desde la ingesta de PDF hasta las respuestas a las consultas del usuario, mostrando los componentes técnicos y sus interacciones. Muestra cómo cada capa procesa, almacena y recupera la documentación técnica, preservando el contexto.
Figura 1. RAG contextual para la arquitectura de documentos técnicos
La capa de canalización de ingestión
La capa de canalización de ingesta transforma los PDF sin procesar en datos estructurados que preservan el contenido y el contexto. Esto mejora la calidad y la fiabilidad de su sistema RAG al garantizar que las relaciones técnicas, las estructuras jerárquicas y las dependencias contextuales se mantengan intactas durante el proceso de fragmentación, evitando así la pérdida de información crítica. Utilice el Cuaderno de Ingesta de Datos del Manual del Automóvil para desarrollar su capa de canalización de ingesta. Este archivo proporciona una guía detallada sobre cómo implementar esta capa y le guía a través del siguiente proceso.
1. Convertir Documentos Portátiles a DataFrames estructurados
Para desarrollar su capa de canalización de ingesta, comience 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, itere a través del DataFrame y aplique 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 listas y procedimientos: las posiciones de los cuadros delimitadores horizontales revelan patrones de sangría que indican listas o pasos de procedimientos.
Estrategia de fragmentación semántica: el texto se agrupa en fragmentos significativos y continúa hasta encontrar un encabezado principal, lo que garantiza que los procedimientos y las tablas permanezcan intactos.
3. Enriquecer datos para una recuperación de alta calidad
Cree una variable de cadena llamada breadcrumb_trail para capturar la ruta jerárquica de cada fragmento. Anteponga 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 mediante incrustaciones vectoriales.
4. Utilice un enfoque alternativo
Utilice modelos de incrustación de fragmentos contextualizados, como 3voyage-context-, para simplificar el proceso. Estos modelos analizan el contexto global de un documento al generar una incrustación y ofrecen las siguientes ventajas:
Ingesta simplificada: Reduce los pasos manuales de aumento de contexto, como la creación y anteposición de la
breadcrumb_trailvariable. El modelo gestiona la inyecció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 a la fragmentación: Implementar un proceso de recuperación menos dependiente de la fragmentación. La conciencia global del modelo compensa la segmentación deficiente.
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 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 compuesto
Las aplicaciones industriales requieren precisión para encontrar términos como códigos de error o números de pieza. Puede lograr esta precisión utilizando una estrategia multicapa dentro del operador compound en Atlas Search, 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 consulta utiliza la cláusula should, que permite crear consultas de búsqueda compuestas. Las puntuaciones resultantes equivalen a la suma de todas las cláusulas coincidentes, como se indica a continuación:
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 función captura contenido relevante incluso cuando las palabras aparecen por separado.
La coincidencia aproximada aplica un multiplicador de puntuación de 1.5. Esta función detecta documentos con errores tipográficos o variaciones y evita que superen las coincidencias exactas.
Nivel 2: Descomposición de la búsqueda híbrida para la transparencia
Utilice $rankFusion para combinar la consulta de texto precisa compound del nivel 1 con la búsqueda vectorial semántica del nivel 2. Este operador de agregación proporciona precisión en la coincidencia de palabras clave y comprensión semántica. También puede desglosar la puntuación final para mostrar exactamente cómo la búsqueda de texto y vectorial contribuye a la clasificación de cada resultado. Esta transparencia permite a los desarrolladores:
Depure la relevancia de la búsqueda para identificar si la búsqueda de texto o vector impulsa el resultado de la 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
$rankFusionconscoreDetailsutilizando la siguiente canalización 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 mediante la fórmula RRF,multiplicada por las ponderaciones definidas por el usuario. Establece la constante
ken 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 del 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 contar con múltiples sistemas, como bases de datos separadas para metadatos, incrustaciones y búsqueda de texto completo, lo que reduce la complejidad y preserva el rico contexto necesario para la recuperación precisa de la documentación técnica.
Los diseños tradicionales de múltiples sistemas presentan los siguientes desafíos:
Silos de datos: sincronizar y duplicar información entre sistemas aumenta la fragilidad y crea cuellos de botella operativos.
Gastos operativos: ejecutar, escalar y proteger servicios separados aumenta los costos de infraestructura.
Fricción del desarrollador: la integración y el aprendizaje de API dispares ralentizan la innovación.
En cambio, el modelo de documento simplifica la arquitectura. La capa de la plataforma de datos admite de forma nativa RAG contextual, almacenando tanto el contenido como sus relaciones contextuales, lo que garantiza que la búsqueda y la recuperación preserven la jerarquía y el significado del documento.
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 cadena legible que conserva el contexto jerárquico completo. Este campo mantiene la estructura de navegación del documento para RAG contextual.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_pages:Un rango de números enteros que vincula el fragmento a su página original en el PDF de origen.metadata.systems:Una matriz de etiquetas utilizadas para filtrar y rellenadas mediante mapeo de palabras clave.id:Un identificador único para el fragmento que garantiza 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.
Construir la solución
Para implementar esta solución, siga las instrucciones de README en este repositorio de GitHub. Este repositorio le guiará en los siguientes pasos.
Aprendizajes clave
Establezca un sistema dinámico de registro de conocimiento técnico: Transforme documentos estáticos en una base de conocimiento estructurada y consultable almacenando información técnica en MongoDB. MongoDB funciona como una fuente unificada de información veraz para las operaciones de su organización, garantizando que todas las aplicaciones de IA accedan a información consistente y contextualizada. Este sistema proporciona una base sólida para herramientas posteriores, como chatbots de diagnóstico y sistemas de mantenimiento predictivo.
Diseñar búsqueda híbrida: Combine la búsqueda de texto y vectorial con
$rankFusionpara lograr una búsqueda híbrida. Descomponga las puntuaciones finales para lograr transparencia en la depuración y el ajuste de relevancia.Transforme los sistemas RAG: Utilice modelos de incrustación como
voyage-context-3para procesar documentos completos y mantener el detalle a nivel de fragmento. Esta implementación ofrece un rendimiento de 20recuperación hasta un % superior al de los enfoques estándar.
Autores
Mehar Grewal, MongoDB
Rami Pinto, MongoDB