Recommendation Engine
Har production recommender DO STAGE ka hota hai. CANDIDATE GENERATION: crore items mein se ~1000 nikaalo — fast, approximate methods se (collaborative filtering, embedding similarity, trending). RANKING: un 1000 ko heavy ML model se score karke top 10 nikaalo. Do stage isliye ki crore items par heavy model chalana impossible hai.
Serving path mein latency budget ~100ms hai, isliye user aur item EMBEDDINGS precomputed hote hain aur vector DB (approximate nearest neighbour) se similarity search hoti hai. Model training completely offline hota hai — daily ya hourly batch. Cold start (naya user) ke liye popularity-based fallback rakho.
// Two-stage — har bade recommender ka shape
Request → Candidate Generation (~1000 items, <20ms)
├─ collaborative filtering (similar users)
├─ embedding ANN search (vector DB)
└─ trending / popular
→ Ranking model (~1000 items, <50ms)
→ business rules (diversity, already-seen filter)
→ top 10- Do stage: candidate generation (fast, approximate) → ranking (heavy ML)
- Embeddings precomputed, vector DB se ANN search
- Training offline batch; cold start ke liye popularity fallback
COLLABORATIVE filtering kehta hai "tumhare jaise logon ne ye pasand kiya" — ye user behaviour par chalta hai aur surprising, achhi recommendations deta hai. Par naye items ke liye kaam nahi karta (koi interaction hi nahi hai).
CONTENT-BASED filtering item ke attributes par chalta hai — "tumne action movie dekhi, ye bhi action hai". Ye naye items handle kar leta hai par recommendations boring aur predictable ho jaate hain. Production systems dono ka HYBRID use karte hain.
Model training BATCH hoti hai — roz ya har kuch ghante, poore historical data par. Serving ONLINE hoti hai — 100ms mein. Ye do bilkul alag systems hain aur inhe alag rakhna hi correct architecture hai.
Beech ka pul FEATURE STORE hai: training aur serving dono ek hi feature definitions use karte hain. Agar training aur serving alag tarike se features banayein to TRAINING-SERVING SKEW aata hai — model offline achha dikhta hai par production mein kharab karta hai.