কম্পিউটার টিউটোরিয়াল

রেডিস দিয়ে হাই-পারফরম্যান্স টেক্সট র‍্যাঙ্কার বানান: ধাপে ধাপে গাইড

একটি এমন বিশ্বে থাকা যেখানে অধিকাংশ মানুষ স্মার্টফোন ছাড়া বাহির হতে পারেনা, মানে গুগল আমাদের কখনোই অনেক দূরে নয়। একক্ষণে, আমরা গুগলের সার্চ ইঞ্জিনে একটি কোয়ারী দিয়ে প্রায় যেকোনো প্রশ্নের উত্তর পেতে পারি।

সার্চ ইঞ্জিন (এবং তাদের অসীম তথ্যের অ্যাক্সেস) রোজমর্রার জীবনে интегриেটেড হয়ে গেছে, যেটা আমাদের অনেককে এইতেও বেশি নির্ভরশীল করেছে। এবং একটি সার্চ ইঞ্জিন অপ্টিমাল হতে হলে, কোয়ারীগুলোর উত্তর ইনস্ট্যান্টলি রিট্রিভ করতে হবে গুগল এবং অন্যান্য টেক জায়েন্টস দ্বারা নির্ধারিত উচ্চ মানদণ্ডের কারণে।

যেকোনো ল্যাগ, ডিলে, বা ড্র্যাগ ইউজারের অভিজ্ঞতাকে হাম্পার করবে, এইজন্য এই লঞ্চপ্যাড অ্যাপ, Алек্সিস (Alexis), রেডিসকে মূল ডাটাবেস হিসেবে ব্যবহার করেছে এই বাধা অতিক্রম করতে।

এই অ্যাপ্লিকেশনের ফাউন্ডার, ববি ডনচেভ (Bobby Donchev), রেডিসএআই (RedisAI) এবং রেডিসার্চ (RediSearch) এর ক্ষমতা ব্যবহার করেছেন একটি কর্পাস থেকে কোয়ারীর জবাবে তথ্য রিট্রিভ করতে সর্বোচ্চ দক্ষতার সাথে। ইউজাররা পিডিএফ ইনডেক্স করতে পারবেন এবং একটি সিম্পল UI ব্যবহার করে তাদের ডকুমেন্ট থেকে তথ্য এক্সট্র্যাক্ট করতে পারবেন।

রেডিস ছাড়া, পুরো সার্চ প্রসেস স্লাগিশ হতো, Алек্সিসের ফাংশনালিটি হাম্পার করতো। চলুন দেখি ববি কীভাবে এই অ্যাপ্লিকেশনটি বানিয়েছেন।

এগিয়ে যাওয়ার আগে, আমরা হাইলাইট করতে চাই যে রেডিস লঞ্চপ্যাডে আপনার জন্য চমৎকার অ্যাপ্লিকেশনের একটি রেঞ্জ আছে। তাই সেটা চেক আউট করতে ভুলবেন না!

  1. আপনি কী বানাবেন?
  2. আপনার কী কী লাগবে?
  3. আর্কিটেকচার
  4. শুরু করা
  5. ডেটা কীভাবে সংরক্ষিত হয়
  6. ডেটা কীভাবে অ্যাক্সেস করা হয়
  7. এটা কীভাবে কাজ করে

১. আপনি কী বানাবেন?

আপনি একটি ইফিশিয়েন্ট টেক্সট র‍্যাঙ্কার বানাবেন যা সর্বোচ্চ গতিতে সার্চ কোয়ারী রিট্রিভ করতে সক্ষম। ইউজাররা এই অ্যাপ্লিকেশন ব্যবহার করে গুরুত্বপূর্ণ পিডিএফ ইনডেক্স করতে এবং তাদের ডকুমেন্ট থেকে সহজে উত্তর এক্সট্র্যাক্ট করতে পারবেন।

আমরা প্রতিটি ধাপ ক্রোনোলজিক্যালি গিয়ে বলব এবং অ্যাপ্লিকেশন বানাতে কী কম্পোনেন্ট লাগবে সেটা হাইলাইট করব।

২. আপনার কী কী লাগবে?

  • রেডিসার্চ (RediSearch): ইনডেক্সিং, কোয়ারিং এবং ফুল-টেক্সট সার্চ ইঞ্জিন
  • রেডিসএআই (RedisAI): ডিপ লার্নিং/মেশিন লার্নিং মডেল এক্সিকিউট করে ডেটা ম্যানেজ করতে এবং লেটেন্সি কমাতে
  • রেডিস স্ট্রিমস (Redis Streams): ডেটা কনসাম্পশন ম্যানেজ করতে
  • NodeJS: ওপেন-সোর্স, ক্রস-প্ল্যাটফর্ম হিসেবে ব্যবহৃত হয় যেটা ওয়েব ব্রাউজারের বাইরে জাভাস্ক্রিপ্ট কোড এক্সিকিউট করে
  • রেডিসজেason (RedisJSON): ECMA-404 দ্য জেসন ডেটা ইন্টারচেঞ্জ স্ট্যান্ডার্ডকে নেটিভ ডেটা টাইপ হিসেবে বাস্তবায়ন করে

৩. আর্কিটেকচার

সার্চারের কোয়ারীর উত্তর দেওয়া দুটি ধাপে হয়:

  1. প্রথমে, আপনি সেই টেক্সট সিলেক্ট করবেন যেটার উত্তর থাকার সম্ভাবনা। এই ধাপে আপনাকে BM25 র‍্যাঙ্কিং ফাংশন সহ রেডিসার্চ ব্যবহার করতে হবে।
  2. আপনি রেডিসএআই-এ লোড করা একটি ট্রান্সফরমার AI মডেল ব্যবহার করতে পারেন টেক্সটে আনসার স্প্যান চিহ্নিত করতে।

প্রথম ধাপে রেডিসার্চ ব্যবহার করলে, আপনি সার্চ স্পেস দ্রুতগতির হ্রাস করবেন। এটা অ্যাপের সমগ্র অভিজ্ঞতাকে দ্রুত করবে। এরপর, আপনাকে ব্যাকএন্ডে NodeJS with typescript এবং ফ্রন্টএন্ডে React with typescript ব্যবহার করতে হবে।

রেডিসএআই এবং রেডিসার্চ ছাড়া, আপনি আপনার ইউজার মডেলের জন্য রেডিসজেason এবং রেডিস স্ট্রিমস দিয়ে ইমপ্লিমেন্ট করা একটি অ্যাসিনক্রোনাস ওয়ার্কার লিভারেজ করবেন।

ওয়েবসার্ভার এক্সপোজ করা হয়েছে এক্সপ্রেস ফ্রেমওয়ার্ক দিয়ে যেটার নিচের এন্ডপয়েন্টগুলো আছে:

একবার রেজিস্টার এবং লগ ইন করলে, আপনি ডকুমেন্ট আপনার ইনডেক্সড লাইব্রেরিতে যোগ করা শুরু করতে পারবেন। যখন একটি পিডিএফ আপলোড হবে, একটি ইভেন্ট রেডিস স্ট্রিমসে লেখা হবে। পরে, কনসিউমার গ্রুপের কেউ ইভেন্টটি পিক আপ করবে অ্যাসিনক্রোনাস প্রসেসিংয়ের জন্য।

তারপর আপনি পিডিএফ প্রসেস করতে পারবেন, কিছু ক্লিনিং অ্যাপ্লাই করবেন এবং পিডিএফকে একটি রেডিস হ্যাশে সংরক্ষণ করবেন যা রেডিসার্চ দিয়ে ইনডেক্সড। এখন আপনি ন্যাচারেল কোয়ারী সার্ভারে পাঠাতে পারবেন এবং বেসিক কীওয়ার্ড সার্চের মতে সীমাবদ্ধ থাকবেন না যেমন 'kubernetes deployments,' 'DDD root aggregate' ইত্যাদি।

বরং, আপনি আরও প্রাসঙ্গিক সার্চ কোয়ারী করতে পারবেন।

ফ্লোচার্ট

নিচে Алек্সিস কীভাবে কাজ করে সেটার একটি সাধারণ ওভারভিউ দেওয়া হলো।

উত্তর দিয়ে কোয়ারী (Answer Query)

  • ইউজার UI-এ একটি কোয়ারী লিখে যা রেডিসার্চে পাঠানো হয়
  • রেডিসার্চ এবং BM25 ফাংশন উভয় কীওয়ার্ড ব্যবহার করে সবচেয়ে অর্থবহুল কন্টেন্ট খুঁজে বের করতে এক্টিভেট হয়।
  • এই কন্টেন্টটি কোয়ারীর সাথে রেডিসএআই-এ ট্রান্সমিট করা হয় যাতে সেটা তুলনা করে এবং সিদ্ধান্ত নেয় ইউজারের কোয়ারীর জন্য সবচেয়ে প্রাসঙ্গিক উত্তর কোনটি।

পিডিএফ আপলোড ও ইনডেক্স পিডিএফ কন্টেন্ট (Upload PDFs & Index PDF Content)

  • একজন ইউজার সার্চ ইঞ্জিনে একটি প্রশ্ন টাইপ করে।
  • রেডিসার্চ পিডিএফ(গুলো) ইনডেক্স করে এবং এই কোয়ারীর উত্তর খুঁজে বের করে।
  • রেডিসএআই একটি ইনফারেন্স চালায় এবং অনেক সম্ভাব্য উত্তর টান করে।
  • রেডিসএআই তারপর প্রতিটি উত্তর তুলনা করে এবং সিদ্ধান্ত নেয় কোনটি কোয়ারীর জন্য সবচেয়ে প্রাসঙ্গিক।
  • উত্তরটি অবশেষে ইউজারকে প্রদর্শিত হয়।

৪. শুরু করা

স্টেপ ১: পূর্বশর্তগুলো ইনস্টল করুন

  • Node - v12.x.x
  • NPM - v6.x.x
  • Docker and Docker-compose

স্টেপ ২. রিপোজিটরি ক্লোন করুন

স্টেপ ৩: ডিপেন্ডেন্সি ইনস্টল করুন

alexis ডিরেক্টরিতে যান এবং নিচের কমান্ড চালান:

npm install

স্টেপ ৪. ফ্রন্টএন্ড এবং ব্যাকএন্ড সেট আপ করুন

নিচের কমান্ড সার্ভার এবং ক্লায়েন্ট অ্যাপ বুটস্ট্র্যাপ করবে এবং রেডিস সার্ভারও রেডিসইনসাইট GUI-এর সাথে ইনিশিয়ালাইজ করবে:

npm run bootstrap

স্টেপ ৫. অ্যাপ্লিকেশন শুরু করুন

npm start

স্টেপ ৬. অ্যাপ্লিকেশন অ্যাক্সেস করুন

https://localhost:3000 খুলুন অ্যাপ্লিকেশন অ্যাক্সেস করতে

স্টেপ ৭. রেডিসইনসাইট অ্যাক্সেস করুন

রেডিসইনসাইট একটি ভিজুয়াল টুল যা আপনাকে আপনার রেডিস ডাটাবেসের সাথে GUI- এবং CLI-ভিত্তিক ইন্টারঅ্যাকশন উভয় করতে দেয়, এবং আপনার রেডিস-ভিত্তিক অ্যাপ্লিকেশন ডেভেলপ করার সময় আরও অনেক কিছু। এটা একটি ফুল-ফিচার্ড পিউর ডেস্কটপ GUI ক্লায়েন্ট যা আপনার রেডিস অ্যাপ্লিকেশন ডিজাইন, ডেভেলপ এবং অপ্টিমাইজ করার ক্যাপাবিলিটি প্রদান করে। আরও জানতে রেডিসইনসাইট সম্পর্কে এখানে ক্লিক করুন

রেডিসইনসাইট GUI নিচের লিংকから অ্যাক্সেসযোগ্য: https://localhost:8001

৫. ডেটা কীভাবে সংরক্ষিত হয়

স্টেপ ১: ইউজার ডেটা একটি রেডিসজেason-এ সংরক্ষিত হয়

স্টেপ ২: প্রতিটি ইউজারের জন্য নিচের কোড দিয়ে একটি রেডিসার্চ ইনডেক্স তৈরি হয়

স্টেপ ৩: একজন ইউজার পিডিএফ আপলোড করলে তার pdfs array রেডিসজেason দিয়ে আপডেট হয়

স্টেপ ৪: ফাইল আপলোড একটি ইভেন্ট ট্রিগার করে যা ax:stream:pdf-processing স্ট্রিমে লেখা হয়। স্ট্রিমের পে‌লোড:

স্টেপ ৫: একটি কনসিউমার একটি কনসিউমার গ্রুপের মধ্যে থেকে ইভেন্টটি স্ট্রিম থেকে পিক করে এবং ফাইল প্রসেস করে, কন্টেন্টও একটি হ্যাশে লেখা হয়।

৬. ডেটা কীভাবে অ্যাক্সেস করা হয়

এই অ্যাপ্লিকেশনে, উপরের হ্যাশকে ইনডেক্স করে প্রতিটি ইউজারের জন্য একটি রেডিসার্চ ইনডেক্স আছে। এটা ইউজারের কোয়ারীর সাথে প্রাসঙ্গিক কন্টেন্ট ম্যাচ করার লুকআপ ক্যাপাবিলিটি দেয়। কন্টেন্ট নিচের কোড দিয়ে অ্যানালাইজ করা হয়:

রেডিসার্চ দিয়ে রিট্রিভ করা কন্টেন্টটি তারপর রেডিসএআই-এ ট্রান্সমিট করা হয় অ্যানালাইসিসের জন্য।

৭. এটা কীভাবে কাজ করে

অ্যাকাউন্ট তৈরি করুন

যখন আপনি Алек্সিস অ্যাপ খুলবেন, আপনাকে লগ ইন পোর্টালে রিডাইরেক্ট করা হবে (নিচের ছবি দেখুন)। আপনার যদি ইতিমধ্যে অ্যাকাউন্ট না থাকে, নিচের হাইপারলিংক থেকে নতুন একটি তৈরি করার সুযোগ পাবেন।

লগ ইন করার পর, আপনাকে পোর্টালের অন্য একটি পেজে নেওয়া হবে। যদি এটি আপনার প্রথম ভিজিট হয়, আপনার লাইব্রেরিতে কোনো ডকুমেন্ট থাকবে না। পরবর্তী ধাপ হবে সেগুলো অ্যাপ্লিকেশনে ইমপোর্ট করা।

আপনার লাইব্রেরিতে ডকুমেন্ট ইমপোর্ট করুন

এই প্রক্রিয়া শুরু করতে, আপনি স্ক্রিনের giữaে বক্সে ডকুমেন্ট ড্র্যাগ অ্যান্ড ড্রপ করতে পারেন বা ক্লাউড আইকনে ক্লিক করে ম্যানুয়ালি টানতে পারেন। রেডিস দিয়ে হাই-পারফরম্যান্স টেক্সট র‍্যাঙ্কার বানান: ধাপে ধাপে গাইড

একবার ডকুমেন্ট আপলোড করলে, আপনি এর সংরক্ষণ নিশ্চিত করবেন এর টাইটেল স্ক্রিনের বাম পাশে দেখে (নিচে দেখুন)।

আপনার কোয়ারী করুন

উপরের ছবি থেকে দেখুন, আপনাকে শুধু সেই কোয়ারী টাইপ করতে হবে যা আপনি অ্যাপ্লিকেশন থেকে রিট্রিভ করতে চান। এই উদাহরণে, ইউজারটি সরাসরি ফাইলটির কন্টেন্ট কী সেটা জানতে চেয়ে 'What is the journey about?' লিখেছেন।

আপনি কোয়ারী সাবমিট করলে, আপনাকে ইনস্ট্যান্টলি কিছু উত্তর মেরে যাবে, প্রতিটি তাদের প্রাসঙ্গিকতার ওপর ভিত্তি করে হায়ারার্কিক্যালি র‍্যাঙ্ক করা (নিচের উদাহরণ দেখুন)।

উপসংহার: রেডিস দিয়ে সার্চ সহজ করা

যখন মূল কথায় আসা হয়, সবাই সার্চ কোয়ারী ইনস্ট্যান্ট হোনা চায় কোনো ডিলে whatsoever ছাড়া। এটা ডিজিটাল যুগ,畢竟, এবং যেকোনো ল্যাগ ইউজারকে দূরে ধাক্কা দেবে এবং কিছু আরও অপ্টিমালের দিকে।

রেডিস ব্যবহার করে, Алек্সিস একটি প্রিমিয়াম স্ট্যান্ডার্ডে অপারেট করতে সক্ষম হয়েছে। ভিন্ন লোকেশনগুলোর মধ্যে সবচেয়ে অর্থবহুল কন্টেন্ট সংগ্রহ করা দ্রুত এবং দক্ষ হয়েছে রেডিসার্চের কারণ। এবং রেডিসএআই-এর হাইপার-অ্যাডভান্সড ক্যাপাবিলিটি এই কন্টেন্ট ছানাই ইউজারদের তাদের কোয়ারীর সবচেয়ে প্রাসঙ্গিক এবং সঠিক উত্তর দিতে সক্ষম হয়েছে।

আপনি যদি এই অ্যাপ্লিকেশন কীভাবে তৈরি হয়েছিল সেটা আরও জানতে চান তবে ববির ইউটিউব ভিডিও চেক আউট করুন। রেডিস লঞ্চপ্যাডেও আপনার জন্য ব্যাপক ধরণের অ্যাপ্লিকেশন আছে যেগুলো থেকে আপনি প্রেরণা নিতে পারেন।

হেলসিঙ্কিতে রিয়েল-টাইম বাস ট্র্যাকিং সিস্টেম তৈরি করা থেকে উন্নতশীল দেশের ফসল বীমা সংরক্ষণ করা - সারা বিশ্বের প্রোগ্রামাররা রেডিসের অদ্ভুত ক্ষমতা ব্যবহার করে প্রতিদিনের জীবনে পার্থক্য আনায় নিয়ে এসেছে। এবং আপনিও করতে পারেন!

এই অ্যাপ্লিকেশনটি কে তৈরি করেছেন?

ববি ডনচেভ (Bobby Donchev)

ববি একজন ডাইনামিক প্রোগ্রামিং ইঞ্জিনিয়ার যিনি বারো বছরেরও বেশি অভিজ্ঞতা রাখেন ক্লায়েন্টদের জন্য সিস্টেম ডিজাইন এবং বাস্তবায়নে।

তাঁর GitHub পেজ দেখতে ভুলবেন না যাতে তার সকল প্রজেক্টের সাথে আপডেটেড থাকেন।

  1. জাভাতে HTML ব্যবহার করে JLabel-এ মাল্টিলাইন টেক্সট ধারণ করা

  2. জাভাFX-এ টেক্সট নোড তৈরি করা

  3. জাভাFX-এ Polygon তৈরি করা

  4. ম্যাকওএসে টেক্সট ফাইল তৈরি করার ধাপে ধাপে গাইড