System Design শেখো
শেখো / ML / AI সিস্টেম ডিজাইন

Ranking ও Embeddings

12 মিনিট Module 10 · ML / AI System Design 🔥
এক নজরে
  • Ranking হলো একগুচ্ছ item-কে প্রাসঙ্গিকতা অনুযায়ী সাজানোর কাজ, যা learning-to-rank model দিয়ে শেখা হয়।
  • Embedding হলো যেকোনো জিনিসের (word, user, item) অর্থবহ dense vector রূপ, যেখানে কাছাকাছি জিনিস কাছাকাছি বসে।
  • Cosine বা dot product দিয়ে embedding-এর similarity মেপে search ও recommendation দুটোই শক্তিশালী হয়।

সমস্যাটা কী?

Google-এ "best biryani in Dhaka" লিখলে কয়েক লক্ষ পেজ মিলবে, কিন্তু তোমাকে দেখাতে হবে সেরা ১০টা — এবং ঠিক ক্রমে। আবার একটা recommendation system-এর candidate ধাপে যখন কোটি video থেকে ৫০০টা বেছে নিতে হয়, তখন প্রশ্ন হলো — কম্পিউটার "মিল" বা "প্রাসঙ্গিকতা" জিনিসটা কীভাবে বোঝে? শব্দ তো শুধু অক্ষর, video তো শুধু pixel।

এই দুই সমস্যার — "কীভাবে সাজাব" আর "কীভাবে মিল বুঝব" — উত্তরই হলো ranking আর embeddings। এই দুটি ধারণা আধুনিক search engine, recommendation, এমনকি ChatGPT-র মতো system-এরও ভিত্তি।

মূল ধারণা

Ranking হলো একগুচ্ছ item-কে প্রাসঙ্গিকতার ক্রমে সাজানোর প্রক্রিয়া, আর embedding হলো যেকোনো object-কে এমন একটি dense vector-এ রূপান্তর করা যেখানে অর্থগত মিল জ্যামিতিক নৈকট্যে প্রকাশ পায়।

দুটো ধারণা হাত ধরাধরি করে চলে। Embedding "মিল" মাপার একটা গাণিতিক ভাষা দেয় — দুই জিনিস কতটা কাছাকাছি তা সংখ্যায় বলা যায়। আর ranking সেই similarity আর আরও অনেক signal মিলিয়ে চূড়ান্ত ক্রম তৈরি করে। Embedding দিয়ে দ্রুত মোটামুটি প্রাসঙ্গিক জিনিস টেনে আনা হয়, তারপর ranking দিয়ে নিখুঁতভাবে সাজানো হয়।

কীভাবে কাজ করে

Embedding কী ও কেন

একটা embedding হলো কয়েকশো বা কয়েক হাজার সংখ্যার একটা vector (যেমন [0.21, -0.83, 0.05, ...])। একটা ভালো-train করা embedding space-এ:

  • "রাজা" আর "রানী" কাছাকাছি বসে।
  • "ঢাকা" আর "চট্টগ্রাম" কাছাকাছি।
  • বিখ্যাত উদাহরণ: রাজা - পুরুষ + নারী ≈ রানী — অর্থ গণিতে রূপ নেয়।

Embedding model (যেমন word2vec, বা আধুনিক transformer) বিশাল data থেকে শিখে নেয় কোন জিনিস কোন প্রসঙ্গে আসে, আর সেই অনুযায়ী vector বসায়।

Similarity মাপা

দুই embedding কতটা মিল, তা মাপার দুটি জনপ্রিয় উপায়:

পদ্ধতিকী মাপেব্যবহার
Cosine similarityদুই vector-এর মধ্যবর্তী কোণদিক গুরুত্বপূর্ণ, দৈর্ঘ্য নয় (text search)
Dot productকোণ + দৈর্ঘ্য দুটোইজনপ্রিয়তাও ধরা পড়ে (recommendation)

Cosine মান ১-এর কাছাকাছি মানে খুব মিল, ০ মানে সম্পর্কহীন, -১ মানে বিপরীত।

Vector search

কোটি embedding-এর মধ্যে query-র কাছের কয়েকশো খুঁজে বের করা একটা একটা করে তুলনা করলে অসম্ভব ধীর। তাই Approximate Nearest Neighbor (ANN) algorithm (যেমন HNSW, FAISS, ScaNN) ব্যবহার করা হয়, যা মিলিসেকেন্ডে কাছের vector এনে দেয় সামান্য আপসে।

Learning-to-Rank

Ranking model-এর লক্ষ্য সঠিক ক্রম শেখা, একটা item-এর absolute score নয়। তিন ধরনের approach:

ধরনকী optimize করেউদাহরণ
Pointwiseপ্রতিটি item-এর আলাদা scoreregression
Pairwiseদুই item-এর মধ্যে কে আগেRankNet
Listwiseপুরো তালিকার ক্রম একসাথেLambdaMART

Ranking-এর feature

একটা ভালো ranking model শুধু similarity নয়, অনেক signal নেয় — query-document text মিল, item-এর জনপ্রিয়তা, freshness, user-এর past behavior, click-through rate, সময় ও device। এই feature-গুলোর মিশ্রণেই চূড়ান্ত প্রাসঙ্গিকতা নির্ধারিত হয়।

সহজ উদাহরণ

ভাবো একটা বইয়ের লাইব্রেরি। প্রতিটি বইকে যদি একটা শেলফে এমনভাবে রাখা হয় যে রান্নার বই সব এক কোণে, কবিতার বই আরেক কোণে, ইতিহাসের বই মাঝখানে — তাহলে এটাই embedding space। কাছের বই মানে মিল-থাকা বিষয়। এখন তুমি "বিরিয়ানির রেসিপি" চাইলে গ্রন্থাগারিক সোজা রান্নার কোণে যায় (vector search), কয়েকটা বই টেনে আনে। তারপর সেগুলোর মধ্যে কোনটা নতুন সংস্করণ, কোনটা বেশি পড়া হয়েছে, কোনটা ছবিসহ — এসব দেখে সবচেয়ে কাজের বইটা ওপরে রাখে (ranking)।

কৌশল

ব্যবহারিক কিছু গুরুত্বপূর্ণ দিক:

  1. Two-tower model: user আর item-এর জন্য আলাদা network যা একই embedding space-এ মেলে; recommendation-এ retrieval-এর জন্য অত্যন্ত জনপ্রিয়।
  2. Embedding dimension নির্বাচন: খুব ছোট হলে nuance হারায়, খুব বড় হলে memory ও খরচ বাড়ে — সাধারণত ৬৪ থেকে ১০২৪-এর মধ্যে।
  3. Re-ranking: প্রথম ranking-এর পর diversity বা business rule দিয়ে আবার সাজানো।

কখন ব্যবহার করবে / করবে না

Embedding ও ranking দরকার যখন:

  • "মিল" বা "প্রাসঙ্গিকতা" বোঝা মূল কাজ (search, recommendation, semantic matching)।
  • item বা document-এর সংখ্যা বিশাল।
  • exact keyword match যথেষ্ট নয়, অর্থগত মিল লাগে।

দরকার নেই যখন:

  • সহজ exact match বা ছোট তালিকাই কাজ চালায়।
  • ব্যাখ্যাযোগ্যতা (কেন এই ক্রম) কঠোরভাবে দরকার — embedding অনেক সময় "black box" মনে হয়।
সাবধান

Embedding চিরকাল তাজা থাকে না। যে data-তে train হয়েছে, জগৎ তার থেকে এগিয়ে গেলে embedding পুরোনো ("stale") হয়ে যায় — নতুন slang, নতুন product, নতুন প্রসঙ্গ ধরতে পারে না। আবার training data-র পক্ষপাত embedding-এও ঢুকে যায় (bias)। তাই embedding নিয়মিত retrain করা আর তার মান যাচাই করা জরুরি, একবার বানিয়ে ভুলে যাওয়ার জিনিস নয়।

বাস্তব উদাহরণ

Google Search-এর "neural matching" আর BERT-ভিত্তিক বোঝাপড়া embedding-এরই প্রয়োগ — তোমার query আর web page-কে একই space-এ এনে অর্থগত মিল বের করা হয়, এমনকি একটাও শব্দ মিল না থাকলেও। এরপর একটা learning-to-rank system শত signal মিলিয়ে চূড়ান্ত ১০টা ফল সাজায়।

Spotify গান, artist আর user-কে embedding-এ রূপ দেয়; তোমার শোনা গানের embedding-এর কাছাকাছি গান টেনে এনে "তোমার মতো শ্রোতা" বের করে। Pinterest-এর "PinSage" embedding দিয়ে বিলিয়ন pin-এর মধ্যে similarity বের করে। সব ক্ষেত্রেই একই দুই-ধাপ — embedding দিয়ে দ্রুত retrieval, তারপর ranking model দিয়ে নিখুঁত সাজানো।

টিপস

Interview-এ embedding ব্যাখ্যা করতে গিয়ে শুধু "vector" বললে থেমো না — মূল কথাটা বলো: "এমন একটা space যেখানে অর্থগত মিল = জ্যামিতিক নৈকট্য।" আর ranking-এর ক্ষেত্রে মনে রেখো interviewer প্রায়ই জিজ্ঞেস করে "metric কী হবে" — NDCG বা MRR-এর মতো ranking metric উল্লেখ করলে বোঝা যাবে তুমি জানো ক্রম মাপা সাধারণ accuracy থেকে আলাদা।

মিনি কুইজ

1. Learning-to-rank সাধারণ regression থেকে কীভাবে আলাদা?

2. Embedding আসলে কী?

3. দুটি embedding কতটা সদৃশ তা মাপতে সাধারণত কী ব্যবহার হয়?