Casos de uso: Inteligência artificial, Gerenciamento de conteúdo,Pesquisa inteligente
Setores: Manufatura e mobilidade
Produtos: MongoDB Atlas, Atlas Search, MongoDB Atlas Vector Search, Híbrida Search
Parceiros: Google Cloud
Visão Geral da Solução
Setores de capital intensivo, como o autoespacial, o de energia, o automotivo e o de Manufatura, dependem de décadas de conhecimento técnico complexo. No entanto, esse conhecimento técnico é mantido em coleções de documentos estáticos, como manuais, guias de manutenção e wikis internos, que são armazenados como PDFs ou arquivos não estruturados que podem ser difíceis de acessar. Como resultado, os trabalhadores da linha de frente não podem recuperar informações precisas em tempo real.
Essa lacuna leva aos seguintes desafios para as empresas:
O tempo de inatividade operacional pode custar às empresas até $,260 000 por hora, com alguns setores, como o automotivo, enfrentando custos de50$,000 por minuto. Somando-se a esses custos, a pesquisa de Valor de Confiabilidade da ABB concluiu que mais de dois-terços das empresas do setor privado sofrem interrupções não planejadas pelo menos uma vez por mês, com custos típicos de125 US$,000 por hora.
Erros de produção e retrabalho afetam 97% dos profissionais da produção devido à documentação deficiente.
As ineficiências de documentação reduzem os ganhos de outras iniciativas de tecnologia, de acordo com 73% dos profissionais de produção.
Para preencher esta lacuna, esta solução apresenta uma estrutura arquitetônica para transformar documentos inertes em uma base de conhecimento dinâmica usando RAG sensível ao contexto. Ao contrário dos sistemas RAG padrão que perdem o contexto crítico ao dividir documentos em partes, o RAG sensível ao contexto preserva a estrutura hierárquica e os relacionamentos na documentação técnica. Os usuários podem então fazer perguntas em linguagem natural e receber respostas precisas de sua documentação, com o sistema localizando e apresentando automaticamente as informações mais relevantes enquanto preserva seu contexto técnico original.
Ao manter a estrutura do documento durante o processo RAG, o sistema garante que os avisos de segurança permaneçam conectados a seus procedimentos e que as especificações técnicas mantenham seu escopo adequado. O sistema resultante torna as operações mais seguras, acelera a produtividade e abre o caminho para aplicativos de IA comercial da próxima geração.
Arquiteturas de referência
A arquitetura para a criação de um sistema RAG sensível ao contexto consiste em três camadas principais:
Camada do pipeline de ingestão
Camada da plataforma de dados
Camada de query
Essas camadas trabalham juntas para transformar a documentação técnica estática em uma base de conhecimento inteligente. Cada camada mantém a estrutura do documento e permite a correspondência precisa de palavras-chave e a compreensão semântica. Esta seção discute as camadas de ingestão e query, enquanto a seção Approach de Modelo de Dados aborda a camada de plataforma de dados em mais detalhes.
O diagrama abaixo ilustra o fluxo de dados da ingestão de PDF para as respostas de consulta do usuário, mostrando os componentes técnicos e suas interações. Ele demonstra como cada camada processa, armazena e recupera documentação técnica enquanto preserva o contexto.
figura 1. RAG sensível ao contexto para arquitetura de documentos técnicos
A camada do pipeline de ingestão
A camada de pipeline de ingestão transforma PDFs brutos em dados estruturados que preservam conteúdo e contexto. Isso melhora a qualidade e a confiabilidade do seu sistema RAG, garantindo que os relacionamentos técnicos, as estruturas hierárquicas e as dependências contextuais permaneçam intactas durante o processo de chunking, evitando a perda de informações críticas. Use o Notebook de ingestão de dados manual do carro para desenvolver sua camada de pipeline de ingestão. Este arquivo fornece um guia detalhado sobre como implementar essa camada e o orienta no processo a seguir.
1. Converter documentos móveis em estruturas DataFrames
Para desenvolver sua camada de pipeline de ingestão, comece usando a biblioteca Python google-cloud-documentai
para processar a origem do PDF. Analise a resposta da API em um Pandas DataFrame estruturado. Cada linha representa um bloco de texto distinto com colunas para:
Coordenadas da caixa delimitadora
Número da página
Conteúdo de texto
2. Aplicar Regras para Inferência Estrutural
Em seguida, itere pelo DataFrame e aplique um mecanismo baseado em regras para inferir contexto, como segue:
Detecção de cabeçalho: blocos de texto em letras maiúsculas ou com tamanhos de fonte maiores são identificados como cabeçalhos de seção.
Recurso de lista e procedimento: As posições horizontais da caixa delimitadora revelam padrões de indentação que indicam listas ou etapas de procedimento.
Estratégia de chunking semântica: o texto é agregado em chunks significativos, continuando até que um cabeçalho principal seja encontrado, garantindo que os procedimentos e as tabelas permaneçam intactos.
3. Enriquecer dados para recuperação de alta qualidade
Crie uma variável de string denominada breadcrumb_trail
para capturar o caminho hierárquico para cada chunk. Anexe essa string ao texto do bloco antes de enviá-lo para o modelo Google Vertex AI textembedding-gecko
. Esse design melhora a relevância da pesquisa semântica codificando o texto do bloco e sua posição contextual na hierarquia do documento com incorporações vetoriais.
4. Usar uma abordagem alternativa
Utilize modelos de integração de chunks contextualizados, como preference-context-, para simplificar o processo. Esses modelos analisam o contexto global de um documento ao gerar uma incorporação e fornecem as seguintes 3vantagens:
Ingestão simplificada: reduza as etapas manuais de aumento de contexto, como criar e preceder a
breadcrumb_trail
variável . O modelo lida com a injeção de contexto automaticamente durante a incorporação.Maior precisão de recuperação: gere incorporações detalhadas que melhoram a qualidade de recuperação para blocos que não têm contexto local.
Sensibilidade reduzida ao agrupamento: implemente um processo de recuperação menos dependente do agrupamento. A conscientização global do modelo compensa a segmentação abaixo do ideal.
A camada de query
A camada de query implementa uma abordagem de pesquisa em níveis que combina a correspondência exata com pesquisa semântica. Cada nível é executado de forma independente e seus resultados são combinados usando fusão de pontuação, como segue:
O nível 1 oferece correspondência de palavras-chave de alta precisão.
O nível 2 adiciona compreensão semântica à pontuação final da classificação.
Esta seção demonstra como criar uma camada de query que equilibra precisão e recuperação, mantendo a transparente da pontuação. Os sistemas de produção usam abordagens em camadas para relevância da pesquisa para medir a precisão de um documento recuperado em satisfazer a query do usuário.
Nível 1: precisão com pesquisa de texto composto
Os aplicativos comerciais exigem precisão para encontrar termos como códigos de erro ou números de peça. Você pode obter essa precisão usando uma estratégia de várias camadas dentro de um operador compound
no Atlas Search, como segue:
{ "$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 usa a cláusula should
, que permite criar queries de pesquisa compostas. As pontuações resultantes são iguais à soma de todas as cláusulas correspondentes da seguinte forma:
Uma correspondência exata de frase aplica um multiplicador de pontuação de 10 para garantir a classificação mais alta para documentos com a frase exata.
A correspondência individual de palavras aplica um multiplicador de pontuação de 4 a documentos que contêm termos de pesquisa individuais. Esse recurso captura conteúdo relevante mesmo quando as palavras aparecem separadamente.
A correspondência difusa aplica um multiplicador de pontuação de 1.5. Esse recurso captura documentos com erros de digitação ou variações e impede que eles superem as correspondências exatas.
Nível 2: decompondo a pesquisa híbrida para a transparente
Use $rankFusion
para combinar a consulta de texto compound
precisa do nível 1 com a pesquisa semântica vetorial do nível 2. Esse operador de agregação oferece precisão de correspondência de palavras-chave e compreensão semântica. Você também pode detalhar a pontuação final para mostrar exatamente como a pesquisa vetorial e de texto contribui para a classificação de cada resultado. Essa clareza permite que os desenvolvedores:
Depurar a relevância da pesquisa para identificar se a pesquisa de texto ou vetor gera o resultado da classificação.
Entenda por que determinados documentos têm uma classificação mais alta por meio de detalhamentos claros das pontuações.
Otimize os cenários de teste A/B com diferentes estratégias de ponderação.
Implemente a pesquisa híbrida usando o arquivo search_new.py. Este arquivo contém código que faz o seguinte:
Executa
$rankFusion
comscoreDetails
usando o seguinte agregação pipeline:{ $rankFusion: { input: { pipelines: { <myPipeline1>: <expression>, <myPipeline2>: <expression>, ... } }, combination: { weights: { <myPipeline1>: <numeric expression>, <myPipeline2>: <numeric expression>, ... } }, scoreDetails: <bool> } } Extrai metadados usando o operador
$addFields
:{ $addFields: { scoreDetails: { $meta: "scoreDetails" } } } Isola as contribuições do pipeline usando os operadores
$filter
e$arrayElemAt
para analisar a arrayscoreDetails
. Essa abordagem cria campos para classificações e pontuações específicas a partir devectorPipeline
efullTextPipeline
.Calcula a contribuição real de cada método de pesquisa usando a fórmula RRF,multiplicada por pesos definidos pelo usuário. Ela define a constante
k
como 60 para controlar a influencia do resultado de classificação inferior.Fornece resultados transparentes para classificações de pesquisa, como segue:
SearchResult( score=0.0123, # Final combined RRF score vector_score=0.0086, # Vector pipeline contribution text_score=0.0037 # Text pipeline contribution )
Abordagem do modelo de dados
A camada da plataforma de dados é o componente central da arquitetura de referência. Ele serve como armazenamento persistente para todas as saídas enriquecidas do pipeline de ingestão, fornecendo uma base unificada para a camada de query. Nessa solução, o modelo de documento do MongoDB capacita a plataforma de dados consolidando texto, incorporações, contexto hierárquico e metadados em uma única estrutura.
Essa abordagem elimina a necessidade de vários sistemas, como bancos de dados separados para metadados, incorporações e pesquisa de texto completo, reduzindo a complexidade e preservando o contexto avançado necessário para a recuperação precisa da documentação técnica.
Os projetos tradicionais de vários sistemas introduzem os seguintes desafios:
silos de dados: sincronizar e duplicar informações entre sistemas aumenta a fragmentação e cria gargalos operacionais.
Sobrecarga operacional: a execução, o dimensionamento e a proteção de serviços separados elevam os custos de infraestrutura.
Atrito do desenvolvedor: integrar e aprender APIs diferentes desacelera a pesquisa.
Por outro lado, o modelo de documento simplifica a arquitetura. A camada da plataforma de dados suporta nativamente o RAG sensível ao contexto, armazenando o conteúdo e seus relacionamentos contextuais, garantindo que a pesquisa e a recuperação preservem a hierarquia e o significado do documento .
Abaixo está uma amostra do modelo de documento que armazena o texto de um único bloco de documento técnico juntamente com seus metadados 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 ] }
O documento contém os seguintes campos relevantes:
text
: Conteúdo de texto bruto, direcionado pelo Atlas Search.breadcrumb_trail
: Uma string legível por humanos preservando o contexto hierárquico completo. Esse campo mantém a estrutura de navegação do documento para RAG sensível ao contexto.content_type
: uma array de tags que alimenta os filtros de seleção múltipla na interface de navegação. Este campo utiliza um índice.metadata.source_pages
: um intervalo de números inteiros que vincula o chunk de volta à página original no PDF de origem.metadata.systems
: Uma array de tags usadas para filtragem e preenchidas por mapeamento de palavras-chave.id
: Um identificador exclusivo para o chunk que garante rastreabilidade.embedding
: Uma representação vetorial 768dimensional do texto contextualizado do bloco. Este campo utiliza um índice do Atlas Vector Search para recuperação de vetores.
Construir a solução
Para implantar esta solução, siga as instruções do README
neste repositório GitHub. Este repositório orienta você nas seguintes etapas.
Principais Aprendizados
Estabeleça um sistema dinâmico de registro para conhecimento técnico: transforme documentos estáticos em uma base de conhecimento estruturada e consultável, armazenando informações técnicas no MongoDB. O MongoDB serve como uma fonte unificada da verdade para as operações da sua organização, garantindo que todos os aplicativos de IA acessem informações consistentes e ricas em contexto. Esse sistema fornece uma base sólida para ferramentas downstream, como chatbots de diagnóstico e sistemas de manutenção preditiva.
Pesquisa híbrida de engenharia: combine texto e pesquisa
$rankFusion
vetorial com para pesquisa híbrida. Decomponha as pontuações finais para obter clareza na depuração e no ajuste de relevância.Transformar sistemas RAG: use modelos de incorporação como
voyage-context-3
para processar documentos inteiros e manter detalhes em nível de bloco. Essa implementação fornece um desempenho de 20recuperação até % melhor do que as abordagens padrão.
Autores
Mehar Grewal, MongoDB
Rami Pinto, MongoDB
Saiba mais
Transformação da experiência do motorista com a MongoDB e o Google Cloud
Para saber como criar uma plataforma de dados para a Gen AI, leia o blog Construindo uma plataforma de dados unificada para a Gen AI.