04-06-02 — RAG com Microsoft Fabric e OneLake

⏱ 12 minFontes validadas em: 2026-04-29

TL;DR

Microsoft Fabric unifica dados estruturados (tabelas Delta/Lakehouse) e não estruturados (arquivos no OneLake) num único data lake multi-cloud. Para RAG, isso significa que seus dados corporativos — vendas, logs, documentos — já estão no OneLake e podem alimentar pipelines de RAG sem ETL adicional. Os Fabric Data Agents (GA em 2025) permitem conversational analytics direto sobre dados do OneLake via linguagem natural. O OneLake MCP server abre esse acesso para agentes de IA via protocolo MCP.

OneLake: o data lake unificado para RAG

OneLake é o storage central do Microsoft Fabric — uma única instância por tenant, multi-região, que armazena todos os dados do Fabric em formato open (Delta Parquet). Para RAG, ele representa uma vantagem crucial: seus dados já estão lá, não precisam ser copiados para um blob storage separado antes de serem indexados.

OneLake = ADLS Gen2 com opinionado: Tecnicamente, OneLake é um Azure Data Lake Storage Gen2 gerenciado pela Microsoft, acessível via APIs ABFS e compatível com qualquer ferramenta que suporte ADLS. Workspaces do Fabric são "namespaces" dentro do mesmo lake físico.

Fabric Data Agents — Conversational Analytics

Fabric Data Agents (GA desde novembro 2024) são agentes pré-construídos que conectam um LLM (Azure OpenAI) diretamente a fontes de dados do Fabric: Lakehouses, Warehouses, Power BI semantic models e KQL databases. O usuário faz perguntas em linguagem natural e o agente traduz para queries SQL/DAX/KQL, executa e sintetiza a resposta.

Como um Fabric Data Agent funciona internamente

graph LR U[Usuário] -->|"Pergunta em NL"| A[Data Agent] A -->|Schema + exemplos| LLM[Azure OpenAI GPT-4o] LLM -->|SQL/DAX gerado| A A -->|Executa query| F[Fabric Lakehouse / Warehouse] F -->|Resultado tabular| A A -->|Sintetiza resposta| LLM LLM -->|Resposta final| U
Diferença de RAG clássico: Fabric Data Agents fazem text-to-SQL, não busca vetorial. O "contexto" injetado no LLM é o schema das tabelas + exemplos, não chunks de documentos. Para dados estruturados (tabelas), esta abordagem é mais precisa. Para documentos (PDFs, Word), use o pipeline RAG clássico com AI Search.

Pipeline: Fabric → Embeddings → AI Search → LLM

Quando você tem documentos armazenados no OneLake (PDFs, Word, e-mails), o pipeline para RAG clássico é:

graph TD A[OneLake / Lakehouse Files] -->|Spark/Fabric Notebook| B[Extração de texto] B -->|azure-ai-formrecognizer| C[Texto limpo + metadata] C -->|text-embedding-3-small| D[Vetores] D -->|SDK azure-search-documents| E[Azure AI Search Index] E -->|Hybrid search| F[Azure OpenAI GPT-4o] F --> G[Resposta com citações]

Exemplo: Indexar arquivos do OneLake via Fabric Notebook

# Executar este código em um Fabric Notebook (Spark environment)
from notebookutils import mssparkutils
from azure.search.documents import SearchClient
from azure.core.credentials import AzureKeyCredential
from openai import AzureOpenAI
import json

# Listar arquivos no Lakehouse (OneLake)
files = mssparkutils.fs.ls("Files/documentos/contratos/")

openai_client = AzureOpenAI(
    azure_endpoint="https://meu-openai.openai.azure.com",
    api_key=mssparkutils.credentials.getSecret("kv-name", "openai-key"),
    api_version="2024-08-01-preview",
)

search_client = SearchClient(
    endpoint="https://meu-search.search.windows.net",
    index_name="rag-contratos",
    credential=AzureKeyCredential(
        mssparkutils.credentials.getSecret("kv-name", "search-key")
    ),
)

docs_para_indexar = []

for file in files:
    if file.name.endswith(".txt"):  # Após extração com Document Intelligence
        # Ler conteúdo do arquivo no OneLake
        content = mssparkutils.fs.head(file.path, maxBytes=100000)

        # Gerar embedding
        embedding_response = openai_client.embeddings.create(
            input=content[:8000],  # Limite do modelo
            model="text-embedding-3-small",
        )

        docs_para_indexar.append({
            "id": file.name.replace(".txt", "").replace("/", "-"),
            "content": content,
            "title": file.name,
            "source": file.path,
            "content_vector": embedding_response.data[0].embedding,
        })

# Upload em batch para AI Search
if docs_para_indexar:
    result = search_client.upload_documents(docs_para_indexar)
    print(f"Indexados: {sum(1 for r in result if r.succeeded)} documentos")

OneLake MCP Server — Agentes com acesso a dados

O OneLake MCP (Model Context Protocol) server, anunciado pela Microsoft em 2025, expõe dados do OneLake como tools MCP. Agentes de IA (Copilot Studio, Azure AI Agent Service) podem consultar dados do Fabric via linguagem natural sem precisar de código SQL explícito.

# Configuração conceitual do OneLake MCP em um agente
# (via Azure AI Agent Service + MCP)

agent_tools = [
    {
        "type": "mcp",
        "server": {
            "type": "azure_fabric_onelake",
            "workspace_id": "seu-workspace-id",
            "lakehouse_id": "seu-lakehouse-id",
            "authentication": "managed_identity",
        },
        "allowed_tables": ["vendas", "clientes", "contratos"],
    }
]

# O agente pode agora responder perguntas como:
# "Quais contratos vencem nos próximos 30 dias?"
# "Qual o total de vendas da região Sul no Q1?"
# Sem que o desenvolvedor escreva SQL — o LLM gera a query
Convergência Fabric + RAG: O cenário ideal para empresas no ecossistema Microsoft é: dados estruturados (tabelas) respondidos via Fabric Data Agents (text-to-SQL), documentos não estruturados (PDFs, e-mails) respondidos via RAG clássico com AI Search, ambos orquestrados por um único agente que decide qual ferramenta usar conforme o tipo de pergunta.

Quando usar Fabric para RAG

CenárioAbordagem
Dados já estão no OneLake/Lakehouse✅ Fabric Notebook → AI Search (zero ETL extra)
Perguntas sobre tabelas/métricas✅ Fabric Data Agent (text-to-SQL)
Documentos PDF/Word no OneLake✅ Pipeline RAG clássico via Notebook
Dados em silos fora do Azure⚠️ Considerar migração ou OneLake shortcuts
Real-time (< 1s latência)❌ Fabric tem latência de Spark; use AI Search diretamente
OneLake Shortcuts: Se seus dados estão em AWS S3 ou Google Cloud Storage, o Fabric suporta "shortcuts" — mapeamentos que expõem dados externos como se fossem OneLake nativo, sem mover os dados. Útil para RAG multi-cloud sem duplicação.

Como isso se conecta

  • 04-02-03 Azure AI Search: o destino dos embeddings gerados a partir de dados do OneLake
  • 04-06-01 Azure AI Search + OpenAI: o pipeline On Your Data pode ser alimentado por dados do Fabric
  • 04-06-03 Desafio RAG jurídico: o Lakehouse do Fabric pode armazenar os 10k PDFs indexados
  • 05-Agentes: Fabric Data Agents são agentes especializados em dados estruturados — complementares ao RAG de documentos

Fontes

  1. Microsoft Learn — Fabric Data Agents (AI Skills) — microsoft.com
  2. Microsoft Learn — OneLake Overview — microsoft.com
  3. Microsoft Tech Community — Introducing OneLake MCP Server — techcommunity.microsoft.com
  4. Microsoft Learn — OneLake Shortcuts — microsoft.com