2024 সালের মাঝামাঝি সময়ে, একটি AI ডেমো তৈরি করা যা মুগ্ধ করে এবং উত্তেজিত করে। একটি শক্তিশালী বিকাশকারী নিন, কিছু চতুর প্রম্পট পরীক্ষা, এবং একটি শক্তিশালী ফাউন্ডেশন মডেলে কয়েকটি API কল করুন এবং আপনি প্রায়ই একটি বিকালে একটি বেসপোক এআই বট তৈরি করতে পারেন। একটি লাইব্রেরিতে যোগ করুন
যদিও উৎপাদনে যাওয়াটা অন্য ব্যাপার। আপনার স্কেলে একটি নির্ভরযোগ্য, পর্যবেক্ষণযোগ্য, টিউনযোগ্য এবং পারফরম্যান্স সিস্টেমের প্রয়োজন হবে। কল্পিত ডেমো পরিস্থিতির বাইরে যাওয়া এবং প্রকৃত গ্রাহক আচরণের সম্পূর্ণ বর্ণালী প্রতিনিধিত্বকারী প্রম্পটের বিস্তৃত পরিসরে আপনার অ্যাপ্লিকেশনের প্রতিক্রিয়া বিবেচনা করা অপরিহার্য। এলএলএম-এর ডোমেন-নির্দিষ্ট জ্ঞানের সমৃদ্ধ কর্পাস অ্যাক্সেসের প্রয়োজন হতে পারে যা প্রায়শই এর প্রাক-প্রশিক্ষণ ডেটাসেট থেকে অনুপস্থিত থাকে। পরিশেষে, যদি আপনি AI প্রয়োগ করেন এমন একটি ব্যবহারের ক্ষেত্রে যেখানে নির্ভুলতা গুরুত্বপূর্ণ, হ্যালুসিনেশন অবশ্যই সনাক্ত করা, পর্যবেক্ষণ করা এবং প্রশমিত করা উচিত।
যদিও এই সমস্ত সমস্যাগুলি সমাধান করা কঠিন বলে মনে হতে পারে, এটি আপনার RAG-ভিত্তিক অ্যাপ্লিকেশনটিকে তার নিজ নিজ ধারণাগত অংশগুলিতে বিনির্মাণ করে এবং তারপর প্রয়োজন অনুসারে প্রতিটিকে উন্নত করার জন্য একটি লক্ষ্যযুক্ত এবং পুনরাবৃত্তিমূলক পদ্ধতি গ্রহণ করে আরও পরিচালনাযোগ্য হয়ে ওঠে। এই পোস্টটি আপনাকে এটি করতে সহায়তা করবে। এটিতে, আমরা পুনরুদ্ধারের সময় ডাউনস্ট্রিমের পরিবর্তে একটি RAG ডকুমেন্ট প্রসেসিং পাইপলাইন তৈরি করতে ব্যবহৃত কৌশলগুলির উপর বিশেষভাবে ফোকাস করব। এটি করার মাধ্যমে, আমরা জেনারেটিভ এআই অ্যাপ্লিকেশন ডেভেলপারদের প্রোটোটাইপ থেকে উৎপাদন পর্যন্ত যাত্রার জন্য নিজেদেরকে আরও ভালোভাবে প্রস্তুত করতে সাহায্য করার লক্ষ্য রাখি।
এটা প্রায়ই বলা হয় যে এআই-এর যুগে ডেটা আপনার পরিখা । সেই লক্ষ্যে, একটি প্রোডাকশন-গ্রেড RAG অ্যাপ্লিকেশান তৈরি করার জন্য আপনার মালিকানাধীন সংস্থার অন্তর্ভুক্ত ডেটার সংরক্ষন, সংস্করণ, প্রক্রিয়া, মূল্যায়ন এবং অনুসন্ধানের জন্য একটি উপযুক্ত ডেটা পরিকাঠামোর চাহিদা রয়েছে। যেহেতু MinIO AI-তে একটি ডেটা-প্রথম পদ্ধতি গ্রহণ করে, তাই এই ধরনের একটি প্রকল্পের জন্য আমাদের ডিফল্ট প্রাথমিক অবকাঠামো সুপারিশ হল একটি আধুনিক ডেটা লেক এবং একটি ভেক্টর ডেটাবেস সেট আপ করা৷ যদিও অন্যান্য আনুষঙ্গিক সরঞ্জামগুলিকে পথে প্লাগ ইন করার প্রয়োজন হতে পারে, এই দুটি অবকাঠামো ইউনিট ভিত্তিগত। তারা পরবর্তীতে আপনার RAG অ্যাপ্লিকেশনটিকে উৎপাদনে আনার সম্মুখীন হওয়া প্রায় সমস্ত কাজের জন্য মাধ্যাকর্ষণ কেন্দ্র হিসাবে কাজ করবে।
MinIO-তে নির্মিত একটি আধুনিক ডেটা লেক রেফারেন্স আর্কিটেকচার পাওয়া যাবে
একটি প্রোডাকশন-গ্রেড RAG অ্যাপ্লিকেশন তৈরির জন্য একটি গুরুত্বপূর্ণ প্রাথমিক পদক্ষেপ হল একটি মূল্যায়ন কাঠামো সেট আপ করা - যা প্রায়শই ইভাল হিসাবে উল্লেখ করা হয়। ইভাল ব্যতীত, আপনার সিস্টেম কতটা ভাল পারফর্ম করছে তা নির্ভরযোগ্যভাবে বোঝার, কোন উপাদানগুলিকে টিউন করা দরকার তা জানার বা আপনি সত্যিকারের অগ্রগতি করছেন কিনা তা নির্ধারণ করার কোনও উপায় আপনার কাছে থাকবে না। অতিরিক্তভাবে, আপনি যে সমস্যাটি সমাধান করার চেষ্টা করছেন তা স্পষ্ট করার জন্য ইভালগুলি একটি ফোর্সিং ফাংশন হিসাবে কাজ করে। এখানে কিছু সাধারণ মূল্যায়ন কৌশল রয়েছে:
হিউরিস্টিক কোড-ভিত্তিক মূল্যায়ন - আউটপুট টোকেন গণনা, কীওয়ার্ডের উপস্থিতি/অনুপস্থিতি, JSON বৈধতা ইত্যাদির মতো বিভিন্ন ব্যবস্থা ব্যবহার করে প্রোগ্রাম্যাটিকভাবে আউটপুট স্কোর করা। প্রচলিত ইউনিট পরীক্ষার জন্য নিয়মিত এক্সপ্রেশন এবং দাবী লাইব্রেরি ব্যবহার করে এইগুলি প্রায়শই নির্ধারকভাবে মূল্যায়ন করা যেতে পারে।
অ্যালগরিদমিক কোড-ভিত্তিক মূল্যায়ন - বিভিন্ন সুপরিচিত ডেটা সায়েন্স মেট্রিক্স ব্যবহার করে স্কোরিং আউটপুট। উদাহরণস্বরূপ, র্যাঙ্কিং সমস্যা হিসাবে প্রম্পটটিকে রিফ্রেম করে, আপনি সুপারিশকারী সিস্টেম থেকে জনপ্রিয় স্কোরিং ফাংশনগুলি ব্যবহার করতে পারেন, যেমন নর্মালাইজড ডিসকাউন্টেড কিউমুলেটিভ গেইন (NDCG) বা গড় পারস্পরিক র্যাঙ্ক (MRR)। বিপরীতভাবে, যদি একটি প্রম্পটকে শ্রেণিবিন্যাসের সমস্যা হিসাবে তৈরি করা যেতে পারে, তাহলে নির্ভুলতা, প্রত্যাহার এবং F1 স্কোর উপযুক্ত হতে পারে। অবশেষে, আপনি একটি পরিচিত গ্রাউন্ড ট্রুথের সাথে শব্দার্থিক আউটপুট তুলনা করতে BLEU, ROUGE, এবং শব্দার্থিক উত্তরের মিল (SAS) এর মতো ব্যবস্থা ব্যবহার করতে পারেন।
মডেল-ভিত্তিক মূল্যায়ন - একটি মডেল ব্যবহার করে অন্যটির আউটপুট স্কোর করতে যেমন বিস্তারিত আছে
মানব মূল্যায়ন - মানব ডোমেন বিশেষজ্ঞদের তাদের সর্বোত্তম উত্তর দেওয়ার জন্য জিজ্ঞাসা করা সাধারণত সোনার মান। যদিও এই পদ্ধতিটি ধীর এবং ব্যয়বহুল, এটিকে উপেক্ষা করা উচিত নয়, কারণ এটি অন্তর্দৃষ্টি অর্জন এবং আপনার প্রাথমিক মূল্যায়ন ডেটা সেট তৈরি করার জন্য অমূল্য হতে পারে। আপনি যদি সম্পাদিত কাজ থেকে অতিরিক্ত মাইলেজ চান, আপনি কৌশলগুলি ব্যবহার করতে পারেন যেমন বিস্তারিত
কোন মূল্যায়ন কৌশলগুলি ব্যবহার করবেন সে সম্পর্কে আপনার সিদ্ধান্তের পাশাপাশি, একটি কাস্টম বেঞ্চমার্ক মূল্যায়ন ডেটাসেট তৈরি করার কথা বিবেচনা করুন - সাধারণ যেগুলি সাধারণত হাগিং ফেস লিডারবোর্ডে ব্যবহৃত হয়
আপনার eval ডেটাসেটের প্রতিটি সারির জন্য ইনপুট প্রম্পটে সীমাবদ্ধতা প্রয়োগ করার কথা বিবেচনা করুন যাতে LLM একটি সুনির্দিষ্ট রায়ের প্রকারের সাথে উত্তর দেয়: বাইনারি, শ্রেণীবদ্ধ, র্যাঙ্কিং, সংখ্যাসূচক বা পাঠ্য। রায়ের প্রকারের মিশ্রণ আপনার ইভালগুলিকে যুক্তিসঙ্গতভাবে বৈচিত্র্যময় রাখবে এবং আউটপুট পক্ষপাত কমিয়ে দেবে। Ceteris paribus, আরো মূল্যায়ন পরীক্ষার ক্ষেত্রে ভাল; যাইহোক, এই পর্যায়ে পরিমাণের চেয়ে মানের উপর ফোকাস করার পরামর্শ দেওয়া হয়। সাম্প্রতিক গবেষণায় এলএলএম ফাইন-টিউনিং
আপনি যখন অ্যাড-হক ভিত্তিতে আপনার ইভালগুলি ম্যানুয়ালি চালানো শুরু করতে পারেন, আপনার ইভাল স্কোরিং প্রক্রিয়াটি স্বয়ংক্রিয়ভাবে সম্পাদন করতে একটি CI/CD পাইপলাইন প্রয়োগ করার আগে খুব বেশি সময় অপেক্ষা করবেন না। প্রতিদিন ইভাল চালানো বা সোর্স কোড রিপোজিটরির সাথে সংযুক্ত ট্রিগার এবং পর্যবেক্ষণযোগ্যতা টুলিংকে সাধারণত একটি ML-ops সেরা অনুশীলন হিসাবে বিবেচনা করা হয়। একটি ওপেন সোর্স RAG মূল্যায়ন ফ্রেমওয়ার্ক ব্যবহার করার মত বিবেচনা করুন
আপনি প্রাথমিকভাবে যে RAG কর্পাস দিয়ে প্রোটোটাইপিং শুরু করেন তা আপনাকে উৎপাদনে নিয়ে যাওয়ার জন্য খুব কমই যথেষ্ট। LLM-কে হ্যালুসিনেশন, বাদ পড়া এবং সমস্যাযুক্ত ধরনের পক্ষপাত কমাতে সাহায্য করার জন্য আপনাকে একটি চলমান ভিত্তিতে অতিরিক্ত ডেটা দিয়ে আপনার কর্পাস বাড়াতে হবে। এটি সাধারণত এক্সট্র্যাক্টর এবং লোডার তৈরি করে কেস-বাই-কেস করা হয় যা আপস্ট্রিম ডেটাকে একটি ফর্ম্যাটে রূপান্তর করে যা ডাউনস্ট্রিম ডকুমেন্ট পাইপলাইনে আরও প্রক্রিয়া করা যেতে পারে।
যদিও আপনার প্রয়োজনের চেয়ে বেশি ডেটা সংগ্রহ করে সমুদ্রকে ফুটিয়ে তোলার চেষ্টা করার একটি ছোট ঝুঁকি রয়েছে, এটি সৃজনশীল হওয়া এবং আপনার কোম্পানির অ্যাক্সেসের গুণমান তথ্যের উত্স সম্পর্কে বাক্সের বাইরে চিন্তা করা অপরিহার্য। সুস্পষ্ট সম্ভাবনার মধ্যে আপনার কর্পোরেট OLTP এবং ডেটা গুদামে সংরক্ষিত কাঠামোগত ডেটা থেকে অন্তর্দৃষ্টি বের করা অন্তর্ভুক্ত থাকতে পারে। কর্পোরেট ব্লগ পোস্ট, শ্বেতপত্র, প্রকাশিত গবেষণা, এবং গ্রাহক সহায়তা অনুসন্ধানের মতো উত্সগুলিকেও বিবেচনা করা উচিত, যদি সেগুলি যথাযথভাবে বেনামী করা যায় এবং সংবেদনশীল তথ্য স্ক্রাব করা যায়৷ আপনার কর্পাসে এমনকি অল্প পরিমাণে মানসম্পন্ন ইন-ডোমেন ডেটা যোগ করার ইতিবাচক কর্মক্ষমতা প্রভাবকে বাড়াবাড়ি করা কঠিন, তাই অন্বেষণ, পরীক্ষা এবং পুনরাবৃত্তি করতে সময় ব্যয় করতে ভয় পাবেন না। একটি উচ্চ-মানের ইন-ডোমেন কর্পাস বুটস্ট্র্যাপ করতে সাধারণত ব্যবহৃত কয়েকটি কৌশল এখানে দেওয়া হল:
নথি নিষ্কাশন - মালিকানাধীন PDF, অফিস নথি, উপস্থাপনা, এবং মার্কডাউন ফাইল তথ্যের সমৃদ্ধ উৎস হতে পারে। এই ডেটা বের করার জন্য ওপেন সোর্স এবং SaaS টুলগুলির একটি বিস্তৃত ইকোসিস্টেম বিদ্যমান। সাধারণত, ডেটা এক্সট্র্যাক্টরগুলি ফাইল-টাইপ নির্দিষ্ট (JSON, CSV, docx, ইত্যাদি), OCR-ভিত্তিক, বা মেশিন লার্নিং এবং কম্পিউটার-ভিশন অ্যালগরিদম দ্বারা চালিত হয়। সহজ শুরু করুন এবং প্রয়োজন অনুযায়ী জটিলতা যোগ করুন।
API নিষ্কাশন - সর্বজনীন এবং ব্যক্তিগত APIগুলি ইন-ডোমেন জ্ঞানের সমৃদ্ধ উত্স হতে পারে। অধিকন্তু, ভাল-ডিজাইন করা JSON এবং XML-ভিত্তিক ওয়েব এপিআইগুলির ইতিমধ্যেই কিছু অন্তর্নির্মিত কাঠামো রয়েছে, যা অপ্রাসঙ্গিক বলে মনে করা কিছু বাদ দিয়ে পেলোডের মধ্যে প্রাসঙ্গিক বৈশিষ্ট্যগুলির লক্ষ্যযুক্ত নিষ্কাশন করা সহজ করে তোলে। সাশ্রয়ী মূল্যের লো-কোড এবং নো-কোড API সংযোগকারীগুলির একটি বিশাল ইকোসিস্টেম বিদ্যমান রয়েছে যা আপনি ব্যবহার করতে চান এমন প্রতিটি API-এর জন্য কাস্টম ETL লেখা এড়াতে সাহায্য করে - এমন একটি পদ্ধতি যা ডেটা ইঞ্জিনিয়ারদের একটি ডেডিকেটেড দল ছাড়া বজায় রাখা এবং স্কেল করা কঠিন হতে পারে।
ওয়েব স্ক্র্যাপার - ওয়েবপৃষ্ঠাগুলিকে গাছের মতো DOM কাঠামোর সাথে আধা-কাঠামোগত ডেটা হিসাবে বিবেচনা করা হয়। আপনি যদি জানেন যে আপনি কোন তথ্যের পরে আছেন, এটি কোথায় অবস্থিত এবং পৃষ্ঠার বিন্যাস যেখানে এটি থাকে, আপনি একটি ভাল-ডকুমেন্টেড API ছাড়াই এই ডেটা ব্যবহার করার জন্য দ্রুত একটি স্ক্র্যাপার তৈরি করতে পারেন। ওয়েব স্ক্র্যাপিংয়ের জন্য মূল্যবান বিমূর্ততা প্রদানের জন্য অনেক স্ক্রিপ্টিং লাইব্রেরি এবং লো-কোড টুল বিদ্যমান।
ওয়েব ক্রলার - ওয়েব ক্রলাররা ওয়েব পৃষ্ঠাগুলি অতিক্রম করতে পারে এবং পুনরাবৃত্ত URL তালিকা তৈরি করতে পারে৷ এই পদ্ধতিটি আপনার মানদণ্ডের উপর ভিত্তি করে তথ্য স্ক্যান, সংক্ষিপ্তকরণ এবং ফিল্টার করার জন্য স্ক্র্যাপিংয়ের সাথে একত্রিত করা যেতে পারে। আরও উল্লেখযোগ্য স্কেলে, এই কৌশলটি আপনার নিজস্ব জ্ঞানের গ্রাফ তৈরি করতে ব্যবহার করা যেতে পারে।
ডেটা সংগ্রহের জন্য আপনি যে কৌশলই ব্যবহার করুন না কেন, হ্যাকড-একসাথে এক-বন্ধ স্ক্রিপ্ট তৈরি করার তাগিদকে প্রতিহত করুন। পরিবর্তে, এক্সট্র্যাক্টরদের পুনরাবৃত্তিযোগ্য এবং ত্রুটি-সহনশীল ETL পাইপলাইন হিসাবে স্থাপন করার জন্য ডেটা ইঞ্জিনিয়ারিং সর্বোত্তম অনুশীলনগুলি প্রয়োগ করুন যা আপনার ডেটা লেকের ভিতরে টেবিলে ডেটা ল্যান্ড করে। নিশ্চিত করুন যে প্রতিবার আপনি এই পাইপলাইনগুলি চালান - মূল মেটাডেটা উপাদান যেমন উত্স URL এবং নিষ্কাশনের সময় - প্রতিটি বিষয়বস্তুর সাথে ক্যাপচার করা এবং লেবেল করা হয়েছে৷ মেটাডেটা ক্যাপচার ডাউনস্ট্রিম ডেটা ক্লিনিং, ফিল্টারিং, ডিডুপ্লিকেশন, ডিবাগিং এবং অ্যাট্রিবিউশনের জন্য অমূল্য প্রমাণিত হবে।
চঙ্কিং বড় টেক্সট নমুনাগুলিকে ছোট বিচ্ছিন্ন টুকরোগুলিতে হ্রাস করে যা একটি LLM এর প্রসঙ্গ উইন্ডোতে ফিট করতে পারে। যদিও কনটেক্সট উইন্ডোগুলি বড় হচ্ছে - অনুমান করার সময় বিষয়বস্তুর আরও অংশ স্টাফ করার অনুমতি দেয় - সঠিকতা, প্রত্যাহার এবং গণনাগত দক্ষতার মধ্যে সঠিক ভারসাম্য বজায় রাখার জন্য খণ্ড করা একটি গুরুত্বপূর্ণ কৌশল হিসাবে রয়ে গেছে।
কার্যকরী খণ্ডের জন্য একটি উপযুক্ত খণ্ড আকার নির্বাচন করা প্রয়োজন। বৃহত্তর খণ্ডের আকারগুলি প্রেক্ষাপট উইন্ডোর মধ্যে কম মোট খণ্ডগুলি উপস্থিত থাকার অনুমতি দেওয়ার খরচে পাঠ্যের প্রসঙ্গ এবং শব্দার্থিক অর্থের একটি অংশ সংরক্ষণ করে। বিপরীতভাবে, ছোট খণ্ডের আকারগুলি LLM এর প্রসঙ্গ উইন্ডোতে সামগ্রীর আরও বিচ্ছিন্ন অংশগুলিকে স্টাফ করার অনুমতি দেবে। যাইহোক, অতিরিক্ত রেললাইন ব্যতীত, বিষয়বস্তুর প্রতিটি অংশ তার আশেপাশের প্রসঙ্গ থেকে সরানো হলে নিম্ন মানের ঝুঁকি নিয়ে থাকে।
খণ্ড আকার ছাড়াও, আপনাকে বিভিন্ন খণ্ডের কৌশল এবং পদ্ধতিগুলি মূল্যায়ন করতে হবে। এখানে বিবেচনা করার জন্য কয়েকটি স্ট্যান্ডার্ড চঙ্কিং পদ্ধতি রয়েছে:
নির্দিষ্ট আকারের কৌশল - এই পদ্ধতিতে, আমরা কেবলমাত্র আমাদের সামগ্রীর অংশগুলির জন্য একটি নির্দিষ্ট সংখ্যক টোকেন বেছে নিই এবং সেই অনুযায়ী আমাদের সামগ্রীকে ছোট অংশে বিনির্মাণ করি। সাধারণত, খুব বেশি প্রসঙ্গ হারানো এড়াতে এই কৌশলটি ব্যবহার করার সময় সংলগ্ন অংশগুলির মধ্যে কিছু ওভারল্যাপ করার পরামর্শ দেওয়া হয়। এটি হল সবচেয়ে সহজবোধ্য চঙ্কিং কৌশল এবং আরও পরিশীলিত কৌশলগুলিতে আরও অ্যাডভেঞ্চার করার আগে সাধারণত একটি ভাল সূচনা পয়েন্ট।
ডাইনামিক সাইজ স্ট্র্যাটেজি - এই পদ্ধতিটি বিভিন্ন বিষয়বস্তুর বৈশিষ্ট্য ব্যবহার করে যেখানে একটি অংশ শুরু করতে এবং থামাতে হবে তা নির্ধারণ করে। একটি সাধারণ উদাহরণ হবে একটি বিরাম চিহ্ন, যা নির্দিষ্ট অক্ষরের উপস্থিতির উপর ভিত্তি করে বাক্যগুলিকে বিভক্ত করে যেমন পিরিয়ড এবং নতুন লাইন। যদিও একটি বিরাম চিহ্ন চঙ্কার সহজবোধ্য সংক্ষিপ্ত সামগ্রীর জন্য যুক্তিসঙ্গতভাবে ভাল কাজ করতে পারে (যেমন, টুইট, অক্ষর-সীমিত পণ্যের বিবরণ, ইত্যাদি) দীর্ঘ এবং আরও জটিল বিষয়বস্তুর জন্য ব্যবহার করা হলে এতে স্পষ্ট ত্রুটি থাকবে।
বিষয়বস্তু-সচেতন কৌশল - বিষয়বস্তু-সচেতন খণ্ডগুলিকে যে ধরনের বিষয়বস্তু এবং মেটাডেটা বের করা হচ্ছে তার সাথে সমন্বয় করা হয় এবং প্রতিটি খণ্ড কোথায় শুরু এবং থামাতে হবে তা নির্ধারণ করতে এই বৈশিষ্ট্যগুলি ব্যবহার করে। একটি উদাহরণ হতে পারে এইচটিএমএল ব্লগের জন্য একটি চঙ্কার যা খণ্ডের সীমানা নির্ধারণ করতে হেডার ট্যাগ ব্যবহার করে। আরেকটি উদাহরণ হতে পারে একটি শব্দার্থিক চাঙ্কার যেটি প্রতিটি বাক্যের পেয়ারওয়াইজ কোসাইন সাদৃশ্য স্কোরকে তার পূর্ববর্তী প্রতিবেশীদের সাথে তুলনা করে যখন প্রসঙ্গটি একটি নতুন অংশের বর্ণনার নিশ্চয়তা দেওয়ার জন্য যথেষ্ট পরিবর্তিত হয়েছে তা নির্ধারণ করে।
আপনার RAG অ্যাপ্লিকেশানের জন্য সর্বোত্তম চঙ্কিং কৌশলটি LLM এর প্রসঙ্গ উইন্ডোর দৈর্ঘ্য, অন্তর্নিহিত পাঠ্য কাঠামো, পাঠ্যের দৈর্ঘ্য এবং আপনার কর্পাসের বিষয়বস্তুর জটিলতার সাথে টিউন করতে হবে। বিভিন্ন চঙ্কিং কৌশল নিয়ে উদারভাবে পরীক্ষা করুন এবং একটি প্রদত্ত কৌশলের জন্য অ্যাপ্লিকেশন কার্যকারিতা আরও ভালভাবে বোঝার জন্য প্রতিটি পরিবর্তনের পরে আপনার ইভালগুলি চালান। আপনার ডেটা লেক টেবিলে আপনার খণ্ডিত বিষয়বস্তুর সংস্করণ করুন এবং নিশ্চিত করুন যে প্রতিটি খণ্ডে বংশগত তথ্য রয়েছে যাতে এটিকে আপস্ট্রিম ডেটা নিষ্কাশন পদক্ষেপ থেকে কাঁচা বিষয়বস্তু এবং এর সংশ্লিষ্ট মেটাডেটাতে ফিরে আসে।
অনেক ক্ষেত্রে, RAG-এর সময় পুনরুদ্ধারের জন্য সূচীকৃত বিষয়বস্তু অংশগুলি আপনার অ্যাপ্লিকেশনটি উত্পাদনে সম্মুখীন হওয়া প্রকৃত প্রম্পটগুলির থেকে প্রাসঙ্গিকভাবে ভিন্ন। উদাহরণস্বরূপ, আপনি যদি একটি AI প্রশ্ন-উত্তরকারী বট তৈরি করেন, তাহলে আপনার কাছে মালিকানার তথ্যের একটি বিশাল সংস্থা থাকতে পারে যাতে গ্রাহকের প্রশ্নের অসংখ্য সঠিক উত্তর রয়েছে। যদিও এর কাঁচা আকারে, আপনার কর্পাস প্রশ্ন-উত্তর জোড়ার বিন্যাসে পূর্ব-সংগঠিত হওয়ার সম্ভাবনা কম, যা মিল-ভিত্তিক এমবেডিং পুনরুদ্ধারের জন্য আদর্শ। এই উদাহরণে, যদি পুনরুদ্ধারের সময়, আমরা নিষ্কলুষভাবে কাঁচা সামগ্রীর অংশগুলির জন্য আমাদের কর্পাস অনুসন্ধান করি যা একটি অন্তর্মুখী গ্রাহকের প্রশ্নের মতো শব্দার্থকভাবে অনুরূপ, আমরা পুনরুদ্ধার ফলাফল-সেটের উপ-অনুকূল প্রাসঙ্গিকতার সম্মুখীন হতে পারি। এটি এই সত্যের ফলাফল যে আমরা প্রাসঙ্গিকভাবে অসম আইটেমের সাদৃশ্য তুলনা করছি - যথা উত্তরের সাথে প্রশ্ন। সৌভাগ্যবশত, সমাধানটি তুলনামূলকভাবে সহজবোধ্য: আমরা আমাদের সম্ভাব্য উত্তরগুলিকে সমৃদ্ধ করতে LLM-এর শক্তি ব্যবহার করতে পারি - ওরফে কাঁচা বিষয়বস্তুর অংশগুলি - তাদের অনুমানমূলক প্রশ্নগুলির মধ্যে পুনঃপ্রসঙ্গ করে। তারপরে আমরা পরবর্তী পুনরুদ্ধারের জন্য আমাদের ভেক্টর ডাটাবেসে সেই অনুমানমূলক প্রশ্নগুলিকে সূচিবদ্ধ করি। এই কৌশল, বলা হয়
System Prompt: Given the provided snippet of text, generate three hypothetical questions that could be asked about it. Each question must be able to be answered using the information within the referenced snippet of text and only that information. Be concise. User Prompt: “At the 52nd Annual Grammy Awards, Beyoncé received ten nominations, including Album of the Year for I Am... Sasha Fierce, Record of the Year for "Halo", and Song of the Year for "Single Ladies (Put a Ring on It)", among others. She tied with Lauryn Hill for most Grammy nominations in a single year by a female artist. In 2010, Beyoncé was featured on Lady Gaga's single "Telephone" and its music video. The song topped the US Pop Songs chart, becoming the sixth number-one for both Beyoncé and Gaga, tying them with Mariah Carey for most number-ones since the Nielsen Top 40 airplay chart launched in 1992. "Telephone" received a Grammy Award nomination for Best Pop Collaboration with Vocals.” Response: Here are some questions that could be asked based on the provided text: * How many nominations did Beyoncé receive at the 52nd Annual Grammy Awards? * For which album was Beyoncé nominated for Album of the Year at the 52nd Annual Grammy Awards? * Which song earned Beyoncé a nomination for Record of the Year at the 52nd Annual Grammy Awards?
যদি লং-ফর্ম এবং/অথবা থিম্যাটিকভাবে জটিল বিষয়বস্তুর সমন্বয়ে গঠিত একটি কর্পাসের সাথে কাজ করা হয়, তাহলে বিষয়বস্তুর অংশগুলিকে প্রাক-সংক্ষিপ্ত করার জন্য অতিরিক্ত প্রাক-প্রক্রিয়া করার কথা বিবেচনা করুন এবং এইভাবে তাদের শব্দার্থিক মাত্রা হ্রাস করুন। পুনরুদ্ধারের সময়, আপনি খণ্ড সারাংশের এমবেডিংগুলি জিজ্ঞাসা করতে পারেন এবং তারপরে প্রসঙ্গ উইন্ডো সন্নিবেশের জন্য অ-সংক্ষিপ্ত পাঠ প্রতিস্থাপন করতে পারেন। একটি বড়, জটিল, এবং/অথবা ঘন ঘন পরিবর্তনশীল কর্পাসের উপর RAG করার সময় এই পদ্ধতিটি প্রাসঙ্গিকতা বাড়ায়।
2024 সালে বড় ভাষার মডেলগুলি সাধারণত ট্রান্সফরমার-ভিত্তিক নিউরাল নেটওয়ার্ক যা স্থানীয়ভাবে লিখিত শব্দ বোঝে না। আগত কাঁচা পাঠকে টোকেনে রূপান্তরিত করা হয়, তারপরে উচ্চ-মাত্রিক এম্বেডিং ভেক্টরগুলি ম্যাট্রিক্স গুণন ক্রিয়াকলাপের জন্য অপ্টিমাইজ করা হয়। এই অন্তর্মুখী প্রক্রিয়াটিকে সাধারণত এনকোডিং বলা হয়। ইনভার্টেড আউটবাউন্ড প্রক্রিয়াটিকে ডিকোডিং বলা হয়। অনেক LLM শুধুমাত্র একই টোকেনাইজেশন স্কিম ব্যবহার করে অনুমানের জন্য কাজ করবে যার উপর তারা প্রশিক্ষিত হয়েছিল। অতএব, নির্বাচিত টোকেনাইজেশন কৌশলটির মূল বিষয়গুলি বোঝা অপরিহার্য, কারণ এতে অনেক সূক্ষ্ম কার্যক্ষমতার প্রভাব থাকতে পারে।
যদিও সাধারণ চরিত্র এবং শব্দ-স্তরের টোকেনাইজেশন স্কিম রয়েছে, প্রায় সমস্ত অত্যাধুনিক এলএলএম লেখার সময় সাবওয়ার্ড টোকেনাইজার ব্যবহার করে। ফলস্বরূপ, আমরা এখানে শুধুমাত্র টোকেনাইজারদের সেই বিভাগের উপর ফোকাস করব।
সাবওয়ার্ড টোকেনাইজাররা বারবার শব্দগুলিকে ছোট ইউনিটে বিভক্ত করে। এটি তাদের শব্দভান্ডারের আকারকে খুব বেশি উড়িয়ে না দিয়ে শব্দভান্ডারের বাইরের শব্দগুলি বোঝার অনুমতি দেয় - প্রশিক্ষণ কর্মক্ষমতা এবং LLM-এর অদেখা পাঠ্যগুলিকে সাধারণীকরণ করার ক্ষমতার জন্য একটি মূল বিবেচ্য বিষয়।
বর্তমানে ব্যবহৃত একটি প্রচলিত সাবওয়ার্ড টোকেনাইজেশন পদ্ধতি হল বাইট-পেয়ার এনকোডিং (BPE)। একটি উচ্চ স্তরে, BPE অ্যালগরিদম এই মত কাজ করে:
শব্দগুলোকে সাবওয়ার্ড ইউনিটের টোকেনে বিভক্ত করুন এবং সেগুলোকে শব্দভান্ডারে যোগ করুন। প্রতিটি টোকেন প্রশিক্ষণ কর্পাসের মধ্যে সাধারণ সংলগ্ন অক্ষর নিদর্শনগুলির আপেক্ষিক ফ্রিকোয়েন্সি দ্বারা নিয়ন্ত্রিত একটি সাবওয়ার্ড প্রতিনিধিত্ব করে।
উপরের ধাপ থেকে সাধারণ টোকেন জোড়াগুলিকে জোড়ার প্রতিনিধিত্বকারী একটি একক টোকেন দিয়ে প্রতিস্থাপন করুন এবং শব্দভান্ডারে এটি যোগ করুন।
পুনরাবৃত্তিমূলকভাবে উপরের পদক্ষেপগুলি পুনরাবৃত্তি করুন।
BPE টোকেনাইজেশন সাধারণত আপনার RAG অ্যাপ্লিকেশন দিয়ে শুরু করার জন্য একটি চমৎকার জায়গা, কারণ এটি অনেক ব্যবহারের ক্ষেত্রে ভাল কাজ করে। যাইহোক, ধরুন আপনার কাছে একটি উল্লেখযোগ্য পরিমাণ উচ্চ বিশেষায়িত ডোমেন ভাষা রয়েছে যা আপনার নির্বাচিত মডেলের জন্য ব্যবহৃত প্রাক-প্রশিক্ষণ কর্পাসের শব্দভাণ্ডারে ভালভাবে উপস্থাপন করা হয় না। সেই ক্ষেত্রে, বিকল্প টোকেনাইজেশন পদ্ধতিগুলি নিয়ে গবেষণা করার কথা বিবেচনা করুন - বা ফাইন-টিউনিং এবং নিম্ন-র্যাঙ্ক অভিযোজন অন্বেষণ করুন, যা এই নিবন্ধের সুযোগের বাইরে। উপরে উল্লিখিত সীমাবদ্ধ শব্দভান্ডারের সমস্যাটি ওষুধ, আইন বা অস্পষ্ট প্রোগ্রামিং ভাষার মতো বিশেষায়িত ডোমেনের জন্য নির্মিত অ্যাপ্লিকেশনগুলিতে দুর্বল কর্মক্ষমতা হিসাবে প্রকাশ করতে পারে। আরও নির্দিষ্টভাবে এটি প্রম্পটগুলিতে প্রচলিত হবে যাতে উচ্চ বিশেষায়িত ভাষা/জার্গন অন্তর্ভুক্ত থাকে। আপনার ডেটা লেকে সংরক্ষিত ইভাল ডেটাসেট ব্যবহার করুন বিভিন্ন টোকেনাইজেশন স্কিম এবং প্রয়োজন অনুসারে বিভিন্ন মডেলের সাথে তাদের নিজ নিজ কর্মক্ষমতা নিয়ে পরীক্ষা করতে। মনে রাখবেন যে টোকেনাইজার, এম্বেডিং এবং ভাষার মডেলগুলি প্রায়শই শক্তভাবে সংযুক্ত থাকে - তাই একটি পরিবর্তন করলে অন্যটিকে পরিবর্তন করতে হতে পারে।
একটি MinIO অবজেক্ট স্টোরের উপরে নির্মিত একটি আধুনিক ডেটা লেক - আত্মবিশ্বাসের সাথে RAG-ভিত্তিক অ্যাপ্লিকেশনগুলিকে উৎপাদনে পাওয়ার জন্য একটি মৌলিক পরিকাঠামো প্রদান করে। এটির সাথে, আপনি ইভাল এবং একটি ডোমেন-নির্দিষ্ট ইভাল ডেটা সেট তৈরি করতে পারেন যা আপনার ডেটা লেক টেবিলের মধ্যে সংরক্ষণ এবং সংস্করণ করা যেতে পারে। এই ইভালগুলি ব্যবহার করে, আপনার RAG অ্যাপ্লিকেশন ডকুমেন্ট পাইপলাইনের প্রতিটি উপাদানকে বারবার মূল্যায়ন করুন এবং ক্রমবর্ধমানভাবে উন্নত করুন - এক্সট্র্যাক্টর, চঙ্কার, সমৃদ্ধকরণ এবং টোকেনাইজার - নিজেকে একটি প্রোডাকশন-গ্রেড ডকুমেন্ট প্রসেসিং পাইপলাইন তৈরি করতে যতটা প্রয়োজন।
আপনার কোন প্রশ্ন থাকলে, আমাদের সাথে যোগাযোগ করতে ভুলবেন না