Armazenamento e recuperação

Explorar mais o que o RAG Cookbook tem a oferecer para obter uma insight mais profunda das soluções RAG atuais

Um leadspace recolorido usando o leadspace do Watson para atenção ao cliente como base.
Visão geral

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.

Ferramentas IBM

IBM watsonx Discovery: solução abrangente de Enterprise Search & RAG

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.

Por que usar o watsonx Discovery com o Elasticsearch?

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.

Métodos de pesquisa compatíveis com o Watsonx Discovery

O Watsonx Discovery é uma solução versátil que suporta uma ampla gama de metodologias de pesquisa:

  • Busca por palavras-chave
  • Pesquisa semântica
  • Pesquisa vetorial
  • Pesquisa híbrida (fusão de classificação recíproca)

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.

Procura federada

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.

Recursos avançados de ingestão e indexação 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:

  • Extraçãode conteúdo: suporta uma variedade de formatos de arquivo, incluindo DOCX, PDF e PPTX, facilitando a descoberta e indexação de informações crítico para os negócios.
  • Integração de terceiros: conecte-se a uma ampla variedade de fontes de dados usando conectores pré-criados, permitindo uma integração perfeita com o ecossistema de dados da sua empresa.
  • Transformação e enriquecimento de dados: implemente pipelines de ingestão poderosos para transformar e enriquecer dados, garantindo que eles estejam prontos para recuperação e insights de alta qualidade.
Ilustração das funcionalidades e recursos do watsonx Discovery em relação aos bancos de dados de vetores

Para mais informações, explore os seguintes recursos do ElasticSearch para acelerar o desenvolvimento do seu watsonx Discovery:

Visualização aprimorada e Enterprise Search

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.

Privacidade e segurança

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.

Casos de uso: Watsonx Discovery and Orchestrate

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:

  • Responder a consultas com respostas precisas e baseadas em dados.
  • Executar fluxos de trabalho que dependem de insights e recuperação de dados em tempo real.

IBM watsonx.data: Um armazenamento de dados moderno com recursos integrados de banco de dados de vetores

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).

Opções de implementação

O IBM watsonx.data está disponível em três opções de implementação para atender a diversas necessidades:

  • SaaS totalmente gerenciado: disponível no IBM Cloud e AWS, fornecendo uma abordagem sem intervenção para configuração e escalabilidade.
  • Software conteinerizado autogerenciado: ideal para ambientes locais, aproveitando o IBM Cloud Pak for Data e o Red Hat OpenShift.
  • Versão do desenvolvedor com pegada de carbono pequena: adequada para ambientes de desenvolvimento que usam VMs únicas ou notebooks, proporcionando a flexibilidade para testar e criar protótipos localmente.

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.

Introdução

Para começar a usar o IBM watsonx.data, escolha a opção de implementação que melhor se adapte aos seus requisitos:

  • Para o IBM Cloud Deployment:
  • Visite a página do catálogo do IBM Cloud para watsonx.data.
  • Selecione um plano que se alinhe às suas necessidades.
  • Provisione uma instância.

  • Para implementação no local:

  • Obtenha chaves de ativação para o IBM watsonx.data dentro do IBM Cloud Pak for Data.
  • Obtenha autorizações do Red Hat OpenShift.
  • Siga o guia de implementação para configurar o software.

Documentação e suporte

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.

Watson Discovery

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.

Ferramentas de código aberto

LangChain

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.

Ilustração mostrando o processo de Langchain de alto nível para ingestão e embedding de documentos em uma solução RAG

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:

 

  • Recuperador de documentos pai: permite criar várias embeddings por documento pai, possibilitando que você procure fragmentos menores, mas retorne um contexto maior.
  • Recuperador de autoconsulta: as perguntas do usuário frequentemente contêm uma referência a algo que não é apenas semântico, mas que expressa alguma lógica que pode ser melhor representada como um filtro de metadados. A autoconsulta permite que você analise a parte semântica de uma consulta de outros filtros de metadados presentes na consulta.
  • Recuperador de conjunto: às vezes você pode querer recuperar documentos de várias fontes diferentes ou usar vários algoritmos diferentes. O conjunto retriever permite que você faça isso facilmente.

Milvus

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.

watsonx Discovery vs Milvus

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.

Funcionalidade

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.

Principais vantagens

Dimensionamento

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.

Integração 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.

Recursos avançados

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.

Recursos

Tutoriais do Milvus RAG

Usando LangChain Retrievers

Retriever de código aberto com LlamaIndex

Dicas, técnicas e recomendações

Lidando com duplicação, precedência e distribuição

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?

Hierarquias de Documentos

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.

Estrutura geral de uma hierarquia de documentos para uma solução RAG

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.

Exemplo de uma hierarquia de documentos de políticas corporativas para uma corporação operando em várias jurisdições.

Implementação

Armazenamentos de Vetores Híbridos

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"
)

Gráficos de conhecimento

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.

 

Exemplo de gráfico de conhecimento para um contrato legal

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.

Implementação

Neo4j

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.

Explorar mais

Obtenha os mais recentes padrões de tecnologia, arquiteturas de soluções e publicações de arquitetura da IBM.

  1. Acesse o IBM Architecture Center
Colaboradores

 

Rohan Singh, Fahad Bhutta, Lucas Major Chris Kirby Sacha Mongrain

Atualizado: 15 de novembro de 2024