1 Tabela = 1000 Palavras? Modelos de Base para Dados Tabulares
Dados tabulares desempenham um papel fundamental em setores como finanças, saúde e pesquisa científica, fornecendo informações estruturadas que apoiam a tomada de decisões. Diferentemente dos dados não estruturados, que os modelos de IA têm conseguido processar com mais flexibilidade, os dados estruturados continuam sendo um desafio. A análise tradicional depende de consultas estruturadas e modelos predefinidos, tornando difícil trabalhar com tabelas que variam em formato, contêm valores ausentes ou exigem análises além de simples buscas. Essas restrições limitam a capacidade de extrair insights de forma eficiente, especialmente à medida que os conjuntos de dados crescem em tamanho e complexidade.
Em um recente webinar da Zilliz, Stefan Webb, um defensor de desenvolvedores na Zilliz, examinou se modelos de IA treinados em tabelas diversas poderiam oferecer uma abordagem mais adaptável. Modelos fundacionais, treinados em conjuntos de dados grandes e variados para aprender padrões gerais que se aplicam a diferentes casos de uso, demonstraram a capacidade de generalizar entre diferentes conjuntos de dados sem precisar de ajuste fino específico para cada tarefa, tornando-os bem adequados para a análise de tabelas. Diferentemente dos modelos convencionais de machine learning que exigem treinamento extensivo para cada conjunto de dados, o TableGPT2, um modelo fundacional para análise de tabelas, aplica sua compreensão das estruturas de tabelas para responder a consultas, resumir dados e extrair insights, reduzindo a necessidade de intervenção manual.
Para que esses modelos sejam eficazes, eles precisam de maneiras eficientes de armazenar e recuperar dados estruturados. É aqui que bancos de dados vetoriais como o Milvus, bancos de dados especializados projetados para armazenar e pesquisar representações numéricas de alta dimensionalidade dos dados, desempenham um papel. Armazenar embeddings de tabelas permite que modelos de IA pesquisem registros semelhantes, recuperem informações relevantes e melhorem a análise de dados estruturados. Vamos ver o que Stefan abordou.
Assista à recapitulação da palestra de Stefan no YouTube
Por que os dados tabulares precisam de uma nova abordagem
As abordagens tradicionais para analisar dados tabulares dependem fortemente de consultas estruturadas e esquemas predefinidos. Métodos como consultas SQL são eficazes quando os conjuntos de dados permanecem consistentes, mas até pequenas variações entre tabelas podem interromper fluxos de trabalho, exigindo ajustes manuais significativos. Por exemplo, bancos de dados usados por bancos normalmente têm esquemas rigidamente definidos, tornando a análise simples até que novos dados de fontes externas com estruturas diferentes precisem ser integrados. Essa rigidez dificulta a capacidade de reutilizar modelos analíticos de forma eficiente e limita o processamento automatizado.
Esse desafio se deve principalmente à variabilidade de esquema, as diferenças naturais nas estruturas de tabelas entre várias fontes. Um conjunto de dados de saúde pode ter colunas representando histórico do paciente e diagnósticos médicos, enquanto dados financeiros podem registrar transações, preços ou datas, cada um seguindo regras e formatos distintos.
Figura 1: Dados estruturados vs. não estruturados
Como até pequenas diferenças de esquema podem interromper ferramentas analíticas tradicionais, ajustes manuais tornam-se necessários para acomodar essas variações. Isso leva a maior esforço, análises mais lentas e escalabilidade limitada.
Os métodos atuais de aprendizado de máquina, como árvores de decisão com boosting de gradiente, também dependem significativamente de recursos projetados manualmente, adaptados a cada conjunto de dados. Cada nova tabela ou pequena alteração no esquema normalmente exige ajustes manuais nesses recursos, limitando a eficiência e a escalabilidade. À medida que os dados se tornam mais complexos e volumosos, os métodos analíticos tradicionais tornam-se cada vez mais impraticáveis. Isso levou pesquisadores a recorrerem a modelos de fundação, que aprendem padrões generalizáveis a partir de grandes conjuntos de dados.
Modelos de Fundação para Dados Tabulares: Um Novo Paradigma
Modelos de fundação são modelos de inteligência artificial treinados em conjuntos de dados grandes e diversos para aprender padrões gerais. Em vez de exigir treinamento específico para cada nova tarefa, esses modelos reutilizam o conhecimento aprendido anteriormente em vários cenários. Essa abordagem é especialmente eficaz para analisar dados tabulares, nos quais as estruturas das tabelas podem diferir significativamente.
Um bom exemplo de modelo de fundação especificamente projetado para análise de dados estruturados é o TableGPT2, desenvolvido por pesquisadores da Universidade de Zhejiang. O TableGPT2 processa tabelas por meio de várias etapas cuidadosamente projetadas. Primeiro, os dados tabulares são inseridos em um componente chamado Table Encoder. Esse encoder identifica relações-chave dentro dos dados analisando cada célula, linha e coluna individual. Ele usa uma técnica conhecida como atenção bidimensional, que examina relações em duas dimensões simultaneamente, entre linhas (horizontalmente) e colunas (verticalmente), permitindo que o modelo compreenda melhor como diferentes partes dos dados dentro de uma tabela se relacionam entre si. Além disso, o Table Encoder emprega incorporação de células, convertendo o conteúdo de cada célula da tabela em embeddings. Esses embeddings capturam tanto o conteúdo quanto a estrutura da tabela, tornando os dados compreensíveis para tarefas posteriores.
Figura 2: Diagrama da arquitetura do TableGPT2 mostrando o Table Encoder convertendo dados tabulares em embeddings estruturados e um Adapter (Q-Former) preparando os embeddings para o modelo de linguagem.
Depois que o Table Encoder cria esses embeddings estruturados, eles ainda precisam de transformação adicional porque modelos de linguagem típicos como o GPT entendem melhor entradas baseadas em texto do que embeddings numéricos. Para esse propósito, o TableGPT2 introduz um Adapter, às vezes chamado de Q-Former, que traduz embeddings numéricos em representações textuais. O Adapter efetivamente reformata o embedding numérico em prompts semelhantes à linguagem natural. Esses prompts textuais integram tanto as informações das tabelas quanto as perguntas do usuário, criando entradas claras e compreensíveis que os modelos de linguagem podem interpretar facilmente.
Figura 3: Paradigma de Modelagem ilustrando como o TableGPT2 transforma embeddings de tabelas em prompts textuais
Uma vez combinados em um prompt textual unificado, os dados e a pergunta do usuário podem ser processados por um modelo de linguagem. Essa abordagem permite que o TableGPT2 responda a consultas em linguagem natural, resuma o conteúdo de tabelas e forneça insights orientados por dados sem depender de regras predefinidas ou consultas manuais adaptadas a esquemas específicos. Como o modelo aprende estruturas gerais durante o treinamento, ele consegue lidar com esquemas de tabelas variados com significativamente menos esforço manual do que os métodos tradicionais.
Para gerar resultados analíticos estruturados e reproduzíveis, o TableGPT2 também usa uma instrução predefinida conhecida como System Prompt. Diferentemente dos prompts típicos, este system prompt instrui explicitamente o modelo sobre como executar tarefas analíticas gerando código Python executável. Por exemplo, ao receber uma pergunta como, Quais produtos tiveram as maiores vendas no último trimestre? o TableGPT2 interpreta essas diretrizes fornecidas pelo sistema e produz o código Python correspondente para analisar as colunas relevantes. O código resultante é executado em um ambiente controlado (por exemplo, um sandbox IPython), garantindo isolamento do modelo central e proteção contra riscos. O modelo então interpreta esses resultados para fornecer respostas precisas, transparentes e reproduzíveis. Essa abordagem estruturada garante que os resultados possam ser facilmente verificados, aumentando a confiança nas capacidades analíticas do modelo. O system prompt abaixo é exatamente o que o TableGPT2 usa em seu código.
Figura 4: System Prompt do TableGPT2 mostrando instruções que orientam o modelo a gerar código Python para análise estruturada de dados.
Para entender melhor como modelos de base como o TableGPT2 alcançam essa flexibilidade, vamos explorar os métodos de treinamento específicos e os conjuntos de dados usados para construir esses modelos.
Treinando o modelo: O papel dos dados
A eficácia de modelos de base como o TableGPT2 depende fortemente de seu processo de treinamento, que é cuidadosamente projetado para ajudar o modelo a entender e analisar diversas estruturas de tabelas. Para alcançar isso, o TableGPT2 passa por uma abordagem de treinamento especializada composta por várias fases interconectadas, cada uma desempenhando um papel distinto para permitir que o modelo lide com dados tabulares de forma flexível e precisa.
Figura 5: Processo de treinamento do TableGPT2
Inicialmente, o TableGPT2 utiliza um large language model (LLM) geral, Qwen 2.5, que é treinado em enormes conjuntos de dados de texto. Essa fase inicial, chamada pré-treinamento contínuo, ajuda o modelo a adquirir amplas habilidades de compreensão linguística. Em seguida, ele passa por um processo chamado ajuste fino supervisionado, no qual aprende a desempenhar melhor tarefas específicas, como responder a perguntas ou resumir informações, usando mais de dois milhões de exemplos cuidadosamente rotulados. Essa etapa constrói uma base sólida, permitindo que o modelo lide efetivamente com consultas complexas em linguagem natural.
Com o componente linguístico preparado, o treinamento se volta especificamente para a compreensão de tabelas. Aqui, o aprendizado contrastivo por coluna desempenha um papel central. Nesse processo, o TableGPT2 aprende a diferenciar colunas com base em suas relações e conteúdo, comparando muitas tabelas e colunas lado a lado, aprendendo a reconhecer semelhanças e diferenças em aproximadamente 86.000 tabelas diversas. O modelo então passa para o alinhamento de recursos multitarefa, no qual aprende simultaneamente várias tarefas, como classificar colunas de tabelas e extrair resumos significativos de tabelas. Ao treinar com centenas de milhares de amostras de tabelas diversas, o TableGPT2 se torna habilidoso em identificar padrões estruturais comuns em muitas tabelas diferentes.
Por fim, os componentes de linguagem e compreensão de tabelas passam por um processo final de ajuste conhecido como ajuste conjunto de instruções. Esta etapa envolve integrar cuidadosamente essas capacidades separadas, permitindo que o modelo interprete estruturas de tabelas com clareza e responda com precisão às instruções do usuário. Após esse treinamento abrangente, o TableGPT2 é capaz de interpretar e analisar tabelas de vários domínios sem ampla customização, melhorando significativamente a flexibilidade em tarefas analíticas práticas.
Esse processo de treinamento estruturado garante que o TableGPT2 não apenas compreenda e interaja efetivamente com dados estruturados, mas também reduza a dependência de consultas e esquemas elaborados manualmente, abordando as limitações que destacamos anteriormente.
Exemplo Prático: Usando o TableGPT2 para Consultar Dados Tabulares
Para entender como o TableGPT2 funciona na prática, considere um cenário em que um usuário tem dados estruturados armazenados em um arquivo CSV simples. Imagine querer identificar rapidamente linhas específicas que correspondam a certos critérios, como encontrar jogos de um conjunto de dados em que o registro seja exatamente 40 vitórias e 40 derrotas. Em vez de filtrar tabelas manualmente, o TableGPT2 pode gerar automaticamente o código Python necessário para essa tarefa com base apenas na consulta em linguagem natural de um usuário.
Vamos percorrer passo a passo como isso funciona. Para começar, você precisa configurar seu ambiente para interagir com o TableGPT2. A primeira etapa envolve instalar a biblioteca Hugging Face Transformers, um kit de ferramentas Python que oferece acesso fácil a modelos como o TableGPT2:
!pip install transformers
Depois de instalada, carregue o modelo e prepare seus dados:
from transformers import AutoModelForCausalLM, AutoTokenizer
import pandas as pd
from io import StringIO
# Sample structured data in CSV format
csv_content = """
"Loss","Date","Score","Opponent","Record","Attendance"
"Hampton (14-12)","September 25","8-7","Padres","67-84","31,193"
"Speier (5-3)","September 26","3-2","Giants","40-40","29,004"
"Perez (2-2)","September 27","5-4","Reds","40-40","27,500"
"Hampton (13-11)","September 6","9-5","Dodgers","61-78","31,407"
"""
import pandas as pd
from io import StringIO
# Load the CSV data into a DataFrame
csv_file = StringIO(EXAMPLE_CSV_CONTENT)
df = pd.read_csv(csv_file)
Os dados CSV acima representam jogos esportivos, incluindo colunas para o adversário, a data do jogo, a pontuação, os registros das equipes (vitórias-derrotas) e os números de público. Para analisar esses dados usando o TableGPT2, primeiro você carrega o modelo pré-treinado e o tokenizer:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "tablegpt/TableGPT2-7B"
model = AutoModelForCausalLM.from_pretrained(
model_name, torch_dtype="auto", device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
Em seguida, você usa o TableGPT2 para responder a uma pergunta sobre seus dados. Aqui, usaremos um exemplo específico: identificar jogos com exatamente um registro de 40-40 em vitórias-derrotas. Para conseguir isso, você fornece ao modelo um prompt cuidadosamente formatado, orientando-o a gerar código Python para responder à consulta:
example_prompt_template = """Given access to several pandas dataframes, write the Python code to answer the user's question
/*
"df.head(5).to_string(index=False)" as follows:
{df_info}
*/
Question: {user_question}
Este prompt instrui claramente o TableGPT2, especificando a estrutura da tabela (nomes das colunas e uma amostra de dados), juntamente com sua pergunta.
A função a seguir enviará então esse prompt para o TableGPT2 e recuperará código Python como resposta:
def ask_table_question(question: str):
prompt = example_prompt_template.format(
var_name="df",
df_info=df.head(5).to_string(index=False),
user_question=question
)
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages, tokenize=False, add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(**model_inputs, max_new_tokens=512)
response = tokenizer.decode(generated_ids[0], skip_special_tokens=True)
return response
Vamos agora fazer uma pergunta ao modelo e ver como ele responde:
question = "Which games have a record of 40 wins and 40 losses?"
generated_code = ask_table_question(question)
print(generated_code)
Aqui está o código Python retornado pelo TableGPT2
Figura 6: Saída gerada pelo TableGPT2
Como você pode ver, este código filtra os dados com precisão. Veja como este código gerado funciona:
O código primeiro divide os valores na coluna
"Record"em dois números separados, representando vitórias e derrotas, usando.str.split("-").Em seguida, ele converte esses valores de strings para inteiros, tornando possíveis comparações numéricas.
Por fim, o código identifica apenas as linhas em que vitórias e derrotas são ambas iguais a 40, criando um conjunto de dados filtrado.
Esta demonstração mostra como o TableGPT2 pode simplificar a análise de dados. Os usuários podem interagir com dados estruturados de forma natural, recebendo resultados transparentes e verificáveis sem codificar manualmente consultas complexas. Este método torna os insights de dados acessíveis até mesmo para iniciantes ou stakeholders não técnicos. Observe que, além de código, você pode instruir o TableGPT a fornecer a saída diretamente por meio do prompt.
Como o Milvus aprimora a busca tabular com tecnologia de IA
Modelos de base, como o TableGPT2, oferecem flexibilidade ao analisar dados estruturados, mas encontrar informações relevantes de forma eficiente em bancos de dados de grande escala é desafiador. Milvus, um banco de dados vetorial de código aberto, complementa modelos de base ao armazenar e pesquisar rapidamente embeddings.
O Milvus opera convertendo dados, como texto ou tabelas, em embeddings. Um embedding é essencialmente uma representação numérica que posiciona pontos de dados em um espaço de alta dimensionalidade, permitindo que o modelo encontre entradas semelhantes ou relacionadas rapidamente. Por exemplo, incorporar transações financeiras colocaria transações semelhantes, como compras de produtos relacionados, próximas umas das outras dentro desse espaço numérico. Vamos dar uma olhada no fluxo de trabalho do Milvus.
Figura 7: Fluxo de trabalho que ilustra o Milvus processando dados textuais, convertendo-os em embeddings e recuperando resultados relevantes
O processo começa quando um usuário insere uma consulta em linguagem natural. O Milvus primeiro analisa esse texto da consulta, decompondo-o e convertendo-o em um embedding. Os embeddings da consulta são então comparados a uma coleção de embeddings previamente armazenados. Para identificar as correspondências mais relevantes, o Milvus usa métodos de pontuação como BM25, uma técnica que avalia tanto a frequência quanto a importância das palavras-chave nos documentos. Ao combinar significado semântico (capturado pelos embeddings) e relevância de palavras-chave, o Milvus recupera rapidamente resultados de busca precisos, ajudando modelos de base a fornecer respostas mais bem informadas.
O Milvus pode ser usado em vários cenários e oferece suporte a vários métodos de implantação, dependendo da escala e da complexidade necessárias:
Figura 8: Opções de implantação para o Milvus
Milvus Lite é ideal para testes rápidos e projetos de pequena escala, comumente usado diretamente em ambientes como notebooks Jupyter. Ele permite experimentos rápidos sem configurações complexas ou infraestrutura adicional. Milvus Standalone é adequado para cargas de trabalho de tamanho moderado. Normalmente hospedado em um único servidor usando tecnologias como Docker, ele oferece manutenção simplificada para aplicações que precisam de armazenamento confiável, mas de capacidade moderada. Milvus Cluster oferece suporte a cenários de larga escala, escalando de forma eficiente para bilhões de vetores em vários servidores. Ele distribui a carga de trabalho entre vários nós, melhorando significativamente a velocidade e permitindo lidar com conjuntos de dados extremamente grandes.
Os benefícios de desempenho do Milvus são importantes para aplicações que precisam de tempos de resposta rápidos, como sistemas de recomendação em tempo real ou consultas interativas. Benchmarks demonstram que o Milvus supera significativamente outros bancos de dados vetoriais em termos de velocidade, lidando com milhões de buscas vetoriais com maior eficiência:
Figura 9: Benchmarks comparando a velocidade de busca (consultas por segundo) do Milvus em relação a outros bancos de dados vetoriais
Além disso, o Milvus oferece suporte a fluxos de trabalho que combinam modelos de IA com processos de recuperação, garantindo que as respostas geradas permaneçam precisas ao fundamentá-las diretamente em dados factuais. Esse processo é chamado de Geração Aumentada por Recuperação (RAG) e permite que modelos de base como o TableGPT2 produzam resultados fundamentados em dados reais armazenados no Milvus. Na prática, isso significa que o TableGPT2 não depende puramente de padrões aprendidos durante o treinamento; ele também recupera dados atuais e relevantes diretamente do banco de dados sempre que responde a consultas dos usuários.
Figura 10: Fluxo de trabalho agêntico
Especificamente, um agente de IA primeiro normaliza e prepara os dados de entrada e, em seguida, recupera informações contextuais relacionadas do Milvus. Depois que essas informações adicionais são recuperadas, o agente encaminha tanto a consulta do usuário quanto o contexto para o TableGPT2. O TableGPT2 então usa suas capacidades aprendidas juntamente com dados recentes do Milvus para gerar respostas claras, precisas e oportunas às perguntas dos usuários. Isso garante que as informações fornecidas pelo modelo sejam precisas e atualizadas, aumentando a confiabilidade e a utilidade para os usuários finais.
Ao compreender claramente o fluxo de trabalho, as opções de implantação e as vantagens de desempenho do Milvus, torna-se evidente como a combinação de modelos de base com bancos de dados vetoriais otimizados melhora muito a eficiência e a precisão em tarefas de análise de dados estruturados.
Desafios e limitações dos modelos de base para dados tabulares
Apesar de sua flexibilidade e desempenho aprimorado em relação aos métodos tradicionais, modelos de base como o TableGPT2 ainda encontram vários desafios práticos quando aplicados à análise de dados estruturados. Estes incluem:
Variabilidade de esquema: Tabelas de diferentes setores raramente seguem estruturas uniformes. Embora os modelos de base generalizem melhor do que os métodos tradicionais, diferenças significativas nas estruturas das tabelas ainda podem afetar a precisão. Por exemplo, analisar registros financeiros com um modelo treinado extensivamente em dados de saúde pode levar a insights menos precisos devido a diferenças fundamentais nos tipos e na estrutura dos dados.
Escalabilidade: Processar tabelas grandes ou complexas frequentemente exige recursos computacionais substanciais, tornando caro e desafiador implementar modelos de base em escala. Quando os conjuntos de dados crescem para milhões ou bilhões de registros, os recursos necessários para uma análise eficaz aumentam significativamente, potencialmente desacelerando fluxos de trabalho ou aumentando os custos operacionais.
Interpretabilidade: Modelos de base, normalmente baseados em redes neurais, fornecem explicações limitadas sobre como chegam a respostas ou decisões específicas. Métodos analíticos tradicionais, como árvores de decisão, mostram claramente a justificativa por trás das previsões, enquanto modelos de base baseados em redes neurais operam como caixas-pretas. Essa limitação pode restringir seu uso em setores nos quais a transparência e a conformidade regulatória são críticas, como saúde, finanças ou áreas jurídicas.
Vieses dos Dados de Treinamento: Modelos de base correm o risco de herdar vieses de seus conjuntos de dados de treinamento. Se os dados de treinamento contiverem vieses, esses vieses podem se refletir nas previsões ou nos insights do modelo. Isso pode resultar em desfechos injustos ou imprecisos, especialmente em áreas sensíveis como decisões de contratação, diagnóstico médico ou pontuação de crédito. Detectar e corrigir esses vieses pode ser desafiador devido à natureza opaca dos modelos neurais.
Falta de Benchmarks Padronizados: Avaliar modelos de base para análise de dados estruturados continua sendo difícil devido à falta de padrões universais de avaliação. Diferentemente das tarefas de linguagem natural, nas quais existem benchmarks bem estabelecidos, a análise de dados estruturados atualmente carece de medidas de desempenho amplamente aceitas. Isso complica os esforços para comparar ou validar objetivamente diferentes modelos.
Reconhecer esses desafios é importante para implantar e aprimorar efetivamente modelos de base. Ao usar esses modelos, você precisa de estratégias claras para gerenciar essas limitações, garantindo que os benefícios superem os riscos.
Conclusão
Modelos de base como o TableGPT2 representam uma mudança significativa na análise de dados tabulares, oferecendo maior adaptabilidade em comparação com métodos tradicionais. Quando integrados a bancos de dados vetoriais como o Milvus, esses modelos acessam dados relevantes de forma eficiente, aumentando significativamente sua precisão e utilidade prática. No entanto, usar modelos de base de forma eficaz exige enfrentar desafios como variabilidade de esquemas, escalabilidade, interpretabilidade, vieses potenciais e a falta de métodos de avaliação padronizados. À medida que esses modelos continuam a evoluir, enfrentar essas limitações permitirá que as organizações utilizem dados estruturados de maneira mais confiante e eficaz para a tomada de decisões informadas.
Continue lendo

Migrating Self-Managed Milvus to Zilliz Cloud for >99% Latency Reduction
Step-by-step guide to migrating 50M vectors from self-managed Milvus to Zilliz Cloud using milvus-backup. Achieve >99% query latency reduction with zero data loss.

Introducing Zilliz Cloud Global Cluster: Region-Level Resilience for Mission-Critical AI
Zilliz Cloud Global Cluster delivers multi-region resilience, automatic failover, and fast global AI search with built-in security and compliance.

Why Not All VectorDBs Are Agent-Ready
Explore why choosing the right vector database is critical for scaling AI agents, and why traditional solutions fall short in production.


