ট্রান্সফরমার এবং অ্যামাজন ওপেনসার্চ পরিষেবার সাথে ট্যাবুলার কলামগুলির জন্য একটি শব্দার্থিক অনুসন্ধান ইঞ্জিন তৈরি করুন

ট্রান্সফরমার এবং অ্যামাজন ওপেনসার্চ পরিষেবার সাথে ট্যাবুলার কলামগুলির জন্য একটি শব্দার্থিক অনুসন্ধান ইঞ্জিন তৈরি করুন

উত্স নোড: 1986937

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

প্রচলিত সমাধানগুলির মধ্যে আভিধানিক কীওয়ার্ড অনুসন্ধান বা নিয়মিত এক্সপ্রেশন ম্যাচিং জড়িত, যা ডেটা মানের সমস্যাগুলির জন্য সংবেদনশীল যেমন অনুপস্থিত কলামের নাম বা বিভিন্ন ডেটাসেট জুড়ে বিভিন্ন কলাম নামকরণের নিয়মাবলী (উদাহরণস্বরূপ, zip_code, zcode, postalcode).

এই পোস্টে, আমরা কলামের নাম, কলামের বিষয়বস্তু বা উভয়ের উপর ভিত্তি করে অনুরূপ কলামগুলি অনুসন্ধান করার জন্য একটি সমাধান প্রদর্শন করি৷ সমাধান ব্যবহার করে আনুমানিক নিকটতম প্রতিবেশী অ্যালগরিদম সহজলভ্য আমাজন ওপেন সার্চ সার্ভিস শব্দার্থগতভাবে অনুরূপ কলাম অনুসন্ধান করতে. অনুসন্ধানের সুবিধার্থে, আমরা প্রাক-প্রশিক্ষিত ট্রান্সফরমার মডেলগুলি ব্যবহার করে ডেটা লেকের পৃথক কলামগুলির জন্য বৈশিষ্ট্য উপস্থাপনা (এম্বেডিং) তৈরি করি বাক্য-ট্রান্সফরমার লাইব্রেরি in আমাজন সেজমেকার. অবশেষে, আমাদের সমাধানের সাথে ইন্টারঅ্যাক্ট করতে এবং ফলাফলগুলি কল্পনা করতে, আমরা একটি ইন্টারেক্টিভ তৈরি করি স্ট্রিমলিট ওয়েব অ্যাপ্লিকেশন চলছে AWS Fargate.

আমরা একটি অন্তর্ভুক্ত কোড টিউটোরিয়াল আপনার নমুনা ডেটা বা আপনার নিজস্ব ডেটাতে সমাধান চালানোর জন্য সংস্থানগুলি স্থাপন করার জন্য।

সমাধান ওভারভিউ

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

সমাধান আর্কিটেকচার

চিত্র 1. সমাধান আর্কিটেকচার

স্বয়ংক্রিয় কর্মপ্রবাহ নিম্নলিখিত ধাপে এগিয়ে যায়:

  1. ব্যবহারকারী একটি টেবুলার ডেটাসেট আপলোড করে আমাজন সিম্পল স্টোরেজ সার্ভিস (Amazon S3) বালতি, যা একটি আহ্বান করে এডাব্লুএস ল্যাম্বদা ফাংশন যা স্টেপ ফাংশন ওয়ার্কফ্লো শুরু করে।
  2. কর্মপ্রবাহ একটি দিয়ে শুরু হয় এডাব্লুএস আঠালো কাজ যা CSV ফাইলকে রূপান্তর করে Apache Parquet উপাত্ত বিন্যাস.
  3. একটি সেজমেকার প্রসেসিং কাজ প্রাক-প্রশিক্ষিত মডেল বা কাস্টম কলাম এমবেডিং মডেল ব্যবহার করে প্রতিটি কলামের জন্য এমবেডিং তৈরি করে। SageMaker প্রসেসিং কাজ Amazon S3-এ প্রতিটি টেবিলের জন্য কলাম এম্বেডিং সংরক্ষণ করে।
  4. একটি Lambda ফাংশন পূর্ববর্তী ধাপে উত্পাদিত কলাম এমবেডিংগুলিকে সূচী করার জন্য OpenSearch পরিষেবা ডোমেন এবং ক্লাস্টার তৈরি করে।
  5. অবশেষে, একটি ইন্টারেক্টিভ স্ট্রিমলিট ওয়েব অ্যাপ্লিকেশন ফার্গেটের সাথে স্থাপন করা হয়েছে। ওয়েব অ্যাপ্লিকেশানটি ব্যবহারকারীকে অনুরূপ কলামগুলির জন্য OpenSearch Service ডোমেন অনুসন্ধান করতে ইনপুট প্রশ্নগুলির জন্য একটি ইন্টারফেস প্রদান করে৷

আপনি থেকে কোড টিউটোরিয়াল ডাউনলোড করতে পারেন GitHub নমুনা ডেটা বা আপনার নিজের ডেটাতে এই সমাধানটি চেষ্টা করতে। এই টিউটোরিয়ালের জন্য প্রয়োজনীয় সংস্থানগুলি কীভাবে স্থাপন করতে হয় তার নির্দেশাবলী এখানে উপলব্ধ গিটহাব.

পূর্বশর্ত

এই সমাধান বাস্তবায়ন করতে, আপনার নিম্নলিখিত প্রয়োজন:

একটি অনুসন্ধান সূচক তৈরি করুন

প্রথম পর্যায়ে কলাম সার্চ ইঞ্জিন সূচক তৈরি করে। নিম্নলিখিত চিত্রটি এই ধাপে চলা স্টেপ ফাংশন ওয়ার্কফ্লোকে চিত্রিত করে।

ধাপ ফাংশন কর্মপ্রবাহ

চিত্র 2 – স্টেপ ফাংশন ওয়ার্কফ্লো – একাধিক এমবেডিং মডেল

ডেটাসেট

এই পোস্টে, আমরা 400 টিরও বেশি ট্যাবুলার ডেটাসেট থেকে 25 টিরও বেশি কলাম অন্তর্ভুক্ত করার জন্য একটি অনুসন্ধান সূচক তৈরি করি। ডেটাসেটগুলি নিম্নলিখিত পাবলিক উত্স থেকে উদ্ভূত:

সূচীতে অন্তর্ভুক্ত টেবিলের সম্পূর্ণ তালিকার জন্য, কোড টিউটোরিয়াল দেখুন GitHub.

নমুনা ডেটা বাড়াতে বা আপনার নিজস্ব অনুসন্ধান সূচক তৈরি করতে আপনি আপনার নিজস্ব ট্যাবুলার ডেটাসেট আনতে পারেন। আমরা দুটি Lambda ফাংশন অন্তর্ভুক্ত করি যা যথাক্রমে পৃথক CSV ফাইল বা CSV ফাইলের একটি ব্যাচের জন্য অনুসন্ধান সূচক তৈরি করতে ধাপ ফাংশন ওয়ার্কফ্লো শুরু করে।

CSV কে Parquet এ রূপান্তর করুন

কাঁচা CSV ফাইলগুলি AWS Glue দিয়ে Parquet ডেটা ফরম্যাটে রূপান্তরিত হয়। Parquet হল একটি কলাম-ভিত্তিক বিন্যাস ফাইল বিন্যাস যা বড় ডেটা বিশ্লেষণে পছন্দ করা হয় যা দক্ষ কম্প্রেশন এবং এনকোডিং প্রদান করে। আমাদের পরীক্ষায়, Parquet ডেটা বিন্যাস কাঁচা CSV ফাইলগুলির তুলনায় সঞ্চয়স্থানের আকারে উল্লেখযোগ্য হ্রাস প্রস্তাব করেছে৷ আমরা অন্যান্য ডেটা ফর্ম্যাটগুলি (উদাহরণস্বরূপ JSON এবং NDJSON) রূপান্তর করতে একটি সাধারণ ডেটা বিন্যাস হিসাবে Parquet ব্যবহার করেছি কারণ এটি উন্নত নেস্টেড ডেটা স্ট্রাকচার সমর্থন করে৷

ট্যাবুলার কলাম এম্বেডিং তৈরি করুন

এই পোস্টে নমুনা ট্যাবুলার ডেটাসেটে পৃথক টেবিল কলামগুলির জন্য এমবেডিংগুলি বের করতে, আমরা নিম্নলিখিত প্রাক-প্রশিক্ষিত মডেলগুলি ব্যবহার করি sentence-transformers লাইব্রেরি অতিরিক্ত মডেলের জন্য, দেখুন পূর্বপ্রশিক্ষিত মডেল.

সেজমেকার প্রসেসিং কাজ চলে create_embeddings.py(কোড) একটি একক মডেলের জন্য। একাধিক মডেল থেকে এমবেডিং বের করার জন্য, ওয়ার্কফ্লো সমান্তরাল সেজমেকার প্রসেসিং কাজ চালায় যেমন স্টেপ ফাংশন ওয়ার্কফ্লোতে দেখানো হয়েছে। এমবেডিংয়ের দুটি সেট তৈরি করতে আমরা মডেলটি ব্যবহার করি:

  • কলাম_নাম_এম্বেডিং - কলামের নামের এম্বেডিং (হেডার)
  • column_content_embeddings - কলামের সমস্ত সারিগুলির গড় এম্বেডিং

কলাম এমবেডিং প্রক্রিয়া সম্পর্কে আরও তথ্যের জন্য, কোড টিউটোরিয়াল দেখুন GitHub.

সেজমেকার প্রসেসিং ধাপের একটি বিকল্প হল বড় ডেটাসেটে কলাম এমবেডিং পেতে সেজমেকার ব্যাচ ট্রান্সফর্ম তৈরি করা। এর জন্য মডেলটিকে সেজমেকার এন্ডপয়েন্টে স্থাপন করা প্রয়োজন। আরও তথ্যের জন্য, দেখুন ব্যাচ ট্রান্সফর্ম ব্যবহার করুন.

OpenSearch পরিষেবার সাথে সূচী এম্বেডিং

এই পর্যায়ের চূড়ান্ত ধাপে, একটি Lambda ফাংশন একটি OpenSearch পরিষেবাতে আনুমানিক k-Nearest-Neighbour (kNN) অনুসন্ধান সূচক. প্রতিটি মডেল তার নিজস্ব অনুসন্ধান সূচক বরাদ্দ করা হয়. আনুমানিক kNN অনুসন্ধান সূচক প্যারামিটার সম্পর্কে আরও তথ্যের জন্য, দেখুন k-NN.

একটি ওয়েব অ্যাপের মাধ্যমে অনলাইন অনুমান এবং শব্দার্থিক অনুসন্ধান

কর্মপ্রবাহের দ্বিতীয় পর্যায়টি চালায় a স্ট্রিমলিট ওয়েব অ্যাপ্লিকেশন যেখানে আপনি ইনপুট প্রদান করতে পারেন এবং ওপেন সার্চ সার্ভিসে সূচীকৃত শব্দার্থগতভাবে অনুরূপ কলামগুলি অনুসন্ধান করতে পারেন। অ্যাপ্লিকেশন স্তর একটি ব্যবহার করে অ্যাপ্লিকেশন লোড ব্যালেন্সার, Fargate, এবং Lambda. সমাধানের অংশ হিসাবে অ্যাপ্লিকেশন পরিকাঠামো স্বয়ংক্রিয়ভাবে স্থাপন করা হয়।

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

নিম্নলিখিত চিত্রটি ওয়েব অ্যাপ্লিকেশনের একটি উদাহরণ দেখায়। এই উদাহরণে, আমরা আমাদের ডেটা লেকের কলামগুলির জন্য অনুসন্ধান করেছি যেগুলির অনুরূপ রয়েছে৷ Column Names (পেলোড প্রকার) থেকে district (পে লোড) ব্যবহৃত অ্যাপ্লিকেশন all-MiniLM-L6-v2 যেমন এমবেডিং মডেল এবং ফিরে 10 (k) আমাদের ওপেন সার্চ সার্ভিস সূচক থেকে নিকটতম প্রতিবেশী।

আবেদন ফিরে transit_district, city, borough, এবং location ওপেনসার্চ সার্ভিসে ইনডেক্স করা ডেটার উপর ভিত্তি করে চারটি সবচেয়ে অনুরূপ কলাম হিসেবে। এই উদাহরণটি ডেটাসেট জুড়ে শব্দার্থগতভাবে অনুরূপ কলাম সনাক্ত করতে অনুসন্ধান পদ্ধতির ক্ষমতা প্রদর্শন করে।

ওয়েব অ্যাপ্লিকেশন ইউজার ইন্টারফেস

চিত্র 3: ওয়েব অ্যাপ্লিকেশন ব্যবহারকারী ইন্টারফেস

পরিষ্কার কর

এই টিউটোরিয়ালে AWS CDK দ্বারা তৈরি সংস্থানগুলি মুছতে, নিম্নলিখিত কমান্ডটি চালান:

cdk destroy --all

উপসংহার

এই পোস্টে, আমরা ট্যাবুলার কলামগুলির জন্য একটি শব্দার্থিক অনুসন্ধান ইঞ্জিন তৈরির জন্য একটি এন্ড-টু-এন্ড ওয়ার্কফ্লো উপস্থাপন করেছি।

আমাদের কোড টিউটোরিয়াল উপলব্ধ সহ আপনার নিজের ডেটাতে আজই শুরু করুন GitHub. আপনি যদি আপনার পণ্য এবং প্রক্রিয়াগুলিতে আপনার ML-এর ব্যবহার ত্বরান্বিত করতে সহায়তা চান তবে অনুগ্রহ করে যোগাযোগ করুন আমাজন মেশিন লার্নিং সলিউশন ল্যাব.


লেখক সম্পর্কে

কাচি ওডোমেন AWS AI এর একজন ফলিত বিজ্ঞানী। তিনি AWS গ্রাহকদের ব্যবসায়িক সমস্যা সমাধানের জন্য AI/ML সমাধান তৈরি করেন।

টেলর ম্যাকনালি অ্যামাজন মেশিন লার্নিং সলিউশন ল্যাবের একজন ডিপ লার্নিং আর্কিটেক্ট। তিনি বিভিন্ন শিল্পের গ্রাহকদের AWS-এ AI/ML ব্যবহার করে সমাধান তৈরি করতে সাহায্য করেন। তিনি একটি ভাল কাপ কফি, বাইরে, এবং তার পরিবার এবং উদ্যমী কুকুরের সাথে সময় উপভোগ করেন।

অস্টিন ওয়েলচ অ্যামাজন এমএল সলিউশন ল্যাবে একজন ডেটা সায়েন্টিস্ট। AWS পাবলিক সেক্টরের গ্রাহকদের তাদের AI এবং ক্লাউড গ্রহণকে ত্বরান্বিত করতে সাহায্য করার জন্য তিনি কাস্টম ডিপ লার্নিং মডেল তৈরি করেন। অবসর সময়ে, তিনি পড়া, ভ্রমণ এবং জিউ-জিতসু উপভোগ করেন।

সময় স্ট্যাম্প:

থেকে আরো এডাব্লুএস বিগ ডেটা