জেনারেটিভ ডেটা ইন্টেলিজেন্স

LlamaIndex এবং Llama 2-Chat | ব্যবহার করে জ্ঞান-চালিত কথোপকথন অ্যাপ্লিকেশন তৈরি করুন আমাজন ওয়েব সার্ভিসেস

তারিখ:

প্রচুর পরিমাণে পাঠ্য থেকে সঠিক এবং অন্তর্দৃষ্টিপূর্ণ উত্তর আনলক করা একটি উত্তেজনাপূর্ণ ক্ষমতা যা বৃহৎ ভাষা মডেল (LLMs) দ্বারা সক্ষম করা হয়েছে। এলএলএম অ্যাপ্লিকেশনগুলি তৈরি করার সময়, মডেলটিকে প্রাসঙ্গিক প্রসঙ্গ সরবরাহ করার জন্য বাহ্যিক ডেটা উত্সগুলিকে সংযুক্ত করা এবং অনুসন্ধান করা প্রায়শই প্রয়োজন। একটি জনপ্রিয় পদ্ধতি হল রিট্রিভাল অগমেন্টেড জেনারেশন (RAG) ব্যবহার করে প্রশ্নোত্তর ব্যবস্থা তৈরি করা যা জটিল তথ্য বোঝা এবং প্রশ্নের স্বাভাবিক প্রতিক্রিয়া প্রদান করে। RAG মডেলগুলিকে বিস্তৃত জ্ঞানের ঘাঁটিতে ট্যাপ করতে এবং চ্যাটবট এবং এন্টারপ্রাইজ অনুসন্ধান সহকারীর মতো অ্যাপ্লিকেশনগুলির জন্য মানুষের মতো কথোপকথন সরবরাহ করতে দেয়।

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

লামা 2-70B-চ্যাট

Llama 2-70B-Chat হল একটি শক্তিশালী LLM যা শীর্ষস্থানীয় মডেলগুলির সাথে প্রতিযোগিতা করে৷ এটি দুই ট্রিলিয়ন টেক্সট টোকেনগুলিতে প্রাক-প্রশিক্ষিত, এবং মেটা দ্বারা ব্যবহারকারীদের চ্যাট সহায়তার জন্য ব্যবহার করার উদ্দেশ্যে। প্রাক-প্রশিক্ষণের ডেটা সর্বজনীনভাবে উপলব্ধ ডেটা থেকে নেওয়া হয় এবং সেপ্টেম্বর 2022 পর্যন্ত শেষ হয় এবং 2023 সালের জুলাই মাসে ফাইন-টিউনিং ডেটা শেষ হয়৷ মডেলের প্রশিক্ষণ প্রক্রিয়া, সুরক্ষা বিবেচনা, শিক্ষা এবং উদ্দেশ্যমূলক ব্যবহার সম্পর্কে আরও বিশদ বিবরণের জন্য, কাগজটি পড়ুন লামা 2: ওপেন ফাউন্ডেশন এবং ফাইন-টিউনড চ্যাট মডেল. Llama 2 মডেল পাওয়া যায় আমাজন সেজমেকার জাম্পস্টার্ট দ্রুত এবং সহজবোধ্য স্থাপনার জন্য।

লামা ইনডেক্স

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

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

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

এই পোস্টে, আমরা LlamaIndex এবং একটি LLM ব্যবহার করে কীভাবে একটি RAG-ভিত্তিক অ্যাপ্লিকেশন তৈরি করতে হয় তা প্রদর্শন করি। নিম্নলিখিত চিত্রটি নিম্নলিখিত বিভাগে বর্ণিত এই সমাধানটির ধাপে ধাপে আর্কিটেকচার দেখায়।

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

সমাধানটি তৈরি করা নিম্নলিখিত পদক্ষেপগুলি নিয়ে গঠিত:

  1. সেট আপ করুন অ্যামাজন সেজমেকার স্টুডিও উন্নয়নের পরিবেশ হিসাবে এবং প্রয়োজনীয় নির্ভরতা ইনস্টল করুন।
  2. Amazon SageMaker JumpStart হাব থেকে একটি এমবেডিং মডেল স্থাপন করুন।
  3. আমাদের বাহ্যিক জ্ঞানের ভিত্তি হিসাবে ব্যবহার করতে প্রেস রিলিজ ডাউনলোড করুন।
  4. প্রশ্ন করতে এবং প্রম্পটে অতিরিক্ত প্রসঙ্গ যোগ করার জন্য প্রেস রিলিজের বাইরে একটি সূচক তৈরি করুন।
  5. জ্ঞানের ভিত্তি অনুসন্ধান করুন।
  6. LlamaIndex এবং LangChain এজেন্ট ব্যবহার করে একটি প্রশ্নোত্তর অ্যাপ্লিকেশন তৈরি করুন।

এই পোস্টের সমস্ত কোড পাওয়া যায় গিটহুব রেপো.

পূর্বশর্ত

এই উদাহরণের জন্য, আপনার একটি SageMaker ডোমেন সহ একটি AWS অ্যাকাউন্ট প্রয়োজন এবং উপযুক্ত এডাব্লুএস আইডেন্টিটি এবং অ্যাক্সেস ম্যানেজমেন্ট (IAM) অনুমতি। অ্যাকাউন্ট সেটআপ নির্দেশাবলীর জন্য, দেখুন একটি AWS অ্যাকাউন্ট তৈরি করুন. আপনার যদি ইতিমধ্যে একটি SageMaker ডোমেন না থাকে, তাহলে পড়ুন অ্যামাজন সেজমেকার ডোমেইন একটি তৈরি করতে ওভারভিউ। এই পোস্টে, আমরা ব্যবহার AmazonSageMakerFullAccess ভূমিকা. এটি সুপারিশ করা হয় না যে আপনি একটি উত্পাদন পরিবেশে এই শংসাপত্রটি ব্যবহার করুন৷ পরিবর্তে, আপনার উচিত কম-সুবিধাপ্রাপ্ত অনুমতি সহ একটি ভূমিকা তৈরি করা এবং ব্যবহার করা। আপনি কিভাবে ব্যবহার করতে পারেন তাও অন্বেষণ করতে পারেন আমাজন সেজমেকার রোল ম্যানেজার সেজমেকার কনসোলের মাধ্যমে সাধারণ মেশিন লার্নিং প্রয়োজনের জন্য ব্যক্তি-ভিত্তিক IAM ভূমিকা তৈরি এবং পরিচালনা করা।

অতিরিক্তভাবে, আপনার ন্যূনতম নিম্নোক্ত দৃষ্টান্তের আকারগুলিতে অ্যাক্সেস প্রয়োজন:

  • ml.g5.2x বড় মোতায়েন করার সময় এন্ডপয়েন্ট ব্যবহারের জন্য আলিঙ্গন মুখ GPT-J টেক্সট এমবেডিং মডেল
  • ml.g5.48x বড় লামা 2-চ্যাট মডেল এন্ডপয়েন্ট স্থাপন করার সময় এন্ডপয়েন্ট ব্যবহারের জন্য

আপনার কোটা বাড়াতে, পড়ুন কোটা বাড়ানোর অনুরোধ করছি.

SageMaker JumpStart ব্যবহার করে একটি GPT-J এম্বেডিং মডেল স্থাপন করুন

SageMaker জাম্পস্টার্ট মডেল স্থাপন করার সময় এই বিভাগটি আপনাকে দুটি বিকল্প দেয়। আপনি প্রদত্ত কোড ব্যবহার করে একটি কোড-ভিত্তিক স্থাপনা ব্যবহার করতে পারেন, অথবা SageMaker JumpStart ইউজার ইন্টারফেস (UI) ব্যবহার করতে পারেন।

SageMaker Python SDK এর সাথে স্থাপন করুন

আপনি LLM গুলি স্থাপন করতে SageMaker Python SDK ব্যবহার করতে পারেন, যেমনটি দেখানো হয়েছে কোড সংগ্রহস্থলে উপলব্ধ। নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

  1. ব্যবহার করে এমবেডিং মডেলের স্থাপনার জন্য যে দৃষ্টান্তের আকার ব্যবহার করা হবে তা সেট করুন instance_type = "ml.g5.2xlarge"
  2. এম্বেডিংয়ের জন্য যে মডেলটি ব্যবহার করতে হবে সেটি আইডি খুঁজুন। সেজমেকার জাম্পস্টার্টে, এটি হিসাবে চিহ্নিত করা হয় model_id = "huggingface-textembedding-gpt-j-6b-fp16"
  3. প্রাক-প্রশিক্ষিত মডেল ধারকটি পুনরুদ্ধার করুন এবং অনুমানের জন্য এটি স্থাপন করুন।

এম্বেডিং মডেল সফলভাবে স্থাপন করা হলে SageMaker মডেলের শেষ পয়েন্টের নাম এবং নিম্নলিখিত বার্তাটি ফেরত দেবে:

SageMaker স্টুডিওতে SageMaker জাম্পস্টার্টের সাথে স্থাপন করুন

স্টুডিওতে সেজমেকার জাম্পস্টার্ট ব্যবহার করে মডেলটি স্থাপন করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

  1. সেজমেকার স্টুডিও কনসোলে, নেভিগেশন প্যানে জাম্পস্টার্ট বেছে নিন।
  2. অনুসন্ধান করুন এবং GPT-J 6B এমবেডিং FP16 মডেল চয়ন করুন৷
  3. স্থাপনা নির্বাচন করুন এবং স্থাপনার কনফিগারেশন কাস্টমাইজ করুন।
  4. এই উদাহরণের জন্য, আমাদের একটি ml.g5.2xlarge দৃষ্টান্ত প্রয়োজন, যেটি SageMaker JumpStart দ্বারা প্রস্তাবিত ডিফল্ট উদাহরণ।
  5. শেষবিন্দু তৈরি করতে আবার স্থাপনা নির্বাচন করুন।

শেষ পয়েন্টটি পরিষেবাতে হতে প্রায় 5-10 মিনিট সময় নেবে৷

আপনি এমবেডিং মডেল স্থাপন করার পরে, SageMaker API-এর সাথে LangChain ইন্টিগ্রেশন ব্যবহার করার জন্য, আপনাকে ইনপুট (কাঁচা পাঠ) পরিচালনা করার জন্য একটি ফাংশন তৈরি করতে হবে এবং মডেল ব্যবহার করে এম্বেডিংয়ে রূপান্তর করতে হবে। আপনি নামক একটি ক্লাস তৈরি করে এটি করবেন ContentHandler, যা ইনপুট ডেটার একটি JSON নেয় এবং পাঠ্য এমবেডিংয়ের একটি JSON প্রদান করে: class ContentHandler(EmbeddingsContentHandler).

মডেল এন্ডপয়েন্ট নাম পাস করুন ContentHandler টেক্সট রূপান্তর করতে ফাংশন এবং এম্বেডিং ফেরত:

embeddings = SagemakerEndpointEmbeddings(endpoint_name='huggingface-textembedding-gpt-j-6b-fp16', region_name= aws_region, content_handler=emb_content_handler).

আপনি SDK-এর আউটপুটে অথবা SageMaker JumpStart UI-তে স্থাপনার বিবরণে শেষ পয়েন্টের নামটি সনাক্ত করতে পারেন।

আপনি যে পরীক্ষা করতে পারেন ContentHandler ফাংশন এবং এন্ডপয়েন্ট কিছু কাঁচা টেক্সট ইনপুট করে এবং রান করে প্রত্যাশিতভাবে কাজ করছে embeddings.embed_query(text) ফাংশন আপনি প্রদত্ত উদাহরণ ব্যবহার করতে পারেন text = "Hi! It's time for the beach" অথবা আপনার নিজের টেক্সট চেষ্টা করুন.

সেজমেকার জাম্পস্টার্ট ব্যবহার করে লামা 2-চ্যাট স্থাপন এবং পরীক্ষা করুন

এখন আপনি মডেল স্থাপন করতে পারেন যা আপনার ব্যবহারকারীদের সাথে ইন্টারেক্টিভ কথোপকথন করতে সক্ষম। এই উদাহরণে, আমরা Llama 2-চ্যাট মডেলগুলির মধ্যে একটি বেছে নিই, যা এর মাধ্যমে চিহ্নিত করা হয়

my_model = JumpStartModel(model_id = "meta-textgeneration-llama-2-70b-f")

মডেলটিকে ব্যবহার করে একটি রিয়েল-টাইম এন্ডপয়েন্টে স্থাপন করা দরকার predictor = my_model.deploy(). SageMaker মডেলের শেষ পয়েন্টের নাম ফেরত দেবে, যা আপনি এর জন্য ব্যবহার করতে পারেন endpoint_name পরিবর্তনশীল পরে রেফারেন্স.

আপনি একটি সংজ্ঞায়িত print_dialogue চ্যাট মডেলে ইনপুট পাঠাতে এবং এর আউটপুট প্রতিক্রিয়া পাওয়ার ফাংশন। পেলোডে নিম্নলিখিতগুলি সহ মডেলের জন্য হাইপারপ্যারামিটার রয়েছে:

  • সর্বোচ্চ_নতুন_টোকেন - মডেলটি তার আউটপুটগুলিতে তৈরি করতে পারে এমন সর্বাধিক সংখ্যক টোকেনকে বোঝায়।
  • শীর্ষ_পি - টোকেনগুলির ক্রমবর্ধমান সম্ভাব্যতা বোঝায় যা মডেলটি তার আউটপুট তৈরি করার সময় ধরে রাখতে পারে
  • তাপমাত্রা - মডেল দ্বারা উত্পন্ন আউটপুট এর এলোমেলোতা বোঝায়। 0-এর বেশি বা 1-এর সমান তাপমাত্রা এলোমেলোতার মাত্রা বাড়ায়, যেখানে 0-এর তাপমাত্রা সর্বাধিক সম্ভাব্য টোকেন তৈরি করবে।

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

response = predictor.predict(payload, custom_attributes='accept_eula=true')

মডেলটি পরীক্ষা করতে, ইনপুট পেলোডের বিষয়বস্তু বিভাগটি প্রতিস্থাপন করুন: "content": "what is the recipe of mayonnaise?". আপনি আপনার নিজস্ব পাঠ্য মান ব্যবহার করতে পারেন এবং তাদের আরও ভালভাবে বুঝতে হাইপারপ্যারামিটার আপডেট করতে পারেন।

এমবেডিং মডেলের স্থাপনার অনুরূপ, আপনি সেজমেকার জাম্পস্টার্ট UI ব্যবহার করে Llama-70B-Chat স্থাপন করতে পারেন:

  1. সেজমেকার স্টুডিও কনসোলে, নির্বাচন করুন লাফ শুরু নেভিগেশন ফলকে
  2. জন্য অনুসন্ধান করুন এবং চয়ন করুন Llama-2-70b-Chat model
  3. EULA গ্রহণ করুন এবং নির্বাচন করুন স্থাপন করুন, আবার ডিফল্ট উদাহরণ ব্যবহার করে

এমবেডিং মডেলের মতো, আপনি আপনার চ্যাট মডেলের ইনপুট এবং আউটপুটগুলির জন্য একটি বিষয়বস্তু হ্যান্ডলার টেমপ্লেট তৈরি করে LangChain ইন্টিগ্রেশন ব্যবহার করতে পারেন। এই ক্ষেত্রে, আপনি একজন ব্যবহারকারীর কাছ থেকে আসা ইনপুটগুলিকে সংজ্ঞায়িত করুন এবং নির্দেশ করুন যে সেগুলি দ্বারা নিয়ন্ত্রিত হয় system prompt. দ্য system prompt একটি নির্দিষ্ট ব্যবহারের ক্ষেত্রে ব্যবহারকারীকে সহায়তা করার ক্ষেত্রে তার ভূমিকা মডেলকে জানায়।

এই বিষয়বস্তু হ্যান্ডলার পরে মডেল আহ্বান করার সময় পাস করা হয়, উপরে উল্লিখিত হাইপারপ্যারামিটার এবং কাস্টম বৈশিষ্ট্য (EULA স্বীকৃতি) ছাড়াও। আপনি নিম্নলিখিত কোড ব্যবহার করে এই সমস্ত বৈশিষ্ট্য বিশ্লেষণ করুন:

llm = SagemakerEndpoint(
        endpoint_name=endpoint_name,
        region_name="us-east-1",
        model_kwargs={"max_new_tokens":500, "top_p": 0.1, "temperature": 0.4, "return_full_text": False},
        content_handler=content_handler,
        endpoint_kwargs = {"CustomAttributes": "accept_eula=true"}
    )

যখন এন্ডপয়েন্ট পাওয়া যায়, আপনি পরীক্ষা করতে পারেন যে এটি প্রত্যাশিত হিসাবে কাজ করছে। আপনি আপডেট করতে পারেন llm("what is amazon sagemaker?") আপনার নিজের পাঠ্য সহ। আপনি নির্দিষ্ট সংজ্ঞায়িত করতে হবে ContentHandler ল্যাংচেইন ব্যবহার করে এলএলএম আহ্বান করতে, যেমনটি দেখানো হয়েছে কোড এবং নিম্নলিখিত কোড স্নিপেট:

class ContentHandler(LLMContentHandler):
    content_type = "application/json"
    accepts = "application/json"
    def transform_input(self, prompt: str, model_kwargs: dict) -> bytes:
            payload = {
                "inputs": [
                    [
                        {
                            "role": "system",
                            "content": system_prompt,
                        },
                        {"role": "user", "content": prompt},
                    ],
                ],
                "parameters": model_kwargs,
            }
            input_str = json.dumps(
                payload,
            )
            return input_str.encode("utf-8")
   
    def transform_output(self, output: bytes) -> str:
            response_json = json.loads(output.read().decode("utf-8"))
            content = response_json[0]["generation"]["content"]
            return content
        
content_handler = ContentHandler()

RAG তৈরি করতে LlamaIndex ব্যবহার করুন

চালিয়ে যেতে, RAG অ্যাপ্লিকেশন তৈরি করতে LlamaIndex ইনস্টল করুন। আপনি পিপ ব্যবহার করে LlamaIndex ইনস্টল করতে পারেন: pip install llama_index

সূচীকরণের জন্য আপনাকে প্রথমে LlamaIndex-এ আপনার ডেটা (নলেজ বেস) লোড করতে হবে। এটি কয়েকটি পদক্ষেপ জড়িত:

  1. একটি ডেটা লোডার চয়ন করুন:

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

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

  1. লোডার ইনস্ট্যান্ট করুন এবং নথি লোড করুন:

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

  1. লোডার এর কল load_data আপনার সোর্স ফাইল এবং ডেটা পার্স করার পদ্ধতি এবং সেগুলিকে LlamaIndex ডকুমেন্ট অবজেক্টে রূপান্তর করুন, সূচীকরণ এবং অনুসন্ধানের জন্য প্রস্তুত। আপনি LlamaIndex এর সূচীকরণ এবং পুনরুদ্ধারের ক্ষমতা ব্যবহার করে সম্পূর্ণ-টেক্সট অনুসন্ধানের জন্য ডেটা ইনজেশন এবং প্রস্তুতি সম্পূর্ণ করতে নিম্নলিখিত কোডটি ব্যবহার করতে পারেন:
docs = SimpleDirectoryReader(input_dir="pressrelease").load_data()

  1. সূচক তৈরি করুন:

LlamaIndex-এর মূল বৈশিষ্ট্য হল ডেটার উপর দিয়ে সংগঠিত সূচক তৈরি করার ক্ষমতা, যা নথি বা নোড হিসাবে উপস্থাপন করা হয়। ইনডেক্সিং ডেটার উপর দক্ষ অনুসন্ধানের সুবিধা দেয়। আমরা ডিফল্ট ইন-মেমরি ভেক্টর স্টোর এবং আমাদের সংজ্ঞায়িত সেটিং কনফিগারেশন সহ আমাদের সূচী তৈরি করি। লামা ইনডেক্স সেটিংস একটি কনফিগারেশন অবজেক্ট যা একটি LlamaIndex অ্যাপ্লিকেশনে সূচীকরণ এবং অনুসন্ধানের অপারেশনগুলির জন্য সাধারণত ব্যবহৃত সম্পদ এবং সেটিংস প্রদান করে। এটি একটি সিঙ্গলটন অবজেক্ট হিসাবে কাজ করে, যাতে এটি আপনাকে গ্লোবাল কনফিগারেশন সেট করতে দেয়, পাশাপাশি আপনাকে নির্দিষ্ট উপাদানগুলিকে সরাসরি ইন্টারফেসে (যেমন এলএলএম, এমবেডিং মডেল) ব্যবহার করে স্থানীয়ভাবে ওভাররাইড করার অনুমতি দেয়। যখন একটি নির্দিষ্ট উপাদান স্পষ্টভাবে প্রদান করা হয় না, তখন LlamaIndex ফ্রেমওয়ার্কটি সংজ্ঞায়িত সেটিংসে ফিরে আসে Settings একটি গ্লোবাল ডিফল্ট হিসাবে অবজেক্ট। LangChain এর সাথে আমাদের এমবেডিং এবং এলএলএম মডেলগুলি ব্যবহার করতে এবং কনফিগার করার জন্য Settings আমাদের ইনস্টল করতে হবে llama_index.embeddings.langchain এবং llama_index.llms.langchain. আমরা কনফিগার করতে পারেন Settings নিম্নলিখিত কোড হিসাবে অবজেক্ট:

Settings.embed_model = LangchainEmbedding(embeddings)
Settings.llm = LangChainLLM(llm)

গতানুগতিক, VectorStoreIndex একটি ইন-মেমরি ব্যবহার করে SimpleVectorStore এটি ডিফল্ট স্টোরেজ প্রসঙ্গের অংশ হিসাবে শুরু করা হয়েছে। বাস্তব জীবনের ব্যবহারের ক্ষেত্রে, আপনাকে প্রায়ই বহিরাগত ভেক্টর স্টোরের সাথে সংযোগ করতে হবে যেমন আমাজন ওপেন সার্চ সার্ভিস. আরো বিস্তারিত জানার জন্য, পড়ুন Amazon OpenSearch Serverless এর জন্য ভেক্টর ইঞ্জিন.

index = VectorStoreIndex.from_documents(docs, service_context=service_context)

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

query_engine = index.as_query_engine() print(query_engine.query("Since migrating to AWS in May, how much in operational cost Yellow.ai has reduced?"))

আপনি দেখতে পারেন যে RAG সমাধান প্রদত্ত নথি থেকে সঠিক উত্তর পুনরুদ্ধার করতে সক্ষম:

According to the provided information, Yellow.ai has reduced its operational costs by 20% since migrating to AWS in May

ল্যাংচেইন টুলস এবং এজেন্ট ব্যবহার করুন

Loader ক্লাস লোডারটি LlamaIndex-এ ডেটা লোড করার জন্য ডিজাইন করা হয়েছে বা পরবর্তীতে একটি টুল হিসাবে ল্যাংচেইন এজেন্ট. এটি আপনার অ্যাপ্লিকেশনের অংশ হিসাবে এটি ব্যবহার করার জন্য আপনাকে আরও শক্তি এবং নমনীয়তা দেয়। আপনি আপনার সংজ্ঞায়িত করে শুরু করুন টুল LangChain এজেন্ট ক্লাস থেকে। আপনি আপনার টুলে যে ফাংশনটি পাস করেন সেটি LlamaIndex ব্যবহার করে আপনার নথিতে আপনার তৈরি করা সূচীকে জিজ্ঞাসা করে।

tools = [
    Tool(
        name="Pressrelease",
        func=lambda q: str(index.as_query_engine().query(q)),
        description="useful pressreleases for answering relevnat questions",
        return_direct=True,
    ),
]

তারপরে আপনি সঠিক ধরণের এজেন্ট নির্বাচন করুন যা আপনি আপনার RAG বাস্তবায়নের জন্য ব্যবহার করতে চান। এই ক্ষেত্রে, আপনি ব্যবহার করুন chat-zero-shot-react-description প্রতিনিধি. এই এজেন্টের সাথে, LLM উপলব্ধ টুল ব্যবহার করবে (এই পরিস্থিতিতে, জ্ঞানের ভিত্তির উপর RAG) প্রতিক্রিয়া প্রদান করতে। তারপরে আপনি আপনার টুল, এলএলএম এবং এজেন্ট টাইপ পাস করে এজেন্টকে আরম্ভ করবেন:

agent= initialize_agent(tools, llm, agent="chat-zero-shot-react-description", verbose=True)

আপনি এজেন্ট মাধ্যমে যাচ্ছে দেখতে পারেন thoughts, actions, এবং observation , টুলটি ব্যবহার করুন (এই দৃশ্যে, আপনার সূচীকৃত নথিগুলি জিজ্ঞাসা করা); এবং একটি ফলাফল ফেরত দিন:

'According to the provided press release, Yellow.ai has reduced its operational costs by 20%, driven performance improvements by 15%, and cut infrastructure costs by 10% since migrating to AWS. However, the specific cost savings from the migration are not mentioned in the provided information. It only states that the company has been able to reinvest the savings into innovation and AI research and development.'

আপনি সহগামী মধ্যে শেষ থেকে শেষ বাস্তবায়ন কোড খুঁজে পেতে পারেন গিটহুব রেপো.

পরিষ্কার কর

অপ্রয়োজনীয় খরচ এড়াতে, আপনি নিম্নলিখিত কোড স্নিপেট বা Amazon JumpStart UI এর মাধ্যমে আপনার সংস্থানগুলি পরিষ্কার করতে পারেন।

Boto3 SDK ব্যবহার করতে, টেক্সট এমবেডিং মডেল এন্ডপয়েন্ট এবং টেক্সট জেনারেশন মডেল এন্ডপয়েন্ট, সেইসাথে এন্ডপয়েন্ট কনফিগারেশন মুছে ফেলতে নিম্নলিখিত কোডটি ব্যবহার করুন:

client = boto3.client('sagemaker', region_name=aws_region)
client.delete_endpoint(EndpointName=endpoint_name)
client.delete_endpoint_config(EndpointConfigName=endpoint_configuration)

SageMaker কনসোল ব্যবহার করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

  1. সেজমেকার কনসোলে, নেভিগেশন প্যানে অনুমানের অধীনে, এন্ডপয়েন্ট নির্বাচন করুন
  2. এম্বেডিং এবং টেক্সট জেনারেশন এন্ডপয়েন্টের জন্য অনুসন্ধান করুন।
  3. এন্ডপয়েন্ট বিশদ পৃষ্ঠায়, মুছুন নির্বাচন করুন।
  4. নিশ্চিত করতে আবার মুছুন নির্বাচন করুন।

উপসংহার

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

এই পোস্টটি কিছু মূল LlamaIndex ধারণা এবং ক্ষমতা প্রদর্শন করেছে। আমরা এম্বেডিংয়ের জন্য GPT-J ব্যবহার করেছি এবং একটি RAG অ্যাপ্লিকেশন তৈরি করতে LLM হিসাবে Llama 2-Chat ব্যবহার করেছি, কিন্তু আপনি পরিবর্তে যেকোনো উপযুক্ত মডেল ব্যবহার করতে পারেন। আপনি SageMaker JumpStart-এ উপলব্ধ মডেলগুলির ব্যাপক পরিসর অন্বেষণ করতে পারেন।

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


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

রোমিনা শরীফপুর ডা অ্যামাজন ওয়েব সার্ভিসেস (AWS) এর একজন সিনিয়র মেশিন লার্নিং এবং কৃত্রিম বুদ্ধিমত্তা সমাধানের স্থপতি। তিনি ML এবং AI-তে অগ্রগতি দ্বারা সক্ষম উদ্ভাবনী এন্ড-টু-এন্ড সমাধানগুলির নকশা এবং বাস্তবায়নের নেতৃত্বে 10 বছরেরও বেশি সময় কাটিয়েছেন। রোমিনার আগ্রহের ক্ষেত্রগুলি হল প্রাকৃতিক ভাষা প্রক্রিয়াকরণ, বড় ভাষার মডেল এবং MLOps৷

নিকোল পিন্টো অস্ট্রেলিয়ার সিডনিতে অবস্থিত একজন এআই/এমএল বিশেষজ্ঞ সমাধান স্থপতি। স্বাস্থ্যসেবা এবং আর্থিক পরিষেবাগুলিতে তার পটভূমি গ্রাহক সমস্যা সমাধানে তাকে একটি অনন্য দৃষ্টিভঙ্গি দেয়। তিনি মেশিন লার্নিং এর মাধ্যমে গ্রাহকদের সক্ষম করার এবং STEM-এ নারীদের পরবর্তী প্রজন্মের ক্ষমতায়নের বিষয়ে উত্সাহী৷

স্পট_আইএমজি

সর্বশেষ বুদ্ধিমত্তা

স্পট_আইএমজি