11-03-01 — Fabric IQ: Ontology, Semantic Foundation
O problema que o Fabric IQ resolve
Quando um LLM tenta responder "Qual foi a receita por cliente no Q1?", ele precisa saber: qual tabela tem receita? qual coluna é o cliente? como essas tabelas se relacionam? quais são os filtros corretos para Q1? Sem contexto semântico, o LLM gera SQL errado — e o usuário recebe uma resposta incorreta com aparência de correta.
O perigo da "alucinação de SQL": Um LLM que gera SQL errado mas retorna algum resultado (em vez de erro) é mais perigoso do que um que retorna zero linhas. A decisão de negócio será tomada com dado errado. O Fabric IQ reduz esse risco drasticamente.
O que é a Ontologia do Fabric IQ
A ontologia é um grafo de conhecimento sobre seus dados — parecido com um schema, mas muito mais rico:
graph TD
subgraph Ontologia Fabric IQ
E1[Entidade: Cliente]
E2[Entidade: Produto]
E3[Entidade: Venda]
E4[Entidade: Período]
E3 -->|tem| E1
E3 -->|inclui| E2
E3 -->|ocorre em| E4
E1 -->|sinônimos| S1["'customer', 'KUNNR', 'cli_id'"]
E3 -->|métricas| M1["receita, qtd, margem"]
E4 -->|hierarquia| H1["ano > trimestre > mês > dia"]
end
Como o Fabric IQ é construído
O Fabric IQ usa uma combinação de:
- Análise automática do schema — lê DDL das tabelas, identifica PKs e FKs
- Semantic Models do Power BI — aproveita o trabalho já feito em modelos PBI existentes
- NLP sobre nomes de colunas e tabelas — infere significado de "VKORG" = "canal de vendas"
- Curadoria humana — você corrige e enriquece o que a IA inferiu errado
Build 2025: A Microsoft anunciou que o Fabric IQ inclui uma interface de "curadoria conversacional" — você fala com o Copilot para corrigir a ontologia: "O campo NETWR significa 'valor líquido da venda em moeda do documento, não em BRL'" — e o agente atualiza a ontologia.
Semantic Foundation: a camada de contexto para LLMs
A Semantic Foundation é o que o Fabric IQ expõe para os LLMs. É essencialmente um context enriquecido que acompanha cada query:
# Exemplo simplificado do que o Fabric IQ injeta no contexto do LLM
semantic_context = """
TABELAS DISPONÍVEIS:
- gold.fato_vendas: vendas finalizadas (grão: 1 linha por item de pedido)
- cliente_id: FK para gold.dim_cliente.id
- produto_sku: FK para gold.dim_produto.sku
- data_venda: DATE (use WHERE YEAR(data_venda) = 2025 para o ano atual)
- valor_brl: valor da venda em Reais (já convertido, não usar NETWR diretamente)
- qtd_vendida: INTEGER
MÉTRICAS PRÉ-CALCULADAS:
- receita_total = SUM(valor_brl)
- ticket_medio = AVG(valor_brl)
- margem_bruta = SUM(valor_brl - custo_brl) / SUM(valor_brl)
FILTROS COMUNS:
- Só vendas concluídas: WHERE status = 'COMPLETO'
- Período atual (Q1 2025): WHERE data_venda BETWEEN '2025-01-01' AND '2025-03-31'
"""
# O Data Agent injeta esse contexto antes de pedir ao LLM que gere SQL
prompt = f"""
{semantic_context}
Pergunta do usuário: "Qual foi a receita total por cliente no Q1 2025?"
Gere a query SQL correta usando apenas as tabelas e métricas descritas acima.
"""
Benefícios práticos do Fabric IQ
| Sem Fabric IQ | Com Fabric IQ |
|---|---|
| LLM não sabe nomes de colunas reais | Ontologia fornece mapeamento completo |
| Joins errados entre tabelas | Relacionamentos mapeados explicitamente |
| Filtros de data incorretos | Hierarquia temporal documentada |
| Métricas calculadas na query (lento) | Métricas pré-calculadas referenciadas |
| Respostas imprecisas | SQL gerado com alta precisão |
Para CEOs: Fabric IQ é a razão pela qual um Data Agent do Fabric é superior a simplesmente dar ao ChatGPT acesso ao seu banco de dados. O IQ é o "manual" que o agente usa para não errar. Sem ele, você tem uma demo impressionante que falha em produção.