paint-brush
ফাংশন কলিং এলএলএম: আরও ভাল RAG পারফরম্যান্সের জন্য স্লিম এবং ড্রাগনকে একত্রিত করাদ্বারা@shanglun
2,172 পড়া
2,172 পড়া

ফাংশন কলিং এলএলএম: আরও ভাল RAG পারফরম্যান্সের জন্য স্লিম এবং ড্রাগনকে একত্রিত করা

দ্বারা Shanglun Wang12m2024/03/29
Read on Terminal Reader

অতিদীর্ঘ; পড়তে

এলএলএমগুলিতে প্রচুর উদ্যোক্তা শক্তি ঢেলে দেওয়া সত্ত্বেও, বেশিরভাগ হাই-প্রোফাইল অ্যাপ্লিকেশনগুলি এখনও চ্যাটের মতো ইন্টারফেসের উপর তাদের ফোকাস দ্বারা সীমাবদ্ধ।
featured image - ফাংশন কলিং এলএলএম: আরও ভাল RAG পারফরম্যান্সের জন্য স্লিম এবং ড্রাগনকে একত্রিত করা
Shanglun Wang HackerNoon profile picture
0-item
1-item

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


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


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

ফাংশন কলিং এলএলএম

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


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

ব্যবহারের ক্ষেত্রে


বাহ্যিক পরিষেবাগুলির সাথে সংযুক্ত হচ্ছে৷

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


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


বিচক্ষণ পাঠকরা চিনতে পারেন যে আমরা পূর্ববর্তী নিবন্ধগুলিতে অনুরূপ কিছু করেছি, প্রশিক্ষণ ডেটা , SQL , বা JSON তৈরি করতে LLM ব্যবহার করে৷ এই নিবন্ধগুলিতে , আমরা প্রম্পট ইঞ্জিনিয়ারিং এবং আউটপুট-চেকিং ব্যবহার করে এটি সম্পন্ন করেছি, কিন্তু এখন যে ফাংশন-কলিং একটি ব্যাপকভাবে-সমর্থিত বৈশিষ্ট্য, আমরা এই মডেল-স্তরের বৈশিষ্ট্যগুলির উপর নির্ভর করে এটি আরও সহজে করতে পারি।


চেইনিং এলএলএম


ফাংশন কলিং মাল্টি-এলএলএম অ্যাপ্লিকেশনের জন্য নতুন সম্ভাবনা তৈরি করেছে এবং শীঘ্রই ডেভেলপাররা পরিশীলিত সিস্টেম তৈরি করতে এলএলএম চেইনিং নিয়ে পরীক্ষা-নিরীক্ষা করছে। এই সিস্টেমগুলির মধ্যে কিছু এজেন্ট হিসাবে পরিচিত হয়ে ওঠে, যা স্বাধীনভাবে ওয়েবে অনুসন্ধান করতে পারে, নতুন ডেটা সংগ্রহ করতে পারে এবং নতুন তথ্য সহ অন্য LLM কল করতে পারে। এই পাইপলাইনগুলি আশ্চর্যজনক পরিমাণে স্বায়ত্তশাসনে সক্ষম এবং খুব কম ইনপুট সহ অত্যাধুনিক সমস্যাগুলি সমাধান করতে সক্ষম, যদিও এখনও সীমাবদ্ধতা রয়েছে, যেমন API খরচ এবং আচরণগত সুরক্ষা, যা এজেন্টদের ব্যাপকভাবে গ্রহণ করতে বাধা দেয়।


ইনপুট এবং মধ্যবর্তী প্রক্রিয়াকরণ হিসাবে এলএলএম ব্যবহার করা


ফাংশন-কলিং এলএলএম-এর জন্য আরেকটি ব্যবহারের ক্ষেত্রে ইনপুট এবং মধ্যবর্তী ডেটা প্রসেসিং। LLMs ব্যবহার করা যেতে পারে কাঠামোবিহীন ইনপুটগুলিকে স্ট্রাকচার্ড ডেটাতে পার্স করতে যা ডাউনস্ট্রিম প্রসেসিংয়ের জন্য ব্যবহার করা যেতে পারে। যদিও এই কাজগুলির মধ্যে অনেকগুলি "ঐতিহ্যগত" NLP প্রযুক্তিতে নিযুক্ত হওয়ার প্রবণতা রয়েছে, ট্রান্সফরমার-ভিত্তিক মডেলগুলির নমনীয় প্রকৃতির মানে হল যে একটি বিশেষভাবে প্রশিক্ষিত মডেল অন্যান্য এনএলপি প্রযুক্তির তুলনায় এই কাজগুলিতে অনেক ভাল কাজ করতে পারে। ফলস্বরূপ, অনেক ডেভেলপার তাদের ডেটা পাইপলাইনগুলিতে এই বিশেষ মডেলগুলিকে লাভ করার চেষ্টা করছেন।

এখন যেহেতু আমরা ফাংশন-কলিংয়ের পিছনের তত্ত্বের সাথে পরিচিত, আসুন আমরা আজ যে অ্যাপ্লিকেশনটি তৈরি করব তা দেখি।

ডেমো অ্যাপ্লিকেশন

CB অন্তর্দৃষ্টি সত্তা সম্পর্ক বিশ্লেষক

পূর্ববর্তী একটি নিবন্ধে , আমি CB Insights জনপ্রিয় নিউজলেটার সম্পর্কে প্রাকৃতিক ভাষার প্রশ্নের উত্তর দেওয়ার জন্য একটি সাধারণ RAG অ্যাপ্লিকেশন তৈরি করেছি। আজকের নিবন্ধে, আমরা একটি অনুরূপ প্রশ্ন-উত্তর অ্যাপ্লিকেশন তৈরি করব, কিন্তু অনুসন্ধান এবং GPT3.5 এম্বেড করার উপর নির্ভর করার পরিবর্তে, আমরা প্রাথমিক সূচীকরণ পদ্ধতি হিসাবে সত্তা স্বীকৃতি ব্যবহার করব। উপরন্তু, আমরা সারাংশ ইঞ্জিন হিসাবে DRAGON ব্যবহার করব যাতে আমরা আমাদের ল্যাপটপে সম্পূর্ণ অ্যাপ্লিকেশন চালাতে পারি, কোনো ক্লাউড পরিষেবার প্রয়োজন নেই।


কেন সত্তা স্বীকৃতি ব্যবহার করবেন?

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


  1. ডিবাগযোগ্যতা: যেহেতু সত্তা স্বীকৃতি একটি সহজে যাচাইযোগ্য কাজ, পুরো পাইপলাইনটি অনেক বেশি ডিবাগযোগ্য। মডেলটি সঠিকভাবে সমস্ত সত্তাকে চিহ্নিত করে কিনা তা পরীক্ষা করা সহজ এবং এই সত্তাগুলির উপর ভিত্তি করে একটি মিলিত অ্যালগরিদম তৈরি করা এবং উন্নত করা সহজ৷ তুলনামূলকভাবে, এটা যাচাই করা অনেক বেশি কঠিন যে এমবেডিং অ্যালগরিদম প্যাসেজের মধ্যে মিল এবং পার্থক্য সঠিকভাবে চিহ্নিত করছে।


  2. নমনীয়তা: স্বীকৃতি এবং ফিল্টারিং আলাদা করে, আমরা একটি এম্বেডিং-ভিত্তিক অনুসন্ধান অ্যালগরিদমের চেয়ে পাইপলাইনটিকে অনেক বেশি নমনীয় করে তুলি। আমরা অতিরিক্ত মেটাডেটা যোগ করতে পারি, সত্তার প্রকারের উপর ভিত্তি করে অনুসন্ধান অ্যালগরিদম পরিবর্তন করতে পারি এবং এমনকি NER-ভিত্তিক অনুসন্ধান ফলাফলের উপরে এম্বেডিং অ্যালগরিদম ব্যবহার করতে পারি। এটি প্রযুক্তির সংমিশ্রণের উপর ভিত্তি করে আরও শক্তিশালী বৈশিষ্ট্যগুলি বিকাশের অনুমতি দেয়।


    1. উদাহরণস্বরূপ, একটি NER-ভিত্তিক পাইপলাইন নথিগুলির একটি সেটকে সংকুচিত করতে সত্তা-ভিত্তিক অনুসন্ধান ব্যবহার করতে পারে, তারপর অনুসন্ধানের স্থানের মধ্যে আরও সংকীর্ণ করতে একটি এমবেডিং অ্যালগরিদম ব্যবহার করতে পারে। এটি অনুসন্ধানটিকে আরও দ্রুত এবং আরও দক্ষ করে তোলে।


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


    1. উদাহরণস্বরূপ, আমরা যদি Microsoft এর AI কৌশল বোঝার চেষ্টা করছি, তাহলে আমরা হয়তো AI সফ্টওয়্যার স্পেসের মধ্যে Microsoft-এর কার্যকলাপ সম্পর্কে তথ্য পুনরুদ্ধার করতে চাই না, কিন্তু চিপমেকিং, ডেটা সেন্টার এবং রোবোটিক্সে বিনিয়োগের তথ্যও পেতে চাই। একটি সাধারণ উদ্দেশ্য এমবেডিং অ্যালগরিদম এই সংযোগগুলি সনাক্ত করতে সক্ষম হবে না, যেখানে একটি NER-ভিত্তিক অ্যালগরিদম এই সংযোগগুলি আঁকতে সক্ষম হবে৷


এখন যেহেতু আমরা একটি RAG পাইপলাইনের মধ্যে NER ব্যবহার করার সুবিধাগুলি বুঝতে পেরেছি, আসুন আমরা আমাদের অ্যাপ্লিকেশনে যে নির্দিষ্ট প্রযুক্তিগুলি ব্যবহার করছি সেগুলিকে আরও গভীরভাবে দেখে নেওয়া যাক৷

ব্যবহৃত প্রযুক্তি

এলএলএম সত্তা স্বীকৃতি

সত্তা স্বীকৃতি হল একটি "প্রথাগত" NLP প্রযুক্তি যা অসংগঠিত ভাষা ডেটা থেকে কাঠামোগত ডেটা বের করার জন্য। নিষ্কাশিত ডেটা তারপর ডাউন-লাইন প্রক্রিয়াকরণে বা বিশ্লেষণ করা উত্তরণের জন্য মেটাডেটা হিসাবে ব্যবহার করা যেতে পারে।


ঐতিহাসিকভাবে, এটি ছোট, উদ্দেশ্য-নির্মিত মেশিন লার্নিং অ্যালগরিদম ব্যবহার করে সম্পন্ন হয়েছিল যা প্রথমে বক্তৃতার অংশগুলিকে ট্যাগ করে, তারপরে একটি দ্বিতীয় পাস যা নির্ধারণ করে যে সঠিক বিশেষ্যগুলি চিহ্নিত করা হয়েছে কিনা তা নির্ধারণ করে।


ফাংশন-কলিং এলএলএম-এর সাহায্যে, আমরা একই কাজ সম্পাদন করতে পারি, বেশ কিছু অতিরিক্ত সুবিধা সহ।


  1. যেহেতু ট্রান্সফরমার আর্কিটেকচার ছোট এনএলপি মডেলের তুলনায় ভাষার কাঠামো ভালোভাবে বুঝতে সক্ষম, কর্মক্ষমতা আরও শক্তিশালী হতে পারে, উদাহরণস্বরূপ যেখানে প্যাসেজটি ভুলভাবে ফরম্যাট করা হয়েছে।


  2. যেহেতু LLMগুলি সাম্প্রতিক প্রশিক্ষণের ডেটার সাথে আপডেট করা হচ্ছে, সত্তা স্বীকৃতি সিস্টেম অন্যান্য ওপেন-সোর্স সত্তা স্বীকৃতি মডেলগুলির তুলনায় আরও আপ-টু-ডেট থাকার সম্ভাবনা রয়েছে৷


  3. প্রম্পট ইঞ্জিনিয়ারিং কৌশলগুলি অতিরিক্ত ডেটা এম্বেড করতে এবং অতিরিক্ত নির্দেশ দিতে ব্যবহার করা যেতে পারে, এমনকি অফ-দ্য-শেল্ফ মডেলগুলিতেও আরও নমনীয় আচরণের অনুমতি দেয়।


ড্রাগন আমরা পূর্ববর্তী একটি নিবন্ধে ড্রাগনকে কভার করেছি যেখানে আমরা প্রাকৃতিক-ভাষা ডেটা সংক্ষিপ্ত করার ক্ষেত্রে এর চিত্তাকর্ষক কার্যকারিতা হাইলাইট করেছি। আমরা বিশ্লেষণের চূড়ান্ত ধাপটি সম্পাদন করতে ড্রাগন ব্যবহার করব, যেখানে আমরা নির্বাচিত সত্তাগুলির সাথে প্রাসঙ্গিক সমস্ত নিবন্ধের সংক্ষিপ্তসার করব৷


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


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

এখন আমরা প্রযুক্তি বুঝি, প্রয়োগ করি!

বাস্তবায়ন

ডেটা ডাউনলোড এবং প্রসেসিং

আসুন CB অন্তর্দৃষ্টি নিবন্ধগুলি ডাউনলোড করে শুরু করা যাক। আসুন নির্ভরতাগুলি আমদানি করি:

 import requests from bs4 import BeautifulSoup import os import pandas as pd import json import re


এবং এখন নিউজলেটার সংরক্ষণাগার ডাউনলোড করার কোড:


 res = requests.get('https://www.cbinsights.com/newsletter/') soup = BeautifulSoup(res.text) article_links = [[i.text, i['href']] for i in soup.find_all('a') if 'campaign-archive' in i['href'] ] article_soups = [BeautifulSoup(requests.get(link).text) for title, link in article_links]


এখন যেহেতু আমরা নিউজলেটার সংরক্ষণাগারটি ডাউনলোড করেছি, আসুন এটিকে JSON ফর্ম্যাটে প্রক্রিয়া করি


 result_json = {} for soup_meta, soup_art in zip(article_links, article_soups): article_tables = [] cur_article = [] for table in soup_art.find_all('table'): if table.attrs.get('mc:variant') == 'Section_Divider': article_tables.append(get_deduped_article_tables(cur_article)) cur_article = [] else: cur_article.append(table.text) article_tables.append(get_deduped_article_tables(cur_article)) result_json[soup_meta[0]] = article_tables articles_with_meta = [] for name, tables in result_json.items(): print(name, pd.to_datetime(tables[0][1].strip())) articles_with_meta.append({ 'name': name, 'date': pd.to_datetime(tables[0][1].strip()).strftime('%Y-%m-%d'), 'tables': tables }) df = pd.DataFrame(articles_with_meta)


এখন আমরা আগের নিবন্ধে একই জায়গায় রয়েছি। এম্বেডিং তৈরি করে RAG নির্মাণে যাওয়ার পরিবর্তে, আমরা পরিবর্তে একটি সত্তা-স্বীকৃতি পদক্ষেপ চালাব।


প্রথমে, চলুন SLIM চালানোর জন্য নির্ভরতা আমদানি করি, LLMWare থেকে মডেলের একটি নতুন সেট যা আমাদের মেশিনে স্থানীয়ভাবে সত্তার স্বীকৃতি সম্পাদন করতে দেয়:


 from llmware.agents import LLMfx from llmware.parsers import WikiParser from collections import defaultdict # define a function for identifying all the named entities def run_ner(text): agent = LLMfx() agent.load_work(text) agent.load_tool("ner") named_entities = agent.ner() ner_dict= named_entities["llm_response"] return ner_dict


এখন আমরা সমস্ত নিবন্ধে নামযুক্ত সত্তা স্বীকৃতি চালাতে পারি:


 date_entities = defaultdict(dict) for _, row in df.iterrows(): for idx, t in enumerate(row['tables'][1:]): if 'Start Your Free Trial' in t: t = t[:t.index('Start Your Free Trial')] date_entities[row['date']][idx] = run_ner('\n'.join(t))


এনইআর পাইপলাইনটি সম্পূর্ণ হতে কয়েক মিনিট সময় লাগতে পারে, কিন্তু অত্যাধুনিক ক্ষুদ্র ক্ষুদ্র এলএলএম ব্যবহার করে সত্ত্বাকে চিনতে আপনার এটিই প্রয়োজন।


আপনি কিছু পরীক্ষার আইটেম মুদ্রণ করে date_entities অভিধান পরীক্ষা করতে পারেন। উদাহরণস্বরূপ, কোড:


 date_entities[list(date_entities.keys())[0]]


নীচের আউটপুট উত্পাদন করা উচিত:


 {0: {'people': ['Yahoo!'], 'place': [], 'company': ['Databricks', 'MosaicML'], 'misc': []}, 1: {'people': [], 'place': ['New York'], 'company': ['CB Insights'], 'misc': []}}


যা SLIMs মডেল দ্বারা সনাক্ত করা বিভিন্ন সত্তা দেখায়।

ড্রাগনের সাথে প্রশ্ন-উত্তর

এখন যেহেতু সত্তাগুলি সনাক্ত করা হয়েছে, আসুন একটি প্রশ্ন-উত্তর কর্মপ্রবাহ তৈরি করি যা এই কৌশলটির শক্তি প্রদর্শন করে। আমাদের উদাহরণের জন্য, আমরা পরীক্ষার প্রশ্নটি ব্যবহার করব: Microsoft এর AI কৌশলে OpenAI কী ভূমিকা পালন করে?


আসুন ড্রাগন চালানোর জন্য সঠিক প্যাকেজগুলি আমদানি করে শুরু করি:

 from llmware.prompts import Prompt query = "What role does OpenAI play in Microsoft's AI strategy?" model_name = "llmware/dragon-llama-7b-gguf" prompter = Prompt().load_model(model_name)


এখন, আমরা ফাংশন তৈরি করতে পারি যা সত্তা স্বীকৃতি ব্যবহার করে প্রশ্নের উত্তর দেয়। আমাদের এনইআর ডেটা ব্যবহার করার জন্য, আমরা নিম্নলিখিত কর্মপ্রবাহ বাস্তবায়ন করতে চাই:


  1. ব্যবহারকারীর প্রশ্নে সত্তা চিহ্নিত করুন। আমরা একই SLIM ফাংশন ব্যবহার করতে পারি যা আমরা আগের ধাপে ব্যবহার করেছি।
  2. লুকআপের ফলাফলের উপর ভিত্তি করে একটি লুকআপ সম্পাদন করুন, অর্থাৎ, আমরা কর্পাসের নিবন্ধগুলি অনুসন্ধান করি যা একই সত্তা সম্পর্কে কথা বলে।
  3. একবার আমরা এই নিবন্ধগুলি খুঁজে পেলে, প্রাসঙ্গিক তথ্য বের করার জন্য আমরা সেগুলিকে প্রশ্ন-উত্তর মডেলে সরবরাহ করতে পারি।


কোড আকারে ওয়ার্কফ্লো কেমন দেখায় তা এখানে:


 def answer_question_with_ner(query): ner_results = run_ner(query) # run NER on the user query search_entities = [] for ent_type, ent_list in ner_results.items(): search_entities.extend(ent_list) # create a list of entities to search for search_entities = list(set(search_entities)) # now perform a lookup for articles that mention the identified entities, using set arithmetic. articles = set(entity_to_place_map[search_entities[0]]) for se in search_entities: articles &= set(entity_to_place_map[se]) # now process the corpus into a prompt and feed it to the question-answering LLM. article_content = [] for article in articles: article_content.extend(df[df['date'] == article[0]].iloc[0]['tables'][article[1]+1]) response = prompter.prompt_main(query, context='\n'.join(article_content), prompt_name="default_with_context", temperature=0.3) return response # return the response.


প্রথম কোড ব্লক থেকে ক্যোয়ারী সহ ফাংশনটি চালান এবং আপনার নিম্নলিখিত ফলাফল দেখতে হবে:


 Microsoft has poured billions of dollars into ChatGPT developer OpenAI. However, it's also placed a number of bets on other GenAI startups across computing, mapping, and gaming.


আপনি প্রতিক্রিয়া অবজেক্টের "প্রমাণ" বিভাগেও দেখতে পারেন যে, প্রকৃতপক্ষে সিবি ইনসাইটস আর্কাইভ থেকে দুটি নিবন্ধ যা মাইক্রোসফ্ট এবং ওপেনএআই-এর উল্লেখ করে তা পুনরুদ্ধার করা হয়েছে এবং এলএলএম-এর উত্তর সরাসরি প্রমাণের উপর ভিত্তি করে।


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


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


এবং এর সাথে, আমরা NER লুকআপ ব্যবহার করে একটি প্রশ্ন-উত্তর অ্যাপ্লিকেশন তৈরি করেছি, প্রক্রিয়ায় পাইপলাইনের গুণমান উন্নত করে!

উপসংহার

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


আপনার যদি AI স্পেসে কোনো ধারণা থাকে যা আপনি বাস্তবায়িত দেখতে চান বা কেবল প্রযুক্তি সম্পর্কে চ্যাট করতে চান, তাহলে অনুগ্রহ করে Github বা LinkedIn- এ পৌঁছাতে দ্বিধা করবেন না।


আপনি যদি LLMWare সম্পর্কে আরও জানতে চান, SLIMs এবং DRAGON-এর পিছনের কোম্পানি, আপনি সেগুলি HugginFace বা Github- এ খুঁজে পেতে পারেন৷