Feature Store do zero: DuckDB + Redis resolvem o skew entre treino e inferência
Aprofundamento CEVIU
Aprofundamento
A implementação mínima descrita na notícia não é só 'simples', é uma arquitetura intencionalmente desacoplada em cinco papéis técnicos: (1) registro de features com metadados versionados, (2) offline store em Parquet + DuckDB para transformações SQL nativas e backfills rápidos, (3) online store em Redis com TTLs ajustáveis e estruturas hash por entidade (ex: user:123), (4) pipeline de materialização que roda em intervalos ou eventos (não em streaming contínuo), e (5) API FastAPI com tipagem Pydantic para garantir contrato entre treino e inferência. DuckDB aqui não substitui um data warehouse, ele executa joins complexos sobre dados históricos sem ETL prévio, aproveitando leitura direta de Parquet e otimizações de vetorização; já o Redis não é usado como cache genérico, mas como repositório transacional de features atualizadas em tempo real, com operações atômicas de HSET e HGETALL para recuperação por chave composta.
O trecho 'reduzir o gap entre treino e servimento' tem base concreta: o training-serving skew é mitigado porque a mesma definição de feature (ex: últimos 7 dias de cliques por categoria) é calculada *uma única vez* no DuckDB e replicada *sem transformação adicional* para o Redis, eliminando divergências por diferenças de bibliotecas, horários de processamento ou truncamento de precisão que ocorrem quando equipes recriam logicamente as mesmas features em Python e em C++/Rust no servimento.
O que mudou
Em abril, o CEVIU destacou o uso de Redis para observabilidade em motores de recomendação, mas como camada de telemetria, não como online store funcional. Agora, o Redis assume papel central de produção: armazena features prontas para inferência, não apenas métricas. Também há mudança de escopo em relação ao Feature Trimmer (04/05): antes, o Pinterest removia features redundantes *durante* a requisição; agora, a abordagem é preventiva, definir, persistir e sincronizar features *antes* da inferência, reduzindo a necessidade de filtragem em runtime. A stack DuckDB+Redis também se diferencia da plataforma 'Basement' com Iceberg+R2 (23/04): lá, o foco era custo zero para análise exploratória; aqui, é governança mínima para ML em produção, mesmo tech stack, objetivos distintos.
Por que isso importa
Equipes de dados não estão mais escolhendo entre 'feature store completo' e 'zero governança'. Essa implementação mostra que é possível ter controle de versão, consistência entre ambientes e baixa latência com menos de 200 linhas de código Python, sem Kubernetes, sem Kafka, sem serviço gerenciado. Isso muda o ponto de entrada para startups e squads internas: governança de features deixa de ser um projeto de infraestrutura de 6 meses e vira uma tarefa de engenharia de dados de 2 dias. Para RAG, significa que contextos estruturados (ex: histórico de suporte do cliente, preferências explícitas) podem ser injetados na inferência com latência sub-10 ms, sem depender de bancos vetoriais ou LLMs customizados.
Linha do tempo
Pinterest introduz deduplicação em nível de requisição usando Apache Iceberg
CEVIU detalha plataforma 'Basement' com Iceberg, Cloudflare R2 e R2 Data Catalog
CEVIU cobre uso de Redis para observabilidade em motores de recomendação em tempo real
Pinterest lança Feature Trimmer para remover features redundantes em tempo de inferência
CEVIU publica stack zero-custo com DuckDB e Astro para aplicações de dados
Implementação mínima de feature store com DuckDB (offline) e Redis (online) para mitigar training-serving skew
Perguntas frequentes
DuckDB pode substituir um data warehouse como Snowflake ou BigQuery nessa arquitetura?
Não. DuckDB aqui é um offline store para treinamento e backfill, não um sistema multiusuário, com concorrência pesada ou SLA de uptime. Ele lê Parquet local ou em cloud storage, mas não oferece isolamento de transações ACID nem escalabilidade horizontal. É uma peça de processamento, não de fonte de verdade.
Por que não usar SQLite ou PostgreSQL como online store em vez de Redis?
SQLite não escala em throughput para milhares de requisições por segundo. PostgreSQL tem latência média de 2, 5 ms por consulta, enquanto Redis opera em sub-milissegundo com pico de 100k+ ops/s por nó. Para inferência em tempo real, essa diferença é crítica, especialmente em RAG, onde cada feature adicionada aumenta o tempo total de resposta.
Como essa abordagem lida com features calculadas em tempo real, como 'taxa de conversão nos últimos 5 minutos'?
Não lida, e não pretende. Essa implementação é para features estáticas ou semi-estáticas (atualizadas em batch). Features verdadeiramente streamings exigem sistemas como Flink ou ksqlDB. O valor dela está justamente em isolar o que *pode* ser pré-calculado, deixando o streaming para casos específicos e justificados.
É possível integrar esse feature store com frameworks como Feast ou Hopsworks?
Sim, mas não como plug-in. Você pode usar o DuckDB como offline store do Feast (via connector personalizado) e o Redis como online store, porém, isso adiciona complexidade. A proposta da notícia é evitar abstrações intermediárias: a API FastAPI é o contrato, não um SDK de terceiros.
Fontes
- kdnuggets.comfonte original
- Categoria
- CEVIU Dados
- Publicado
- 15 de junho de 2026
- Editoria
- CEVIU Dados
