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, os cientistas e analistas de dados concordam que extrair informações significativas desses vastos conjuntos de dados pode ser extremamente demorado e requer conjuntos de habilidades especializadas. Mas é nesse ponto que a IA generativa e os modelos de linguagem ampla podem ajudar a simplificar o processo de geração de insights. Um componente importante para ajudar nesse processo é Geração Aumentada de Recuperação (RAG).
O RAG é uma técnica avançada que ajuda a precisão de modelos de linguagem grandes, permitindo que o modelo tenha acesso a fatos externos por meio da recuperação de informações. Normalmente, os modelos de linguagem grandes (LLMs) recebem a entrada de um usuário e fornecem respostas com base nas informações com as quais o LLM foi treinado (que, às vezes, podem estar desatualizadas ou incorretas). O RAG combina essas informações com dados suplementares, como a base de conhecimento de uma empresa ou documentos relevantes, permitindo que ele forneça respostas factualmente precisas e contextualmente relevantes.
Este blog o orientará sobre como criar um sistema RAG especificamente adaptado para ingerir dados do Excel e gerar insights. Utilizaremos 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 do contexto relevante com base em uma consulta do usuário e, em seguida, utilizaremos o Bedrock da Amazônia para a resposta do LLM.
O que é LLamaIndex e LLamaParse
LlamaIndex é uma estrutura de orquestração de código aberto projetada para ajudar os desenvolvedores a criar aplicativos de IA com grandes modelos de linguagem (LLMs). Ele ajuda a preencher a lacuna entre as fontes de dados personalizadas e os LLMs. O LLamaIndex oferece aos usuários a capacidade de ingerir dados de várias fontes, como arquivos ou bancos de dados vetoriais, e depois 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 procura informações relevantes com base no prompt do usuário e, em seguida, fornece essas informações ao modelo de linguagem grande para gerar uma resposta.
O LlamaParse é um componente especializado dentro do ecossistema do LlamaIndex, projetado para ser uma poderosa plataforma de análise de documentos que simplifica o processo de análise e extração de informações estruturadas de documentos complexos. Ele foi desenvolvido para analisar e limpar dados para garantir que os usuários possam ter uma entrada de alta qualidade para casos de uso do LLM, como o RAG. O LlamaParse suporta a análise de diferentes tipos de documentos, como PDFs, Excel, HTML, etc.
Criação de um sistema de geração aumentada de recuperação com dados do Excel
Neste blog, criaremos um sistema RAG utilizando um conjunto de dados de reclamações de clientes (do Kaggle). Esse conjunto de dados fornece informações detalhadas sobre reclamações de consumidores que abrangem vários produtos e serviços financeiros. O sistema RAG, alimentado pela pesquisa do Couchbase Vector, facilitará a extração de informações críticas dos dados.
Uma representação visual do conjunto de dados é fornecida abaixo.
Instalação das dependências necessárias e instanciação do LlamaParse
1 |
!tubulação instalar lhama-índice lhama-analisar lhama-índice-vetor-lojas-couchbase lhama-índice-llms-leito rochoso incorporação rápida lhama-índice-incorporações-leito rochoso |
Depois de instalar as dependências, agora vamos instanciar o LlamaParse com a instrução de análise para analisar o arquivo do Excel:
1 2 3 4 5 6 7 8 9 10 11 12 |
de llama_parse importação LlamaParse de google.colab importação dados do usuário de índice_lama.núcleo importação SimpleDirectoryReader importação nest_asyncio nest_asyncio.aplicar() analisador = LlamaParse( chave api=dados do usuário.obter('LLAMA_CLOUD_API_KEY'), parsing_instruction = """Você está analisando um conjunto de dados de reclamações de clientes. A coluna Company contém o nome da empresa. Extraia as informações de Produto, Subproduto, Problema, Narrativa da reclamação do consumidor, Resposta pública da empresa, Empresa, Estado, CEP, das colunas.""", tipo_de_resultado="markdown" ) |
Quando instanciamos o objeto LlamaParse, passamos parsing_instruction e tipo_de_resultado como o Análise opções.
Em tipo_de_resultadoespecificamos o formato da nossa saída. Por padrão, o LlamaParse retornará os resultados como texto analisado. As outras opções disponíveis são remarcação para baixo e JSON que retorna uma estrutura que representa o objeto analisado. Em parsing_instruction podemos fornecer contexto adicional ao LlamaParse sobre os dados. O LlamaParse usa LLMs, o que nos permite dar a ele instruções em linguagem natural sobre o que e como analisar as informações.
Em seguida, carregaremos o arquivo do Excel e o analisaremos usando o LlamaParser:
1 2 3 |
file_extractor = {".xlsx": analisador} documentos = SimpleDirectoryReader(arquivos_de_entrada=[nome_do_arquivo.xlsx'], file_extractor=file_extractor).load_data() |
Armazenar os dados analisados usando um índice de vetor do Couchbase
Antes de prosseguir, verifique se você tem uma conta no Couchbase Capella e se configurou um índice vetorial no Couchbase. Você pode seguir o guia guia a seguir para configurar seu cluster e o índice vetorial. Quando a conta e o índice estiverem prontos, você poderá prosseguir.
Os dados analisados são armazenados na variável documents. Agora, eles serão preenchidos dentro do Couchbase. Para isso, os documentos serão convertidos em VectorStoreIndex. Esse índice será armazenado posteriormente no armazenamento do Couchbase Vector, convertendo primeiro os documentos compatíveis com o armazenamento de vetores usando o Bedrock Embeddings:
1 2 3 4 |
de índice_lama.llms.leito rochoso importação Cama de pedra de índice_lama.incorporações.leito rochoso importação BedrockEmbedding lm = Cama de pedra(modelo="mistral.mistral-large-2402-v1:0", nome_da_região="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(connection_string, nome de usuário do db, senha_db): """Conecte-se ao couchbase""" de couchbase.agrupamento importação Aglomerado de couchbase.autenticação importação PasswordAuthenticator de couchbase.opções importação ClusterOptions de data e hora importação timedelta autenticação = PasswordAuthenticator(nome de usuário do db, senha_db) opções = ClusterOptions(autenticação) connect_string = conexão_string agrupamento = Aglomerado(connect_string, opções) # Aguarde até que o cluster esteja pronto para uso. agrupamento.wait_until_ready(timedelta(segundos=5)) retorno agrupamento |
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 embeddings vetoriais do texto de cada nó usando o modelo de embedding especificado, neste caso, embeddings Bedrock, que estarão prontos para serem consultados por um LLM.
O LlamaIndex oferece vários analisadores 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 |
índice = VectorStoreIndex.from_documents( documentos, contexto_de_armazenamento=contexto_de_armazenamento, ) vector_store = get_vector_store( agrupamento, DB_BUCKET, DB_SCOPE, DB_COLLECTION, INDEX_NAME, ) contexto_de_armazenamento = Contexto de armazenamento.from_defaults(vector_store=vector_store) índice = VectorStoreIndex.from_documents( documentos, contexto_de_armazenamento=contexto_de_armazenamento, ) |
Geração de resposta do Amazon Bedrock
Quando um usuário faz upload de um arquivo do Excel, ele é analisado usando o LlamaParse e armazenado em um repositório de vetores do Couchbase. Para cada consulta do usuário, o sistema executa uma pesquisa vetorial para recuperar partes relevantes de informações dos dados armazenados do Excel. Esses pedaços relevantes são usados como contexto para o modelo de linguagem (modelo Mistral da Bedrock) para gerar uma resposta.
1 2 3 4 |
rag_stream_response = st.estado da sessão.motor_de_chat.stream_chat(pergunta) para pedaço em rag_stream_response.response_gen: rag_response += pedaço message_placeholder.remarcação para baixo(rag_response) |
Resultados
Agora podemos verificar o desempenho do nosso aplicativo RAG examinando as respostas a várias consultas fornecidas pelo usuário.
Conclusão
Este blog compartilha como é possível criar um sistema RAG (Retrieval Augmented Generation) para simplificar a análise de grandes quantidades de dados do Excel. Isso é feito extraindo informações dos dados usando o LlamaParse, transformando-as em um formato VectorStoreIndex e, posteriormente, armazenando esse índice no Couchbase.
-
- Comece a usar Plataforma de desenvolvedor do Couchbase Capella gratuitamente
- Leia mais postagens e tutoriais em IA generativa (GenAI)
- Saiba mais sobre o LLM Embeddings