ল্যাংচেইনে প্যারেন্ট ডকুমেন্ট রিট্রিভার কীভাবে ব্যবহার করবেন?

Lyance Ine Pyarenta Dakumenta Ritribhara Kibhabe Byabahara Karabena



ল্যাংচেইন ফ্রেমওয়ার্ক ডেভেলপারদেরকে বৃহৎ ভাষার মডেল তৈরি করতে সক্ষম করে যা প্রাকৃতিক ভাষায় পাঠ্য বুঝতে এবং তৈরি করতে পারে। LangChain মডেলগুলিকে প্রচুর পরিমাণে ডেটার উপর প্রশিক্ষণ দেওয়া হয় যাতে মডেলটি ভেক্টর স্টোরগুলিতে ডেটা সংরক্ষণ করে ভাষা বুঝতে পারে৷ এটি ব্যবহারকারীকে রিট্রিভার তৈরি করতে সক্ষম করে যা মডেলের জন্য সংরক্ষিত সমস্ত ডেটা সহ ডাটাবেস বা ভেক্টর স্টোর থেকে ডেটা বের করতে পারে।

এই পোস্টটি LangChain-এ প্যারেন্ট ডকুমেন্ট রিট্রিভার ব্যবহার করার প্রক্রিয়া প্রদর্শন করবে।

ল্যাংচেইনে একটি প্যারেন্ট ডকুমেন্ট রিট্রিভার কীভাবে ব্যবহার করবেন?

LangChain-এ অভিভাবক নথি পুনরুদ্ধারকারী নথিগুলিকে ছোট খণ্ডে বিভক্ত করে ব্যবহার করা যেতে পারে যাতে তারা এম্বেডিংয়ের মুহুর্তে তাদের অর্থ হারায় না। মূল নথিটিকে পুরো নথি বা বড় অংশ বলা যেতে পারে যেখান থেকে ছোট খণ্ডগুলি বের করা হয়।







LangChain-এ প্যারেন্ট ডকুমেন্ট রিট্রিভার ব্যবহার করার প্রক্রিয়া শিখতে, এই গাইডটি দেখুন:



ধাপ 1: মডিউল ইনস্টল করুন



প্রথমত, পিপ কমান্ড ব্যবহার করে ল্যাংচেইন ফ্রেমওয়ার্ক ইনস্টল করে প্যারেন্ট ডকুমেন্ট রিট্রিভার ব্যবহার শুরু করুন:





পিপ ল্যাংচেইন ইনস্টল করুন

নথির এমবেডিং সংরক্ষণ করতে এবং এটি থেকে ডেটা পুনরুদ্ধার করতে ক্রোমা ডাটাবেস মডিউলটি ইনস্টল করুন:



chromadb পিপ ইনস্টল করুন

টিকটকেন ইনস্টল করতে যা একটি টোকেনাইজার যা ছোট ছোট অংশ তৈরি করে নথির টোকেন পায়:

পিপ টিকটকেন ইনস্টল করুন

এর নির্ভরতা এবং লাইব্রেরি পেতে পাইথন নোটবুকে নিম্নলিখিত কমান্ডটি কার্যকর করে OpenAI মডিউলটি পান:

পিপ ইনস্টল ওপেনই

ধাপ 2: পরিবেশ সেটআপ করুন এবং ডেটা আপলোড করুন

পরবর্তী ধাপ হল পরিবেশ স্থাপন করুন OpenAI অ্যাকাউন্ট থেকে API কী ব্যবহার করে:

আমদানি আপনি
আমদানি গেটপাস

আপনি . আন্দাজ [ 'OPENAI_API_KEY' ] = গেটপাস . গেটপাস ( 'ওপেনএআই এপিআই কী:' )

এখন, ফাইল লাইব্রেরি আমদানি করার পরে স্থানীয় সিস্টেম থেকে নথিগুলি আপলোড করুন এবং তারপরে আপলোড() পদ্ধতিতে কল করুন:

থেকে গুগল ইটি এএল আমদানি নথি পত্র
আপলোড = নথি পত্র. আপলোড ( )

ধাপ 3: লাইব্রেরি আমদানি করুন

পরবর্তী ধাপে ল্যাংচেইন ফ্রেমওয়ার্ক ব্যবহার করে প্যারেন্ট ডকুমেন্ট রিট্রিভার ব্যবহার করার জন্য প্রয়োজনীয় লাইব্রেরি আমদানি করার কোড রয়েছে:

থেকে ল্যাংচেইন উদ্ধারকারী আমদানি প্যারেন্ট ডকুমেন্ট রিট্রিভার
থেকে ল্যাংচেইন ভেক্টর স্টোর আমদানি ক্রোমা
থেকে ল্যাংচেইন এমবেডিং আমদানি OpenAIEmbeddings
থেকে ল্যাংচেইন text_splitter আমদানি রিকার্সিভ ক্যারেক্টার টেক্সট স্প্লিটার
থেকে ল্যাংচেইন স্টোরেজ আমদানি ইনমেমোরিস্টোর
থেকে ল্যাংচেইন নথি_লোডার আমদানি টেক্সটলোডার

ফাইলের পাথ সহ TextLoader() পদ্ধতি ব্যবহার করে পুনরুদ্ধার তৈরি করতে নথিটি লোড করুন:

লোডার = [
টেক্সটলোডার ( 'Data.txt' ) ,
টেক্সটলোডার ( 'state_of_the_union.txt' ) ,
]
ডক্স = [ ]
জন্য l ভিতরে লোডার:

ধাপ 4: সম্পূর্ণ নথি পুনরুদ্ধার করা

একবার নথি/ফাইলগুলি মডেলে লোড হয়ে গেলে, কেবল নথিগুলির এমবেডিংগুলি তৈরি করুন এবং সেগুলিকে ভেক্টর স্টোরগুলিতে সংরক্ষণ করুন:

শিশু_বিভাজনকারী = রিকার্সিভ ক্যারেক্টার টেক্সট স্প্লিটার ( chunk_size = 400 )

ভেক্টর স্টোর = ক্রোমা (
সংগ্রহ_নাম = 'সম্পূর্ণ_নথিপত্র' ,
এমবেডিং_ফাংশন = OpenAIEmbeddings ( )
)

দোকান = ইনমেমোরিস্টোর ( )
উদ্ধারকারী = প্যারেন্ট ডকুমেন্ট রিট্রিভার (
ভেক্টর স্টোর = ভেক্টর স্টোর ,
ডাক্তারের দোকান = দোকান ,
শিশু_বিভাজনকারী = শিশু_বিভাজনকারী ,
)

এখন, নথিতে পুনরুদ্ধার করতে retriever ব্যবহার করে add_documents() পদ্ধতিতে কল করুন:

উদ্ধারকারী ডকুমেন্ট যোগ করুন ( ডক্স , আইডি = কোনোটিই নয় )

নিম্নলিখিত কোডটি আপলোড করা ফাইলগুলির জন্য ডাটাবেসে সংরক্ষিত নথিগুলির এমবেডিংগুলিকে বের করে:

তালিকা ( দোকান yield_keys ( ) )

নথিগুলির এমবেডিং পাওয়ার পরে, নথি থেকে ছোট অংশগুলি পেতে ক্যোয়ারী সহ মিলিততা_সার্চ() পদ্ধতিতে কল করুন:

সাব_ডক্স = ভেক্টর স্টোর মিল_অনুসন্ধান ( 'বিচার ব্রেয়ার' )

প্রশ্নের উপর ভিত্তি করে পূর্ববর্তী কোডে বলা অংশগুলি প্রদর্শন করতে print() পদ্ধতিতে কল করুন:

ছাপা ( সাব_ডক্স [ 0 ] . পৃষ্ঠা_সামগ্রী )

নিম্নলিখিত কোড ব্যবহার করে ডাটাবেসে সংরক্ষিত সমস্ত টোকেন পেতে retriever() ফাংশনটি সম্পূর্ণ করুন:

retrieved_docs = উদ্ধারকারী প্রাসঙ্গিক_নথিপত্র পান ( 'বিচার ব্রেয়ার' )

সমস্ত নথি মুদ্রণ করতে একটি বিশাল সময় এবং প্রক্রিয়াকরণ শক্তি লাগবে, তাই কেবল পূর্বে পুনরুদ্ধার করা নথির দৈর্ঘ্য পান:

কেবল ( retrieved_docs [ 0 ] . পৃষ্ঠা_সামগ্রী )

ধাপ 5: বড় অংশ পুনরুদ্ধার করা

এই পদক্ষেপটি পুরো নথি গ্রহণ করবে না; যাইহোক, এটি নথি থেকে একটি বড় চিপমাঙ্ক নেবে এবং এটি থেকে একটি ছোট অংশ পুনরুদ্ধার করবে:

parent_splitter = রিকার্সিভ ক্যারেক্টার টেক্সট স্প্লিটার ( chunk_size = 2000 )
শিশু_বিভাজনকারী = রিকার্সিভ ক্যারেক্টার টেক্সট স্প্লিটার ( chunk_size = 400 )
ভেক্টর স্টোর = ক্রোমা ( সংগ্রহ_নাম = 'বিভক্ত_পিতা' , এমবেডিং_ফাংশন = OpenAIEmbeddings ( ) )
দোকান = ইনমেমোরিস্টোর ( )

' ভেক্টর স্টোর পরিবর্তনশীল:

উদ্ধারকারী = প্যারেন্ট ডকুমেন্ট রিট্রিভার (
ভেক্টর স্টোর = ভেক্টর স্টোর ,
ডাক্তারের দোকান = দোকান ,
শিশু_বিভাজনকারী = শিশু_বিভাজনকারী ,
parent_splitter = parent_splitter ,
)

ভেক্টর স্টোরগুলি ব্যবহার করে বড় অংশগুলি পেতে উদ্ধারকারীকে কল করুন ডক্স ফাংশনের যুক্তিতে পরিবর্তনশীল:

উদ্ধারকারী ডকুমেন্ট যোগ করুন ( ডক্স )

থেকে এই নথির দৈর্ঘ্য পান ডক্স নীচের কমান্ডের মাধ্যমে পরিবর্তনশীল:

কেবল ( তালিকা ( দোকান yield_keys ( ) ) )

আগের স্ক্রিনশটটি দেখায় যে ভেক্টর স্টোরে 23টি নথি সংরক্ষণ করা হয়েছে বলে কেবল একটি বড় থেকে একটি ছোট খণ্ড পান৷ প্রশ্নটি ব্যবহার করে প্রাসঙ্গিক ডেটা পেতে ব্যবহৃত হয় মিল_অনুসন্ধান() ভেক্টর স্টোর থেকে ডেটা পুনরুদ্ধার করার পদ্ধতি:

সাব_ডক্স = ভেক্টর স্টোর মিল_অনুসন্ধান ( 'বিচার ব্রেয়ার' )

স্ক্রিনে প্রদর্শন করতে পূর্ববর্তী কোডে উল্লিখিত ক্যোয়ারী ব্যবহার করে ছোট খণ্ডগুলি প্রিন্ট করুন:

ছাপা ( সাব_ডক্স [ 0 ] . পৃষ্ঠা_সামগ্রী )

এখন, ফাংশনের আর্গুমেন্ট হিসাবে ক্যোয়ারী ব্যবহার করে ডাটাবেসে সংরক্ষিত সম্পূর্ণ ডেটাসেটে পুনরুদ্ধার ব্যবহার করুন:

retrieved_docs = উদ্ধারকারী প্রাসঙ্গিক_নথিপত্র পান ( 'বিচার ব্রেয়ার' )

ডাটাবেসে তৈরি এবং সংরক্ষিত সম্পূর্ণ অংশগুলির দৈর্ঘ্য পান:

কেবল ( retrieved_docs [ 0 ] . পৃষ্ঠা_সামগ্রী )

আমরা সমস্ত খণ্ডগুলি প্রদর্শন করতে পারি না, তবে সূচক নম্বর 0 সহ প্রথম খণ্ডটি নিম্নলিখিত কোড ব্যবহার করে প্রদর্শিত হয়:

ছাপা ( retrieved_docs [ 0 ] . পৃষ্ঠা_সামগ্রী

এটি ল্যাংচেইনে মূল নথি পুনরুদ্ধার ব্যবহার করার প্রক্রিয়া সম্পর্কে।

উপসংহার

LangChain-এ প্যারেন্ট ডকুমেন্ট রিট্রিভার ব্যবহার করতে, কেবল মডিউলগুলি ইনস্টল করুন এবং এর API কী ব্যবহার করে OpenAI পরিবেশ সেট আপ করুন। এর পরে, প্যারেন্ট ডকুমেন্ট রিট্রিভার ব্যবহার করার জন্য LangChain থেকে প্রয়োজনীয় লাইব্রেরিগুলি আমদানি করুন এবং তারপর মডেলের জন্য নথিগুলি লোড করুন৷ ব্যবহারকারী পুরো নথি বা বড় খণ্ড হিসাবে প্যারেন্ট ডকুমেন্ট ব্যবহার করতে পারেন এবং ক্যোয়ারী ব্যবহার করে একটি ছোট খণ্ড পেতে পারেন। এই পোস্টে LangChain-এ প্যারেন্ট ডকুমেন্ট রিট্রিভার ব্যবহার করার প্রক্রিয়া সম্পর্কে বিস্তারিত বলা হয়েছে।