Como tudo ao nosso redor está gradualmente se tornando mais orientado por dados, o Excel ainda é essencial para as empresas, oferecendo a capacidade de fornecer insights valiosos a partir dos dados nas planilhas. No entanto, cientistas de dados e analistas concordam que extrair informações significativas desses vastos conjuntos de dados pode consumir muito tempo e exigir conjuntos de habilidades especializadas. Mas é aqui que a Inteligência Generativa e os Grandes Modelos de Linguagem podem ajudar a simplificar o processo de geração de insights. Um componente importante para ajudar nesse processo é Geração Aumentada por Recuperação (RAG).
RAG é uma técnica poderosa que auxilia na precisão de grandes modelos de linguagem, permitindo que o modelo tenha acesso a fatos externos por meio de recuperação de informações. Tipicamente, grandes modelos de linguagem (LLMs) recebem a entrada de um usuário e entregam respostas com base nas informações em que o LLM foi treinado (o que às vezes pode estar desatualizado ou incorreto). O RAG combina essa informação com dados suplementares, como a base de conhecimento de uma empresa ou documentos relevantes, permitindo-lhe entregar respostas factualmente precisas e contextualmente relevantes.
Este blog guiará você sobre como construir um sistema RAG especificamente adaptado para ingerir dados de Excel e gerar insights. Nós aproveitaremos o LlamaIndex e o LlamaParse para transformar as planilhas em uma base de conhecimento pesquisável e armazenar esses dados no Couchbase Vector Search para recuperação rápida de contexto relevante com base na consulta de um usuário e, em seguida, aproveitaremos Amazon Bedrock para a resposta do LLM.
O LlamaIndex é uma estrutura de dados (framework) que serve para conectar fontes de dados privadas ou específicas de domínio a Grandes Modelos de Linguagem (LLMs), facilitando a criação de aplicações baseadas em RAG (Retrieval-Augmented Generation). O LlamaParse é um analisador de documentos nativo em nuvem e otimizado para LLMs, desenvolvido pelo LlamaIndex, projetado especificamente para analisar e extrair dados de documentos complexos (como arquivos PDF com tabelas, imagens e formatações complexas) para que possam ser utilizados de forma eficiente em aplicações de IA.
LlamaIndex é um framework de orquestração de código aberto projetado para ajudar desenvolvedores a construir aplicações de IA com grandes modelos de linguagem (LLMs). Ele ajuda a preencher a lacuna entre fontes de dados personalizadas e LLMs. O LlamaIndex oferece aos usuários a capacidade de ingerir dados de várias fontes, como arquivos ou bancos de dados vetoriais, e então indexa esses dados em representações intermediárias. O LlamaIndex oferece a capacidade de consultar esses dados em linguagem natural e interagir com eles.
Primeiro, os dados são indexados em um índice vetorial. Isso cria uma base de conhecimento pesquisável específica para o domínio. Durante a consulta, o sistema busca informações relevantes com base no prompt do usuário e, em seguida, fornece essas informações ao grande modelo de linguagem para gerar uma resposta.
O LlamaParse é um componente especializado dentro do ecossistema LlamaIndex, projetado para ser uma poderosa plataforma de análise de documentos que simplifica o processo de analisar e extrair informações estruturadas de documentos complexos. Ele foi construído para analisar e limpar dados para garantir que os usuários possam ter entradas de alta qualidade para casos de uso de LLM, como RAG. O LlamaParse suporta a análise de diferentes tipos de documentos, como PDFs, Excel, HTML, etc.
Construindo um sistema de geração aumentada por recuperação com dados do Excel
Neste blog, criaremos um sistema RAG utilizando um conjunto de dados de reclamações de clientes (do Kaggle). Este conjunto de dados fornece informações detalhadas sobre reclamações de consumidores abrangendo vários produtos e serviços financeiros. O sistema RAG potencializado pela busca vetorial do Couchbase facilitará a extração de informações críticas dos dados.
Uma representação visual do conjunto de dados é fornecida abaixo.

Instalando as Dependências Necessárias e Instanciando o LlamaParse
|
1 |
!pip instalar llama–index llama–analisar llama–index–vector–stores–Couchbase llama–index–llms–bedrock fastembed llama–index–incorporações–bedrock |
Após instalar as dependências, vamos agora instanciar o LlamaParse com a instrução de parsing para analisar o arquivo Excel:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
de llama_parse importar LlamaParse de Google.colab importar userdata de llama_index.core importar SimpleDirectoryReader importar nest_asyncio nest_asyncio.apply() parser = LlamaParse( chave_api=userdata.obter(‘LLAMA_CLOUD_API_KEY’), instrução_de_análise = “””You are parsing a customer complaints dataset.. The column Company contains the company name. Please extract Product, Sub-product, Issue, Consumer complaint narrative, company public response, company, state, zipcode, information from the columns.”””, tipo_de_resultado=“markdown” ) |
Quando instanciamos o objeto LlamaParse, passamos instrução_de_análise e tipo_de_resultado como o Análise sintática opções.
Em tipo_de_resultado, especifizamos o formato de nossa saída. Por padrão, o LlamaParse retornará os resultados como texto analisado. As outras opções disponíveis são markdown e JSON o qual retorna uma estrutura representando o objeto analisado. Em instrução_de_análise podemos fornecer contexto adicional ao LlamaParse sobre os dados. O LlamaParse usa LLMs em segundo plano, permitindo-nos dar a ele instruções em linguagem natural sobre o quê e como analisar as informações.
Em seguida, carregaremos o arquivo Excel e o analisaremos usando o LlamaParser:
|
1 2 3 |
file_extractor = {“.xlsx”: parser} documents = SimpleDirectoryReader(input_files=[file_name.xlsx‘], file_extractor=file_extractor).load_data() |
Armazenando os dados analisados usando um índice vetorial do Couchbase
Antes de prosseguir, certifique-se de que você tem uma conta no Couchbase Capella e de que configurou um índice vetorial dentro do Couchbase. Você pode seguir o seguindo o guia para configurar o seu cluster e o índice vetorial. Assim que você tiver a conta e o índice prontos, poderá prosseguir.
Os dados analisados são armazenados na variável documents. Agora eles serão populados dentro do Couchbase. Para conseguir isso, os documentos serão convertidos em VectorStoreIndex. Esse índice será posteriormente armazenado no armazenamento vetorial do Couchbase, convertendo primeiro os documentos suportados pelo armazenamento vetorial usando as incorporações do Bedrock:
|
1 2 3 4 |
de llama_index.llms.bedrock importar Rocha-mãe de llama_index.incorporações.bedrock importar BedrockEmbedding LLM = Rocha-mãe(modelo=“mistral.mistral-large-2402-v1:0”, region_name=“us-east-1”) incorporações = BedrockEmbedding(modelo=“amazon.titan-embed-text-v1”) |
Também nos conectaremos à instância do Couchbase:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
def connect_to_couchbase(string_de_conexao, db_username, db_password): “””Connect to couchbase””” de Couchbase.aglomerado importar Aglomerado de Couchbase.autenticação importar AutenticadorDeSenha de Couchbase.Opções importar OpçõesDeCluster de datetime importar timedelta autenticação = AutenticadorDeSenha(db_username, db_password) Opções = OpçõesDeCluster(autenticação) connect_string = connection_string aglomerado = Aglomerado(connect_string, Opções) # Wait until the cluster is ready for use. aglomerado.wait_until_ready(timedelta(seconds=5)) retornar aglomerado |
Agora, chamaremos o método VectorStoreIndex para armazenar o índice no Couchbase. O VectorStoreIndex pega os documentos e os divide em nós. Em seguida, ele cria incorporações vetoriais do texto de cada nó usando o modelo de incorporação especificado, neste caso, as incorporações do Bedrock, que estarão prontas para serem consultadas por um LLM.
O LlamaIndex oferece vários parsers de nós baseados em arquivos projetados para gerar nós de acordo com o tipo de conteúdo específico que está sendo processado, como JSON, Markdown e outros formatos:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
index = VectorStoreIndex.from_documents( documents, storage_context=storage_context, ) vector_store = get_vector_store( aglomerado, DB_BUCKET, DB_SCOPE, DB_COLLECTION, INDEX_NAME, ) storage_context = StorageContext.from_defaults(vector_store=vector_store) index = VectorStoreIndex.from_documents( documents, storage_context=storage_context, ) |
Geração de resposta pelo Amazon Bedrock
Quando um usuário faz o upload de um arquivo do Excel, ele é analisado usando o LlamaParse e armazenado em um banco de dados vetorial do Couchbase. Para cada consulta do usuário, o sistema realiza uma busca vetorial para recuperar trechos relevantes de informações dos dados do Excel armazenados. Esses trechos relevantes são então usados como contexto para o modelo de linguagem (modelo Mistral da Bedrock) gerar uma resposta.
|
1 2 3 4 |
rag_stream_response = st.session_state.chat_engine_rag.stream_chat(question) para chunk in rag_stream_response.response_gen: rag_response += chunk message_placeholder.markdown(rag_response) |
Resultados
Agora podemos verificar o desempenho de nossa aplicação RAG examinado as respostas a várias consultas fornecidas pelo usuário.
Conclusão
Este blog compartilha como alguém pode construir um sistema de Geração Aumentada por Recuperação (RAG) para simplificar a análise de grandes quantidades de dados do Excel. Isso é feito extraindo informações dos dados usando o LlamaParse, transformando-os em um formato VectorStoreIndex e, posteriormente, armazenando esse índice no Couchbase.
- Começar com Plataforma de desenvolvedor Couchbase Capella de graça
- Leia mais posts e tutoriais em Inteligência Artificial Generativa (IAGen)
- Saiba mais sobre Embeddings de LLM

Deixe um comentário
Você precisa fazer o login para publicar um comentário.