Gustavo Karsten
🏛️

Arise School — Video RAG com HyDE + Reranking

Plataforma educacional com assistente AI contextualizado em vídeo. Alunos assistem aulas e conversam com Logox, que responde usando o conteúdo transcrito do vídeo como contexto via pipeline RAG de última geração. O upload dispara um worker BullMQ que extrai áudio via ffmpeg, transcreve com Deepgram, faz chunking semântico (500 tokens, overlap 50) e gera embeddings OpenAI armazenados em PostgreSQL+pgvector com índice HNSW. Na consulta, o pipeline aplica HyDE (gera documento hipotético para melhorar a busca), faz busca híbrida (vector + BM25/tsvector com merge RRF), rerank com Cohere, e o GPT-5.2 responde com citações `[Título, MM:SS]` clicáveis que dão seek no vídeo no timestamp exato. Tudo observável via LangFuse.

Core Project

## 🔧 Tech Stack

Next.js 16 (App Router)TypeScriptPostgreSQL 17pgvectorHNSW indexDrizzle ORMBullMQRedis 7.4OpenAI GPT-5.2OpenAI text-embedding-3-small (1536 dims)Deepgram (transcrição)Cohere rerank-english-v3.0ffmpegLangFuseJWT (auth)bcryptShadcn/uidnd-kitDocker ComposeDokploy

## 📈 Workflow

api

Upload (admin)

Admin faz upload de MP4 ou PDF no painel /admin/upload; API enfileira job no BullMQ

transform

Worker: ffmpeg → Deepgram

Extrai áudio com ffmpeg; transcreve com Deepgram; chunks semânticos de 500 tokens com overlap 50

ai

Worker: Embeddings (OpenAI)

Gera embeddings com text-embedding-3-small (1536 dims) e armazena no PostgreSQL com índice HNSW (pgvector)

api

Aluno: pergunta no /watch/[videoId]

Aluno digita pergunta no sidebar do player; hook useRAGQuery dispara o pipeline

ai

HyDE — Hypothetical Document Embeddings

LLM gera um documento hipotético que responderia a pergunta; embedding desse doc é usado na busca (melhora recall em perguntas curtas)

database

Busca Híbrida (vector + BM25 + RRF)

pgvector (HNSW) + tsvector (BM25) com merge via Reciprocal Rank Fusion; cobre semântica e match literal

ai

Cohere Rerank → top 5

Rerank Cohere rerank-english-v3.0 seleciona os 5 chunks mais relevantes

ai

GPT-5.2 — resposta com citações

LLM gera resposta fundamentada incluindo citações [Título, MM:SS] que permitem seek no player

monitoring

LangFuse (traces, custo, latência)

Pipeline RAG inteiro é rastreado: latência de cada etapa, custo de embedding/LLM/rerank, qualidade das citações

## ✨ Features

  • Pipeline RAG de última geração: HyDE + busca híbrida (vector + BM25 + RRF) + rerank Cohere
  • Upload de MP4 ou PDF com worker assíncrono BullMQ (container separado do Next.js)
  • Transcrição de áudio com Deepgram + chunking semântico (500 tokens, overlap 50)
  • Embeddings OpenAI text-embedding-3-small (1536 dims) com índice HNSW no pgvector
  • Citações clicáveis `[Título, MM:SS]` que dão seek no player para o timestamp exato
  • Player YouTube embed + sidebar de chat com Logox (assistente contextualizado)
  • Auth JWT + bcrypt, sessões via cookie httpOnly, dois roles: student e admin
  • Painel admin completo: upload, gestão de vídeos, cursos, usuários, embeddings
  • Anotações pessoais do aluno por vídeo + download de materiais
  • Migrations rodam automaticamente via docker-entrypoint.sh antes do Next.js iniciar
  • Observabilidade ponta a ponta com LangFuse (latência, custo, qualidade por etapa)

## 🎯 Results

  • Pipeline RAG moderno, não tutorial: combina HyDE + busca híbrida + rerank — técnica usada em produção
  • Citações clicáveis com seek no timestamp — experiência de usuário final diferenciada
  • Processamento assíncrono desacoplado via BullMQ + worker container — não bloqueia a request HTTP
  • Índice HNSW no pgvector permite busca sub-linear mesmo com milhares de chunks por vídeo
  • 100% do pipeline RAG rastreado no LangFuse — cada etapa tem latência, custo e qualidade mensuráveis

## 🧩 Use Case

Plataformas de cursos online, treinamentos corporativos, documentários educacionais ou qualquer catálogo de conteúdo em vídeo que queira oferecer busca conversacional sobre o material. O aluno faz perguntas em linguagem natural e recebe respostas com referência exata ao trecho do vídeo. Demonstra domínio prático de RAG moderno (HyDE + hybrid + rerank) e de arquitetura assíncrona (worker + fila) pronta pra escalar.

## 🔗 Related Projects