এমবেডিংস ও ভেক্টর সার্চ
এমবেডিং কী?
কম্পিউটার শব্দ বোঝে না — সে শুধু সংখ্যা বোঝে। তাহলে এআই কীভাবে বোঝে যে "সুখী" আর "আনন্দিত" কাছাকাছি অর্থের, কিন্তু "সুখী" আর "গাড়ি" সম্পূর্ণ আলাদা?
এর উত্তর হলো এমবেডিং (Embedding)। এটি শব্দ, বাক্য বা ডকুমেন্টকে সংখ্যার তালিকায় (ভেক্টরে) রূপান্তর করার পদ্ধতি — যেখানে কাছের অর্থের জিনিসগুলো কাছাকাছি সংখ্যা পায়।
কল্পনা করুন একটি মানচিত্রের কথা। মানচিত্রে ঢাকা আর নারায়ণগঞ্জ কাছাকাছি, কিন্তু ঢাকা আর নিউ ইয়র্ক অনেক দূরে। এমবেডিং ঠিক এমনই একটি "অর্থের মানচিত্র" তৈরি করে — যেখানে কাছের অর্থের শব্দগুলো কাছাকাছি অবস্থান করে।
ভেক্টর কী?
ভেক্টর হলো সংখ্যার একটি তালিকা। যেমন: [০.২, -০.৫, ০.৮, ০.১]। এমবেডিং মডেল প্রতিটি শব্দকে এরকম শত বা হাজার সংখ্যার একটি তালিকায় রূপান্তর করে। এই সংখ্যাগুলো শব্দের অর্থের বিভিন্ন দিক ধারণ করে।
আধুনিক এমবেডিং মডেলগুলো ৭৬৮ থেকে ৩০৭২ মাত্রার (dimensions) ভেক্টর তৈরি করে। প্রতিটি মাত্রা অর্থের একটি দিক ধারণ করে — যেমন ইতিবাচকতা, আনুষ্ঠানিকতা, বিষয়বস্তু ইত্যাদি।
ভেক্টর সার্চ কীভাবে কাজ করে?
ঐতিহ্যবাহী সার্চ কীওয়ার্ড ম্যাচ করে — "বিড়াল" লিখলে শুধু "বিড়াল" শব্দ থাকা ডকুমেন্ট পাওয়া যায়। কিন্তু ভেক্টর সার্চ (semantic search) অর্থের ভিত্তিতে মেলায়:
- সার্চ কুয়েরিকে ভেক্টরে রূপান্তর করা হয়।
- ডেটাবেসের সব ভেক্টরের সাথে তুলনা করা হয়।
- সবচেয়ে কাছের (অর্থের দিক দিয়ে মিলে যায়) ভেক্টরগুলো ফলাফল হিসেবে দেখানো হয়।
ফলে "বিড়াল" সার্চ করলে "মেও", "পোষা প্রাণী", "ক্যাট ফুড" ইত্যাদিও পাওয়া যায় — কারণ অর্থের দিক দিয়ে এগুলো কাছাকাছি।
জনপ্রিয় ভেক্টর ডেটাবেস
- পাইনকোন (Pinecone): ক্লাউড-ভিত্তিক, ব্যবহার সহজ, স্কেলেবল।
- ক্রোমা (Chroma): ওপেন-সোর্স, লোকাল ও ক্লাউড দুটোই সমর্থন করে।
- উইভিয়েট (Weaviate): ওপেন-সোর্স, হাইব্রিড সার্চ সমর্থন করে।
- পিজিভেক্টর (pgvector): PostgreSQL-এর এক্সটেনশন — আপনার বিদ্যমান ডেটাবেসেই ভেক্টর সার্চ যোগ করুন।
এমবেডিং তৈরি ও ভেক্টর সার্চ (Python)
ছোট কুইজ
পড়া চালিয়ে যান