ছোট প্রসঙ্গ উইন্ডোতে ক্লায়েন্ট-সাইড সারমাইজেশন স্কেল করুন

প্রকাশিত: 12 মার্চ, 2025, সর্বশেষ আপডেট: মে 28, 2025

ব্যাখ্যাকারী ওয়েব এক্সটেনশন ক্রোম স্ট্যাটাস অভিপ্রায়
MDN একটি পতাকার পিছনে Chrome 138 বিটা একটি পতাকার পিছনে Chrome 138 বিটা দেখুন জাহাজের অভিপ্রায়

Summarizer API আপনাকে বিভিন্ন দৈর্ঘ্য এবং বিন্যাসে তথ্যের সারাংশ তৈরি করতে সাহায্য করে। দীর্ঘ বা জটিল পাঠ্যকে সংক্ষিপ্তভাবে ব্যাখ্যা করতে Chrome-এ Gemini Nano বা ব্রাউজারে তৈরি অন্যান্য ভাষার মডেলের সাথে এটি ব্যবহার করুন।

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

সারাংশের সারাংশ কি?

সারাংশ কৌশলের সারাংশ ব্যবহার করতে, মূল পয়েন্টগুলিতে ইনপুট বিষয়বস্তু বিভক্ত করুন, তারপর প্রতিটি অংশ স্বাধীনভাবে সংক্ষিপ্ত করুন। আপনি প্রতিটি অংশ থেকে আউটপুট একত্রিত করতে পারেন, তারপর এই সংযুক্ত পাঠ্যটিকে একটি চূড়ান্ত সারাংশে সংক্ষিপ্ত করুন।

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

চিন্তা করে আপনার বিষয়বস্তু বিভক্ত

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

আপনি এটি করতে পারেন অনেক উপায় আছে. নিম্নলিখিত উদাহরণে, আমরা LangChain.js থেকে রিকার্সিভ টেক্সট স্প্লিটার ব্যবহার করেছি, যা কর্মক্ষমতা এবং আউটপুট গুণমানের ভারসাম্য বজায় রাখে। এটি বেশিরভাগ কাজের চাপের জন্য কাজ করা উচিত।

একটি নতুন উদাহরণ তৈরি করার সময়, দুটি মূল পরামিতি রয়েছে:

  • chunkSize হল প্রতিটি বিভাজনে অনুমোদিত অক্ষরের সর্বাধিক সংখ্যা।
  • chunkOverlap হল পরপর দুটি বিভাজনের মধ্যে ওভারল্যাপ করা অক্ষরের পরিমাণ। এটি নিশ্চিত করে যে প্রতিটি খণ্ডের পূর্ববর্তী খণ্ড থেকে কিছু প্রসঙ্গ রয়েছে।

প্রতিটি খণ্ডের সাথে স্ট্রিংগুলির একটি অ্যারে ফেরত দিতে splitText() দিয়ে পাঠ্যটিকে বিভক্ত করুন।

বেশিরভাগ এলএলএম-এর প্রসঙ্গ উইন্ডোটি অক্ষরের সংখ্যার পরিবর্তে টোকেনের সংখ্যা হিসাবে প্রকাশ করে। গড়ে, একটি টোকেনে 4টি অক্ষর থাকে। আমাদের উদাহরণে, chunkSize হল 3000 অক্ষর এবং এটি প্রায় 750 টোকেন।

টোকেনের প্রাপ্যতা নির্ধারণ করুন

একটি ইনপুট ব্যবহার করার জন্য কতগুলি টোকেন উপলব্ধ তা নির্ধারণ করতে, measureInputUsage() পদ্ধতি এবং inputQuota বৈশিষ্ট্য ব্যবহার করুন। এই ক্ষেত্রে, বাস্তবায়ন সীমাহীন, কারণ আপনি জানতে পারবেন না যে সমস্ত টেক্সট প্রক্রিয়া করার জন্য সারাংশ কতবার চালানো হবে।

প্রতিটি বিভাজনের জন্য সারাংশ তৈরি করুন

একবার আপনি কীভাবে বিষয়বস্তু বিভক্ত করা হয় তা সেট আপ করার পরে, আপনি সামারিজার API এর সাথে প্রতিটি অংশের জন্য সারাংশ তৈরি করতে পারেন।

create() ফাংশন দিয়ে সারাংশের একটি উদাহরণ তৈরি করুন। যতটা সম্ভব প্রসঙ্গ রাখতে, আমরা format প্যারামিটারটিকে plain-text , type করে tldr এবং length long -এ সেট করেছি।

তারপর, RecursiveCharacterTextSplitter দ্বারা তৈরি প্রতিটি বিভাজনের সারাংশ তৈরি করুন এবং ফলাফলগুলিকে একটি নতুন স্ট্রিংয়ে সংযুক্ত করুন। আমরা প্রতিটি অংশের সারাংশ পরিষ্কারভাবে সনাক্ত করার জন্য একটি নতুন লাইন দিয়ে প্রতিটি সারাংশ আলাদা করেছি।

এই লুপটি একবার চালানোর সময় এই নতুন লাইনটি গুরুত্বপূর্ণ না হলেও, প্রতিটি সারাংশ চূড়ান্ত সারাংশের জন্য টোকেন মানকে কীভাবে যোগ করে তা নির্ধারণের জন্য এটি কার্যকর। বেশিরভাগ ক্ষেত্রে, এই সমাধানটি মাঝারি এবং দীর্ঘ সামগ্রীর জন্য কাজ করা উচিত।

সারাংশের পুনরাবৃত্তিমূলক সারাংশ

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

যদি আপনার সারাংশের সারাংশ এখনও খুব দীর্ঘ হয়, আপনি প্রক্রিয়াটি পুনরাবৃত্তি করতে পারেন। আপনি, তাত্ত্বিকভাবে, প্রক্রিয়াটি অনির্দিষ্টকালের জন্য পুনরাবৃত্তি করতে পারেন, যতক্ষণ না আপনি একটি উপযুক্ত দৈর্ঘ্য না পান।

আমরা এখনও RecursiveCharacterTextSplitter দ্বারা উত্পন্ন প্রাথমিক বিভাজন সংগ্রহ করি। তারপর, recursiveSummarizer() ফাংশনে, আমরা সংমিশ্রিত বিভাজনের অক্ষরের দৈর্ঘ্যের উপর ভিত্তি করে সংক্ষিপ্তকরণ প্রক্রিয়াটি লুপ করি। যদি সারাংশের অক্ষর দৈর্ঘ্য 3000 ছাড়িয়ে যায়, তাহলে আমরা fullSummaries সংযুক্ত করি। সীমা না পৌঁছালে, সারাংশটি partialSummaries হিসাবে সংরক্ষণ করা হয়।

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

আমরা ইন্টারনেট রিলে চ্যাট (IRC) RFC এর সাথে এই সমাধানটি পরীক্ষা করেছি, যেটিতে 17,560টি শব্দ অন্তর্ভুক্ত 110,030টি অক্ষর রয়েছে৷ Summarizer API নিম্নলিখিত সারাংশ প্রদান করেছে:

ইন্টারনেট রিলে চ্যাট (IRC) পাঠ্য বার্তা ব্যবহার করে রিয়েল-টাইমে অনলাইনে যোগাযোগ করার একটি উপায়। আপনি চ্যানেলগুলিতে চ্যাট করতে পারেন বা ব্যক্তিগত বার্তা পাঠাতে পারেন এবং আপনি চ্যাট নিয়ন্ত্রণ করতে এবং সার্ভারের সাথে ইন্টারঅ্যাক্ট করতে কমান্ড ব্যবহার করতে পারেন। এটি ইন্টারনেটে একটি চ্যাট রুমের মতো যেখানে আপনি তাত্ক্ষণিকভাবে অন্যদের বার্তা টাইপ করতে এবং দেখতে পারেন৷

এটা বেশ কার্যকর! এবং, এটি মাত্র 309টি অক্ষর।

সীমাবদ্ধতা

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

  • কম সঠিক সারাংশ : পুনরাবৃত্তির সাথে, সারাংশ প্রক্রিয়ার পুনরাবৃত্তি সম্ভবত অসীম, এবং প্রতিটি সারাংশ মূল পাঠ্য থেকে অনেক দূরে। এর মানে হল মডেলটি একটি চূড়ান্ত সারাংশ তৈরি করতে পারে যা দরকারী হতে খুব অগভীর।
  • ধীর কর্মক্ষমতা : প্রতিটি সারাংশ তৈরি করতে সময় লাগে। আবার, বৃহত্তর পাঠ্যগুলিতে অসীম সম্ভাব্য সংখ্যক সারাংশ সহ, এই পদ্ধতিটি শেষ হতে কয়েক মিনিট সময় নিতে পারে।

আমাদের কাছে একটি সংক্ষিপ্ত ডেমো উপলব্ধ রয়েছে এবং আপনি সম্পূর্ণ উৎস কোডটি দেখতে পারেন।

আপনার মতামত শেয়ার করুন

সামারাইজার API এর সাথে বিভিন্ন দৈর্ঘ্যের ইনপুট টেক্সট, বিভিন্ন স্প্লিট সাইজ এবং বিভিন্ন ওভারল্যাপ দৈর্ঘ্য সহ সারাংশ টেকনিক ব্যবহার করার চেষ্টা করুন।