Crie pipelines RAG multimodais melhores com FiftyOne, LlamaIndex e Milvus
Introdução
No recente Unstructured Data Meetup organizado pela Zilliz, Jacob Marks, engenheiro de machine learning e evangelista de desenvolvedores na Voxel51, discutiu as complexidades de criar pipelines RAG multimodais robustos usando FiftyOne, LlamaIndex e Milvus.
Assista à reprise da palestra de Jacob no meetup
Esta palestra se concentrou em como podemos usar nossos dados para criar um pipeline RAG multimodal melhor. Ela enfatizou o uso de ferramentas gratuitas e de código aberto, especificamente aproveitando o FiftyOne para gerenciamento e visualização de dados, o Milvus como um armazenamento vetorial e o LlamaIndex para orquestrar grandes modelos de linguagem (LLMs).
Antes de analisarmos o RAG multimodal, vamos ver uma visão geral do RAG em geral.
Visão geral do RAG em um contexto baseado em texto
Jacob começa explicando a Geração Aumentada por Recuperação (RAG) baseada em texto e como ela funciona. Seremos breves, pois já abordamos sistemas RAG baseados em texto em detalhes neste manual de RAG em quatro partes.
O RAG aprimora as capacidades dos grandes modelos de linguagem (LLMs) ao aumentar seu conhecimento com dados externos relevantes. Os LLMs, apesar de serem treinados em vastos conjuntos de dados, frequentemente têm limitações como cortes de conhecimento e alucinações. O RAG mitiga esses problemas recuperando e incorporando documentos relevantes de um banco de dados vetorial externo como o Milvus ou o Zilliz Cloud para fornecer aos usuários respostas mais precisas e contextualmente relevantes.
A arquitetura de um sistema RAG baseado em texto é simples. Vamos dar uma olhada no processo RAG.
Geração Aumentada por Recuperação (RAG)
Fig. 1: Processo RAG de integração de LLMs com bancos de dados vetoriais
No diagrama acima, os documentos são divididos em segmentos de texto menores e depois transformados em representações numéricas conhecidas como embeddings vetoriais. Esses embeddings são armazenados em um banco de dados vetorial como o Milvus.
Quando um usuário fornece um prompt, ele também é convertido em um embedding vetorial e usado para consultar o banco de dados vetorial em busca das passagens de texto mais relevantes. Combinadas com o prompt original, essas passagens relevantes formam uma entrada rica em contexto para o LLM. Por fim, o LLM processa essa entrada para gerar uma resposta mais precisa e contextualmente relevante.
Essa abordagem é altamente eficaz para sistemas que dependem exclusivamente de texto. No entanto, um sistema RAG baseado em texto é insuficiente para sistemas que precisam de múltiplos tipos de dados para tomar decisões informadas. Tome uma loja de e-commerce, por exemplo. Não podemos confiar apenas em texto para apresentar o produto mais relevante a um usuário; precisamos de imagens de produtos, descrições e mais. É aqui que o RAG multimodal se mostra inestimável, aproveitando LLMs multimodais modernos para integrar várias modalidades de dados.
O que são LLMs multimodais e suas aplicações
LLMs multimodais como GPT-4o e Qwen-VL são sistemas de inteligência artificial capazes de processar e compreender múltiplos tipos de dados, como texto, imagens, áudio e vídeo. Eles integram e interpretam informações de várias modalidades, permitindo gerar legendas descritivas para imagens, responder a perguntas sobre vídeos e criar conteúdo que combina texto com elementos visuais. Essa capacidade permite que eles compreendam melhor e gerem respostas contextualmente enriquecidas pelos diversos tipos de dados de entrada.
Eles são aplicados em vários domínios, incluindo serviços médicos, varejo e muito mais.
Nos setores de serviços médicos, existem imagens médicas visuais, notas clínicas baseadas em texto e relatórios médicos no domínio médico. LLMs multimodais sintetizam essas informações multimodais e ajudam os médicos em seu trabalho. Um exemplo é o LLM Med-PaLM, que aproveita tanto dados textuais quanto visuais para aprimorar a tomada de decisões médicas e melhorar os resultados do atendimento ao paciente.
No varejo, LLMs multimodais criam anúncios personalizados e aprimoram os recursos de busca de produtos. Eles processam e integram vários tipos de dados, como descrições de texto, imagens de produtos e dados de interação dos clientes (por exemplo, avaliações e consultas de busca). Ao analisar essas informações multimodais, esses LLMs podem gerar anúncios personalizados adaptados às preferências individuais e ao histórico de navegação.
Mesmo com esses recursos avançados, LLMs multimodais têm as mesmas limitações que os baseados em texto. Eles sofrem com cortes de conhecimento e alucinações. Para mitigar esses problemas, precisaremos de um RAG multimodal.
Entendendo o RAG Multimodal
RAG multimodal é uma técnica avançada de IA que combina recuperação de informações e modelagem generativa para aprimorar as capacidades de LLMs multimodais. Para entender como o RAG multimodal funciona, vamos dar uma olhada no seguinte pipeline de recuperação RAG multimodal.
Fig 2- Pipeline de recuperação RAG multimodal
Fig 2: Pipeline de recuperação RAG multimodal
Quando os usuários fazem uma pergunta, um modelo de embedding primeiro converte a consulta em um embedding. Esse embedding é então usado para consultar um banco de dados vetorial multimodal como o Milvus, que armazena embeddings de documentos relacionados, incluindo texto e imagens. O banco de dados vetorial recupera os vizinhos mais próximos da pergunta, essencialmente os documentos mais relevantes. Os documentos recuperados se combinam com a pergunta original para formar um prompt multimodal, incorporando contexto textual e visual. Um LLM multimodal então processa esse prompt enriquecido, integrando os diversos tipos de dados para gerar uma resposta mais precisa e contextualmente relevante.
Na próxima seção, vamos colocar a mão na massa e ver como implementar um pipeline RAG multimodal usando FiftyOne, LLamaIndex e Milvus.
Implementando um Pipeline RAG Multimodal Usando FiftyOne, LLamaIndex e Milvus
Há duas maneiras de implementar um pipeline RAG multimodal usando FiftyOne, LLamaIndex e Milvus. Uma é escrever seu próprio código, o que dá mais controle, mas leva mais tempo, e a outra é usar plugins que permitem adicionar funcionalidade ao aplicativo FiftyOne.
Esta seção explorará a implementação do pipeline RAG multimodal usando o fiftyone-multimodal-rag-plugin alimentado pelo banco de dados vetorial Milvus. Se você quiser codificar do zero, aqui está um guia para iniciantes sobre como gerar embeddings vetoriais multimodais com Milvus e FiftyOne.
Configurando seu Ambiente
Jacob faz uma demonstração com o plugin multimodal instalado na palestra. Vamos desacelerar isso, pois uma etapa crucial de instalação não é mencionada explicitamente nem na demonstração nem no guia de instalação do plugin no GitHub. É a etapa de instalação do Milvus.
Para usar o plugin, você já deve ter uma instância do Milvus em execução no seu computador. O plugin Fiftyone depende do Milvus para armazenar e recuperar embeddings multimodais. O plugin presume que o Milvus esteja em execução em http://localhost:19530. Se você não tiver o Milvus instalado, siga a documentação do Milvus para instalá-lo e executá-lo.
Depois de instalar e executar o Milvus, siga estas diretrizes de instalação para instalar e configurar o fiftyone-multimodal-rag-plugin. Quando a configuração estiver concluída, inicie o aplicativo FiftyOne e navegue pelas operações disponíveis para ver as funcionalidades fornecidas pelo plugin.
Fig 3- Página de seleção de operações disponíveis do FiftyOne
Fig 3: Página de seleção de operações disponíveis do FiftyOne
Vamos agora criar o pipeline RAG.
Etapa 1: Criar um Dataset a partir de Documentos LLamaIndex
Esta etapa envolve selecionar uma pasta contendo suas imagens e arquivos de texto do seu computador. Você incorporará esses dados multimodais e armazenará os embeddings multimodais no Milvus. Para carregar a pasta do seu dataset, selecione a operação Create a Dataset from the LLamaIndex Documents. Em seguida, dê um nome ao seu dataset e escolha seu diretório.
Fig 4- Criando um dataset a partir de documentos LLamaIndex
Fig 4: Criando um dataset a partir de documentos LLamaIndex
Clique em Execute para carregar e visualizar seu dataset.
Fig 5- Visualização de um dataset multimodal no FiftyOne
Fig 5: Visualização de um dataset multimodal no FiftyOne
Na visualização, você pode ver que o dataset é composto por imagens e texto, tornando-o multimodal. A próxima etapa é criar um índice RAG multimodal do dataset acima.
Etapa 2: Integrando o LlamaIndex com o Milvus para Criar um Índice RAG Multimodal
Para criar um índice RAG multimodal usando LlamaIndex e Milvus, você deve integrar as duas bibliotecas para gerenciar e recuperar dados multimodais com eficiência. O LlamaIndex lida com a ingestão e a incorporação de dados multimodais em representações vetoriais. Esses embeddings são então armazenados no Milvus para recuperação posterior durante as consultas.
Na página de seleção de operações do FiftyOne, selecione a operação Create Multimodal RAG Index. Em seguida, dê um nome ao seu índice e clique em execute.
Fig 6- Criação de um índice RAG multimodal usando LLamaIndex e Milvus
Fig 6: Criação de um índice RAG multimodal usando LLamaIndex e Milvus
A execução levará algum tempo, dependendo do tamanho do seu dataset, então tenha paciência. Durante esse processo, seu dataset será convertido em embeddings vetoriais e armazenado no Milvus. Quanto maior for o seu dataset, mais tempo levará para criar o índice. Depois que o índice RAG for criado, você poderá prosseguir para consultá-lo.
Etapa 3: Consultando o Índice RAG Multimodal
Esta etapa de consulta é a que mais demora para ser executada no pipeline RAG. Como todos sabemos, ninguém gosta de uma aplicação lenta. É por isso que o banco de dados vetorial a ser consultado deve ser rápido durante o processo de recuperação, além de ser preciso. É aqui que o Milvus, o banco de dados vetorial de código aberto mais amplamente adotado, se destaca.
Jacobs fala sobre o Milvus na palestra, mas como o plugin abstrai a maior parte do que está acontecendo nos bastidores, talvez não vejamos totalmente os benefícios do Milvus em pipelines RAG multimodais. Mas vamos ver por que a maioria dos desenvolvedores de RAG multimodal, incluindo o desenvolvedor do fiftyone-multimodal-rag-plugin, escolheu usar o Milvus:
Armazenamento e Recuperação de Vetores em Escala de Bilhões: O Milvus gerencia com eficiência dados vetoriais em escala de bilhões, garantindo acesso rápido com latência em nível de milissegundos.
Escalabilidade Horizontal: O Milvus é altamente escalável e se adapta para atender às suas necessidades em evolução à medida que sua empresa cresce.
Ideal para RAG: O Milvus é uma infraestrutura indispensável para criar diversas aplicações GenAI, particularmente geração aumentada por recuperação (RAG).
Recuperação em Alta Velocidade: Com algoritmos de busca otimizados, o Milvus permite a recuperação rápida e precisa de vetores relevantes, o que é essencial para aplicações em tempo real, como sistemas de IA interativos e mecanismos de recomendação.
Tratamento de Dados Multimodais: O Milvus oferece suporte a vários tipos de dados e pode realizar buscas híbridas. Esse recurso permite combinar busca multimodal, busca híbrida esparsa e densa, e busca híbrida densa e de texto completo, oferecendo uma funcionalidade de busca versátil e flexível.
Para consultar seu índice RAG multimodal, vá para a página de seleção Operations e selecione a operação Query Multimodal RAG Index. Em seguida, insira sua consulta, selecione o índice a ser usado, o LLM para gerar uma resposta, o número de resultados de texto, e, por fim, o número de resultados de imagem a incluir.
Fig 7- Consultando um índice RAG multimodal desenvolvido com Milvus
Fig 7: Consultando um índice RAG multimodal desenvolvido com Milvus
O plugin então usa o Milvus para realizar uma busca de similaridade vetorial a fim de recuperar os embeddings mais relevantes com base na sua consulta. Os embeddings recuperados fornecem o contexto para gerar uma resposta usando o modelo de linguagem grande selecionado. Aqui estão os resultados da consulta acima:
Fig 8- Resultados da consulta a um índice RAG multimodal
Fig 8: Resultados da consulta a um índice RAG multimodal
Os resultados mostram o índice e o modelo que você usou ao executar a consulta e a resposta gerada pelo modelo de linguagem grande.
Você concluiu todas as etapas para criar um pipeline RAG multimodal usando FiftyOne, LLamaIndex e Milvus até agora.
Conclusão
A apresentação de Jacob destacou o potencial de integrar FiftyOne, LlamaIndex e Milvus para criar pipelines RAG multimodais poderosos. Essas ferramentas aprimoram as capacidades dos sistemas multimodais ao aproveitar de forma eficiente dados textuais e visuais para melhorar a recuperação de dados e respostas ricas em contexto. Seguindo as etapas descritas, você pode aproveitar os pontos fortes dessas ferramentas de código aberto, com o Milvus fornecendo armazenamento vetorial robusto e recuperação em alta velocidade, elevando seus projetos a novos patamares.
Recursos Adicionais
Continue lendo

How to Use Anthropic MCP Server with Milvus
MCP + Milvus: Streamline AI agent development with standardized data access, eliminating integration hassles while enhancing context and flexibility.

Milvus WebUI: A Visual Management Tool for Your Vector Database
Explore Milvus WebUI to monitor, manage, and optimize your vector database with real-time insights, performance tracking, and system health monitoring.

Building RAG Pipelines for Real-Time Data with Cloudera and Milvus
explore how Cloudera can be integrated with Milvus to effectively implement some of the key functionalities of RAG pipelines.


