🏗️ Arquitectura - ¿Quién quiere ser Millonario?

graph TD classDef gold fill:#FFD700,stroke:#FF8C00,stroke-width:2px,color:#1a0533; classDef cloudflare fill:#f38020,stroke:#fff,stroke-width:2px,color:#fff; classDef db fill:#1a0533,stroke:#FFD700,stroke-width:2px,color:#FFD700; User["👤 Jugador"] -->|HTTPS + Turnstile| CF["☁️ Cloudflare Network"] CF -->|Routing| Worker["⚙️ Worker millonario Hono.js"] subgraph "¿Quién quiere ser Millonario? App" Worker -->|Static Assets| Assets["📂 HTML/CSS Imágenes"] Worker -->|SQL Query| D1["🛢️ D1 Database Preguntas Quiz"] Worker -->|Validación| TS["🛡️ Turnstile Bot Protection"] Worker -->|1· embedding de la pregunta| EMB["🔢 bge-m3 multilingüe ES/EN/CA"] EMB -->|vector 1024d| VEC["🧭 Vectorize millonario-knowledge 48 fragmentos"] VEC -->|2· top-4 filtrado por idioma| Worker Worker -.->|respaldo si Vectorize falla| KV["🗄️ KV Store fallback"] Worker -->|3a· caché ON| GW["🔀 AI Gateway millonario-gw · caché 300s respuesta entera"] GW -->|inferencia| AI["🧠 Workers AI modelo seleccionable"] Worker -->|3b· caché OFF: directo| AI AI -->|SSE token a token| Worker end CF -->|snippets embebidos| AS["🔎 AI Search gestionado instancia millonario"] AS -->|indexa solo| R2["🪣 R2 millonario-knowledge-docs 48 documentos"] class User gold; class CF,Worker,AI,GW,EMB,AS cloudflare; class D1,KV,VEC,R2 db; class TS gold;

Què mirar a la demo

  1. Recuperació real. La pregunta es converteix en vector amb bge-m3 i es compara amb 48 fragments a Vectorize, filtrats per idioma. La barra de mètriques mostra quants fragments han alimentat la resposta.
  2. Streaming. Els tokens es pinten a mesura que arriben per SSE, així es veu el temps fins al primer token, no només el total.
  3. Cau contra streaming. Els dos tiren en direccions oposades, i l'interruptor del xat ho ensenya. Amb cau: la crida passa per l'AI Gateway, que ha d'acumular la resposta sencera per desar-la, així que no hi ha streaming — però repeteix la pregunta i la segona resposta torna en desenes de mil·lisegons. Sense cau: el Worker crida el model directament i el primer token arriba cap als 700 ms.
  4. Canvi de model. El selector canvia el model en calent entre quatre proveïdors. El servidor el valida contra una llista blanca.
  5. RAG fet a mà contra producte gestionat. Dos assistents conviuen a propòsit. El de l'esquerra del joc és el nostre: hi hem escrit el codi d'embeddings, recuperació i prompt. El de la dreta és Cloudflare AI Search, que indexa un bucket R2 pel seu compte i serveix xat i cerca sense codi de recuperació nostre. Mateix corpus, mateixa pregunta: compara les respostes i l'esforç que ha costat cadascuna.
← Enrere