Esta seção aborda ferramentas e considerações para o armazenamento e recuperação da base de documentos RAG. Lidamos com os dois tópicos em conjunto, pois a tecnologia de armazenamento limita os mecanismos de recuperação disponíveis para consultar e recuperar dados armazenados.
O IBM Watsonx Discovery, impulsionado pelo IBM Cloud Databases for Elasticsearch, é uma solução empresarial completa projetada para permitir e aprimorar casos de uso de geração aumentada de pesquisa e recuperação (RAG). Com recursos robustos para pesquisa vetorial, pesquisa semântica, pesquisa federada e muito mais, o watsonx Discovery fornece um conjunto avançado de ferramentas para a criação de aplicações contextuais orientadas por IA. Ele se integra sem dificuldades à plataforma de IA conversacional da IBM, watsonx Assistant, e às camadas de orquestração, como watsonx Orchestrate, para fornecer business solutions avançadas.
O Watsonx Discovery utiliza o IBM Cloud Databases for Elasticsearch, oferecendo um back-end poderoso e flexível para gerenciar suas necessidades de busca corporativa:
Monitoramento e Verificações de Saúde: Com o Elasticsearch, os desenvolvedores têm acesso a ferramentas abrangentes de monitoramento e verificação de saúde para garantir que os embeddings, metadados, tamanho dos blocos e estruturas dos documentos estejam otimizados. A página do Elasticsearch permite gerenciamento e dimensionamento sem dificuldades, com foco no desenvolvimento de aplicações em vez de tarefas operacionais, como backups, registro, monitoramento e configuração.
Advanced recursos: o watsonx Discovery suporta uma variedade de algoritmos de pesquisa avançados, como pesquisa semântica esparsa e densa, pesquisa filtrada por metadados, pesquisa léxica, pesquisa booleana (AND/OR/NOT/SLOP), pesquisa de prefixo, pesquisa difusa e pesquisa híbrida. Esses recursos são críticos para casos de uso de RAG desafiadores que envolvem consultas e documentos complexos. Implemente os tipos de pesquisa avançada descritos neste Notebook para otimizar sua implementação.
Integração com frameworks de LLM: a compatibilidade do Elasticsearch com frameworks de orquestração de LLM populares, como LangChain e LlamaIndex, o torna ideal para integração com o watsonx Discovery para impulsionar soluções RAG.
O Watsonx Discovery é uma solução versátil que suporta uma ampla gama de metodologias de pesquisa:
O modelo ELSER (Elastic Search Embeddings) é um dos principais modelos de embeddings pré-construídos usados para pesquisa semântica, permitindo a pesquisa contextual mesmo sem a necessidade de bancos de dados de vetores personalizados.
O watsonx Discovery permite a pesquisa federada nas implementações existentes, reduzindo a necessidade de armazenar e manter dados duplicados. Isso permite a pesquisa e a recuperação em toda a empresa em vários silos de dados.
O Watsonx Discovery simplifica a extração e a indexação de conteúdo por meio de um pacote abrangente de ferramentas de ingestão de dados:
Para mais informações, explore os seguintes recursos do ElasticSearch para acelerar o desenvolvimento do seu watsonx Discovery:
O Watsonx Discovery integra-se ao Kibana e à Enterprise Search para oferecer recuperação e visualização de informações escaláveis e orientadas por IA, adaptadas a ambientes corporativos de grande porte:
Kibana para visualização de dados: crie dashboards e visualizações personalizados com base nos dados ingeridos pelo Watsonx Discovery. Oferece análise em tempo real sobre métricas importantes, como extração de entidades, análise de sentimentos e classificação de documentos. Isso ajuda a rastrear tendências, padrões e anomalias em dados não estruturados, simplificando o processo de análise e melhorando a tomada de decisão.
Enterprise Search para recuperação escalável: aproveite o NLP e a pesquisa semântica para permitir uma recuperação rápida e precisa em fontes de dados estruturados e não estruturados. Personalize a funcionalidade de pesquisa para indexar e recuperar várias fontes de dados, incluindo documentos, e-mails e bancos de dados, a fim de criar aplicações de pesquisa específicas de domínio que se integram diretamente aos fluxos de trabalho dos negócios.
O watsonx Discovery aplica suporte nativo ao controle de acesso baseado em funções e atributos para garantir o acesso ao conteúdo e proteger a privacidade de dados. Isso garante que informações confidenciais sejam acessíveis apenas a usuários autorizados, protegendo os dados corporativos.
O watsonx Discovery pode ser associado ao Watsonx Orchestrate para melhorar os fluxos de trabalho de automação por meio da recuperação de dados com base no contexto. Quando o Orchestrate automatiza um processo de negócios que exige insights de dados não estruturados, ele aproveita a descoberta para recuperar e analisar o conteúdo relevante, possibilitando que execute tarefas inteligentes, como:
O IBM watsonx.data é uma plataforma de dados poderosa, construída em uma arquitetura de lakehouse aberta, que combina os pontos fortes dos data warehouses e dos data lakes. Oferece um único ponto de entrada para acessar todos os seus dados por meio de uma camada de metadados compartilhada e aberta, tornando-o uma solução ideal para organizações que buscam otimizar o gerenciamento de dados. Com suporte a formatos de dados abertos, recursos integrados de embedding vetorizada e uma interface de conversação impulsionada por IA generativa para insights de dados, o watsonx.data aprimora a análise em tempo real e os casos de uso de IA. A plataforma se integra sem dificuldades aos bancos de dados e ferramentas existentes, oferecendo opções flexíveis de implementação, incluindo configurações na nuvem e no local.
Um componente essencial do IBM watsonx.data é o watsonx.data Milvus, um banco de dados de vetores de código aberto projetado especificamente para armazenar, gerenciar e transferir dados vetoriais de alta dimensão, como embeddings. Esse banco de dados de vetores altamente configurável é otimizado para indexar e recuperar vetores de forma eficiente, tornando-o ideal para casos de uso que exigem pesquisas por similaridade vetorial em aplicação de IA. Watsonx.data Milvus é particularmente benéfico para clientes que utilizam o watsonx.ai e precisam de integração com recursos de banco de dados de vetores, bem como para aqueles interessados em implementar frameworks de código aberto como o LangChain, frequentemente usado em padrões de geração aumentada de recuperação (RAG).
O IBM watsonx.data está disponível em três opções de implementação para atender a diversas necessidades:
Para organizações que buscam aproveitar bancos de dados vetoriais, o watsonx.data oferece suporte à integração com o Milvus de código aberto, possibilitando recursos avançados como pesquisa por similaridade vetorial, essencial para aplicações de IA em tempo real.
Para começar a usar o IBM watsonx.data, escolha a opção de implementação que melhor se adapte aos seus requisitos:
Provisione uma instância.
Para implementação no local:
A IBM fornece ampla documentação para ajudar você a começar a usar a plataforma principal watsonx.data e o banco de dados de vetores Milvus:
Ao utilizar os recursos do watsonx.data, com arquitetura aberta, recursos integrados de banco de dados de vetores e funcionalidades avançadas de IA, as organizações podem otimizar processos de engenharia de dados, melhorar a análise em tempo real e liberar novos insights por meio de recursos impulsionados por IA. Essa plataforma unificada capacita as equipes a trabalhar com dados estruturados e não estruturados de maneiras inovadoras, reunindo funções analíticas tradicionais e pesquisa de similaridade vetorial de última geração em uma única solução.
O IBM Watson Discovery é uma ferramenta projetada para recuperar e analisar dados não estruturados. Sua principal funcionalidade é a pesquisa por palavra-chave, que permite aos usuários pesquisar em grandes conjuntos de dados usando termos ou frases específicas. Diferentemente dos mecanismos de pesquisa tradicionais que tendem a usar a correspondência de texto, o Watson Discovery utiliza o contexto por trás das palavras-chave para fornecer resultados mais relevantes.
Outro recurso importante do Watson Discovery é a extração de entidades, isso significa que o Watson Discovery pode extrair automaticamente informações-chave, como pessoas, locais, organizações e datas, a partir de texto não estruturado. Esse processo estrutura os dados para que sejam digeríveis e possam ser incorporados diretamente às respostas da RAG.
Muitas aplicações de LLM exigem dados específicos do usuário que não fazem parte do conjunto de treinamento do modelo. A principal maneira de realizar isso é por meio da geração aumentada de recuperação (RAG). Nesse processo, os dados externos são recuperados e passados para o LLM ao executar a etapa de geração.
O LangChain é compatível com muitos algoritmos de recuperação diferentes. O LangChain é compatível com métodos básicos, como pesquisa semântica. No entanto, também adicionamos uma coleção de algoritmos para aumentar o desempenho. Estes incluem:
O Milvus é uma plataforma de IA para automação e extração de dados estruturados de documentos não estruturados e é frequentemente usado com o watsonx Discovery para determinados cenários de recuperação. O Milvus pode se adaptar a vários formatos, tornando-o ideal para fluxos de trabalho de processamento em grande escala. Para um engenheiro de IA, oferece uma solução escalável que reduz o esforço manual na extração de dados, garantindo precisão e eficiência.
O Milvus é principalmente um banco de dados de vetores projetado para pesquisa de similaridade entre grandes conjuntos de dados, destacando-se particularmente em vetores de alta dimensão. O watsonx Discovery, por outro lado, é especializado em pesquisa semântica conversacional e compreensão/processamento de documentos, com ênfase particular em recursos de busca semântica e conversacional.
O Milvus oferece funcionalidades avançadas, como vetor esparso, vetor em massa, pesquisa filtrada e recursos de pesquisa híbrida. Ele também apresenta uma arquitetura distribuída que permite tanto expansão/redução quanto aumento/redução, tornando-o altamente escalável para grandes conjuntos de dados.
O Milvus pode lidar com dados vetoriais em grande escala e oferece suporte a pesquisas de similaridade vetorial de alto desempenho, essenciais para soluções RAG que recuperam informações de grandes conjuntos de dados.
O Milvus integra-se sem dificuldades ao watsonx.data, simplificando o gerenciamento de dados para modelos e aplicações de IA. Isso permite casos de uso de RAG escaláveis em grandes conjuntos de dados governados.
O Milvus é compatível com recursos avançados, como filtragem de metadados, aumentando a relevância dos resultados da pesquisa e melhorando a eficácia do sistema RAG.
Um armazenamento de vetores básico funciona bem para soluções de RAG simples, mas ele se compromete rapidamente quando há várias informações semelhantes no documento (semelhante não é o mesmo que relevante), as informações para responder a uma consulta estão espalhadas por vários documentos ou é distribuído em várias seções de um documento. Alguns exemplos para demonstrar…
Exemplo 1
Uma empresa opera escritórios em vários estados, cada um com suas próprias políticas de RH. A organização usa um formato de documento comum para informações de RH em todos os seus escritórios. Se a empresa incorporasse suas políticas de RH em um banco de dados de vetores, haveria múltiplos fragmentos para, por exemplo, solicitar folga com texto de apoio diferente; tornando as alucinações altamente prováveis.
Exemplo 2
Um contrato de serviços possui um glossário de termos definidos, que são capitalizados através do contrato para denotar a referência à definição, por exemplo, o Locador, o Período de Avaliação etc. Uma análise e fragmentação ingênua do contrato, que analisou e fragmentou o contrato do início ao fim, resultaria em interações como as seguintes:
Consulta: Quanto tempo é permitido para a Acme antes que eles sejam cobrados após a conclusão dos serviços? Resposta: O Comprador tem uma tolerância de 10 dias após o Período de Avaliação antes que seja cobrado pelos serviços.
Útil, mas garantido para criar consultas de acompanhamento e alguma adição rápida para chegar a uma resposta mais completa.
Exemplo 3
Um governo estadual publica emendas à sua legislação como "edições" nas leis existentes. Por exemplo, a “Seção 12.2 da Lei de Controle de Narcotics é alterada para excluir a Cannabis e produtos relacionados à Cannabis”. Como um banco de dados de vetores determinará que esse trecho de texto deve ter precedência sobre todos os outros fragmentos que lidam com o tópico da Cannabis?
Uma hierarquia de documentos organiza partes de documentos em categorias, que agrupam documentos relacionados; semelhante a um índice ou conjunto de pastas em um computador. O uso de uma hierarquia de documentos permite que uma solução de RAG "reduza" o assunto de uma consulta do usuário para recuperar somente os documentos mais relevantes.
Aplicando isso ao exemplo de documento de RH de vários estados acima, uma hierarquia de documentos útil categorizaria o documento por estado, permitindo que a solução de RAG recupere apenas fragmentos de documentos relevantes para um estado específico. Conforme mostrado na figura abaixo, uma possível hierarquia poderia organizar documentos primeiro por país, depois por estado/província aplicável e, em seguida, por áreas políticas ou tópicos. Obviamente, isso significa que a solução precisará inferir o estado relevante a partir do estado de residência listado do usuário ou solicitar que o usuário forneça o estado de interesse.
As hierarquias de documentos podem ser implementadas em armazenamentos de vetores híbridos, armazenamentos de vetores compatíveis com esquemas que compreendem tipos de dados numéricos e categóricos juntamente com vetores, como o Milvus, usando campos de categoria e subcategoria como parte dos critérios de pesquisa, conforme mostrado na definição do esquema Milvus abaixo .
chunk_id = FieldSchema( name="chunk_id", dtype=DataType.INT64, auto_id=True, ) state_id = FieldSchema( name="state_id", dtype=DataType.INT64, ) chunk = FieldSchema( name="chunk", dtype=DataType.FLOAT_VECTOR, dim=2 ) schema = CollectionSchema( fields=[chunk_id, state_id, chunk], description="HR documents by state" )
Os gráficos de conhecimento capturam as relações entre entidades em um documento ou entre documentos. Diferentemente de uma pesquisa por similaridade em um banco de dados de vetores, um gráfico de conhecimento pode recuperar de forma consistente e precisa relações e conteúdos relevantes, o que pode reduzir significativamente a ocorrência de alucinações. Quando combinados com pesquisas por similaridade em bancos de dados vetoriais, os bancos de dados gráficos podem permitir que as soluções RAG reúnam conteúdo relacionado em um documento e/ou em um conjunto de documentos. A imagem abaixo mostra um gráfico de conhecimento em potencial para contratos de serviços.
Embora o melhor gráfico de conhecimento para uma solução RAG seja criado e mantido por humanos, o uso de um grande modelo de linguagem (LLM) para analisar as entidades e relações em um documento e criar um gráfico de conhecimento produz resultados surpreendentemente bons.
Neo4j é um banco de dados gráfico de código aberto (GPLv3) popular. Este tutorial leva o leitor a configurar e fazer programação de uma solução RAG aprimorada por gráficos de conhecimento com neo4j e Langchain.
Rohan Singh, Fahad Bhutta, Lucas Major Chris Kirby Sacha Mongrain
Atualizado: 15 de novembro de 2024