अपने स्वयं के डेटा का उपयोग करके संक्षेपण और प्रश्न उत्तर देने के लिए एक जेनरेटिव एआई फाउंडेशन मॉडल का उपयोग करें अमेज़न वेब सेवाएँ

अपने स्वयं के डेटा का उपयोग करके संक्षेपण और प्रश्न उत्तर देने के लिए एक जेनरेटिव एआई फाउंडेशन मॉडल का उपयोग करें अमेज़न वेब सेवाएँ

बड़े भाषा मॉडल (एलएलएम) का उपयोग जटिल दस्तावेजों का विश्लेषण करने और प्रश्नों के सारांश और उत्तर प्रदान करने के लिए किया जा सकता है। पोस्ट अमेज़ॅन सैजमेकर जम्पस्टार्ट में वित्तीय डेटा पर डोमेन-अनुकूलन फाउंडेशन मॉडल की फाइन-ट्यूनिंग वर्णन करता है कि अपने स्वयं के डेटासेट का उपयोग करके एलएलएम को कैसे बेहतर बनाया जाए। एक बार जब आपके पास एक ठोस एलएलएम हो, तो आप नए दस्तावेजों को संसाधित करने के लिए उस एलएलएम को व्यावसायिक उपयोगकर्ताओं के सामने उजागर करना चाहेंगे, जो सैकड़ों पेज लंबा हो सकता है। इस पोस्ट में, हम प्रदर्शित करते हैं कि व्यावसायिक उपयोगकर्ताओं को मनमानी लंबाई के पीडीएफ दस्तावेज़ को संसाधित करने देने के लिए वास्तविक समय उपयोगकर्ता इंटरफ़ेस का निर्माण कैसे किया जाए। एक बार फ़ाइल संसाधित हो जाने पर, आप दस्तावेज़ का सारांश प्रस्तुत कर सकते हैं या सामग्री के बारे में प्रश्न पूछ सकते हैं। इस पोस्ट में वर्णित नमूना समाधान यहां उपलब्ध है GitHub.

वित्तीय दस्तावेज़ों के साथ कार्य करना

त्रैमासिक आय रिपोर्ट और शेयरधारकों को वार्षिक रिपोर्ट जैसे वित्तीय विवरण अक्सर दसियों या सैकड़ों पृष्ठों लंबे होते हैं। इन दस्तावेज़ों में अस्वीकरण और कानूनी भाषा जैसी बहुत सारी बॉयलरप्लेट भाषा शामिल है। यदि आप इनमें से किसी दस्तावेज़ से मुख्य डेटा बिंदु निकालना चाहते हैं, तो आपको समय और बॉयलरप्लेट भाषा से कुछ परिचित होने की आवश्यकता है ताकि आप दिलचस्प तथ्यों की पहचान कर सकें। और निःसंदेह, आप एलएलएम से किसी ऐसे दस्तावेज़ के बारे में प्रश्न नहीं पूछ सकते जिसे उसने कभी नहीं देखा हो।

संक्षेपण के लिए उपयोग किए जाने वाले एलएलएम में मॉडल में पारित टोकन (वर्ण) की संख्या की एक सीमा होती है, और कुछ अपवादों के साथ, ये आम तौर पर कुछ हज़ार टोकन से अधिक नहीं होते हैं। यह आम तौर पर लंबे दस्तावेज़ों को सारांशित करने की क्षमता को रोकता है।

हमारा समाधान एलएलएम की अधिकतम टोकन अनुक्रम लंबाई से अधिक दस्तावेज़ों को संभालता है, और उस दस्तावेज़ को प्रश्न उत्तर के लिए एलएलएम को उपलब्ध कराता है।

समाधान अवलोकन

हमारे डिज़ाइन में तीन महत्वपूर्ण भाग हैं:

  • इसमें व्यावसायिक उपयोगकर्ताओं के लिए पीडीएफ़ अपलोड करने और संसाधित करने के लिए एक इंटरैक्टिव वेब एप्लिकेशन है
  • यह एक बड़े पीडीएफ को अधिक प्रबंधनीय खंडों में विभाजित करने के लिए लैंगचैन लाइब्रेरी का उपयोग करता है
  • यह पुनर्प्राप्ति संवर्धित पीढ़ी तकनीक का उपयोग करता है ताकि उपयोगकर्ता नए डेटा के बारे में प्रश्न पूछ सकें जो एलएलएम ने पहले नहीं देखा है

जैसा कि निम्नलिखित चित्र में दिखाया गया है, हम रिएक्ट जावास्क्रिप्ट के साथ कार्यान्वित फ्रंट एंड का उपयोग करते हैं अमेज़न सरल भंडारण सेवा (अमेज़ॅन S3) बाल्टी सामने है अमेज़न CloudFront. फ्रंट-एंड एप्लिकेशन उपयोगकर्ताओं को Amazon S3 पर PDF दस्तावेज़ अपलोड करने देता है। अपलोड पूरा होने के बाद, आप संचालित टेक्स्ट निष्कर्षण कार्य को ट्रिगर कर सकते हैं अमेज़न टेक्सट्रेक. पोस्ट-प्रोसेसिंग के भाग के रूप में, ए AWS लाम्बा फ़ंक्शन पृष्ठ सीमाओं को इंगित करने वाले पाठ में विशेष मार्कर सम्मिलित करता है। जब वह काम पूरा हो जाता है, तो आप एक एपीआई लागू कर सकते हैं जो पाठ का सारांश प्रस्तुत करता है या इसके बारे में सवालों के जवाब देता है।

Use a generative AI foundation model for summarization and question answering using your own data | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

क्योंकि इनमें से कुछ चरणों में कुछ समय लग सकता है, आर्किटेक्चर एक डिकॉउल्ड एसिंक्रोनस दृष्टिकोण का उपयोग करता है। उदाहरण के लिए, किसी दस्तावेज़ को सारांशित करने के लिए कॉल एक लैम्ब्डा फ़ंक्शन को आमंत्रित करता है जो एक संदेश पोस्ट करता है अमेज़ॅन सरल कतार सेवा (अमेज़ॅन एसक्यूएस) कतार। एक अन्य लैम्ब्डा फ़ंक्शन उस संदेश को उठाता है और प्रारंभ करता है अमेज़ॅन इलास्टिक कंटेनर सेवा (अमेज़न ईसीएस) AWS फरगेट काम। फ़ार्गेट कार्य कॉल करता है अमेज़न SageMaker अनुमान समापन बिंदु. हम यहां फ़ार्गेट कार्य का उपयोग करते हैं क्योंकि एक बहुत लंबे पीडीएफ को सारांशित करने में उपलब्ध लैम्ब्डा फ़ंक्शन की तुलना में अधिक समय और मेमोरी लग सकती है। जब सारांश तैयार हो जाता है, तो फ्रंट-एंड एप्लिकेशन परिणाम प्राप्त कर सकता है अमेज़ॅन डायनेमोडीबी तालिका.

संक्षेपण के लिए, हम AI21 के सारांश मॉडल का उपयोग करते हैं, जो उपलब्ध मूलभूत मॉडलों में से एक है अमेज़न SageMaker जम्पस्टार्ट. हालाँकि यह मॉडल 10,000 शब्दों (लगभग 40 पृष्ठ) तक के दस्तावेज़ों को संभालता है, हम यह सुनिश्चित करने के लिए लैंगचैन के टेक्स्ट स्प्लिटर का उपयोग करते हैं कि एलएलएम के लिए प्रत्येक सारांश कॉल 10,000 शब्दों से अधिक लंबा नहीं है। टेक्स्ट जनरेशन के लिए, हम कोहेयर के मीडियम मॉडल का उपयोग करते हैं, और हम जंपस्टार्ट के माध्यम से एम्बेडिंग के लिए जीपीटी-जे का उपयोग करते हैं।

सारांशीकरण प्रसंस्करण

बड़े दस्तावेज़ों को संभालते समय, हमें यह परिभाषित करने की आवश्यकता है कि दस्तावेज़ को छोटे टुकड़ों में कैसे विभाजित किया जाए। जब हमें अमेज़ॅन टेक्स्टट्रैक्ट से टेक्स्ट निष्कर्षण परिणाम वापस मिलते हैं, तो हम टेक्स्ट के बड़े हिस्से (पेजों की कॉन्फ़िगर करने योग्य संख्या), व्यक्तिगत पेज और लाइन ब्रेक के लिए मार्कर डालते हैं। लैंगचैन उन मार्करों के आधार पर विभाजित होगा और छोटे दस्तावेज़ों को इकट्ठा करेगा जो टोकन सीमा के अंतर्गत हैं। निम्नलिखित कोड देखें:

text_splitter = RecursiveCharacterTextSplitter( separators = ["<CHUNK>", "<PAGE>", "n"], chunk_size = int(chunk_size), chunk_overlap = int(chunk_overlap)) with open(local_path) as f: doc = f.read() texts = text_splitter.split_text(doc) print(f"Number of splits: {len(texts)}") llm = SageMakerLLM(endpoint_name = endpoint_name) responses = [] for t in texts: r = llm(t) responses.append(r) summary = "n".join(responses)

सारांश श्रृंखला में एलएलएम हमारे सेजमेकर एंडपॉइंट के चारों ओर एक पतला आवरण है:

class SageMakerLLM(LLM): endpoint_name: str @property
def _llm_type(self) -> str: return "summarize" def _call(self, prompt: str, stop: Optional[List[str]] = None) -> str: response = ai21.Summarize.execute( source=prompt, sourceType="TEXT", sm_endpoint=self.endpoint_name ) return response.summary 

सवाल जवाब

पुनर्प्राप्ति संवर्धित पीढ़ी विधि में, हम पहले दस्तावेज़ को छोटे खंडों में विभाजित करते हैं। हम प्रत्येक सेगमेंट के लिए एम्बेडिंग बनाते हैं और उन्हें लैंगचैन के इंटरफ़ेस के माध्यम से ओपन-सोर्स क्रोमा वेक्टर डेटाबेस में संग्रहीत करते हैं। हम डेटाबेस को एक में सहेजते हैं अमेज़ॅन इलास्टिक फ़ाइल सिस्टम (अमेज़ॅन ईएफएस) फ़ाइल सिस्टम बाद में उपयोग के लिए। निम्नलिखित कोड देखें:

documents = loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size = 500, chunk_overlap = 0)
texts = text_splitter.split_documents(documents)
print(f"Number of splits: {len(texts)}") embeddings = SMEndpointEmbeddings( endpoint_name=endpoint_name,
)
vectordb = Chroma.from_documents(texts, embeddings, persist_directory=persist_directory)
vectordb.persist()

जब एम्बेडिंग तैयार हो जाती है, तो उपयोगकर्ता एक प्रश्न पूछ सकता है। हम टेक्स्ट के उन हिस्सों के लिए वेक्टर डेटाबेस खोजते हैं जो प्रश्न से सबसे अधिक मेल खाते हैं:

embeddings = SMEndpointEmbeddings( endpoint_name=endpoint_embed
)
vectordb = Chroma(persist_directory=persist_directory, embedding_function=embeddings)
docs = vectordb.similarity_search_with_score(question)

हम निकटतम मिलान खंड लेते हैं और प्रश्न का उत्तर देने के लिए इसे टेक्स्ट जनरेशन मॉडल के संदर्भ के रूप में उपयोग करते हैं:

cohere_client = Client(endpoint_name=endpoint_qa)
context = docs[high_score_idx][0].page_content.replace("n", "")
qa_prompt = f'Context={context}nQuestion={question}nAnswer='
response = cohere_client.generate(prompt=qa_prompt, max_tokens=512, temperature=0.25, return_likelihoods='GENERATION')
answer = response.generations[0].text.strip().replace('n', '')

प्रयोक्ता अनुभव

यद्यपि एलएलएम उन्नत डेटा विज्ञान का प्रतिनिधित्व करते हैं, एलएलएम के अधिकांश उपयोग के मामलों में अंततः गैर-तकनीकी उपयोगकर्ताओं के साथ बातचीत शामिल होती है। हमारा उदाहरण वेब एप्लिकेशन एक इंटरैक्टिव उपयोग के मामले को संभालता है जहां व्यावसायिक उपयोगकर्ता एक नया पीडीएफ दस्तावेज़ अपलोड और संसाधित कर सकते हैं।

निम्नलिखित चित्र उपयोगकर्ता इंटरफ़ेस दिखाता है. एक उपयोगकर्ता पीडीएफ अपलोड करके शुरुआत करता है। दस्तावेज़ को Amazon S3 में संग्रहीत करने के बाद, उपयोगकर्ता टेक्स्ट निष्कर्षण कार्य शुरू करने में सक्षम है। जब यह पूरा हो जाता है, तो उपयोगकर्ता सारांशीकरण कार्य शुरू कर सकता है या प्रश्न पूछ सकता है। उपयोगकर्ता इंटरफ़ेस चंक आकार और चंक ओवरलैप जैसे कुछ उन्नत विकल्पों को उजागर करता है, जो उन्नत उपयोगकर्ताओं के लिए उपयोगी होगा जो नए दस्तावेज़ों पर एप्लिकेशन का परीक्षण कर रहे हैं।

यूजर इंटरफेस

अगले चरण

एलएलएम महत्वपूर्ण नई सूचना पुनर्प्राप्ति क्षमताएं प्रदान करते हैं। व्यावसायिक उपयोगकर्ताओं को उन क्षमताओं तक सुविधाजनक पहुंच की आवश्यकता है। भविष्य के कार्य के लिए दो दिशाएँ हैं जिन पर विचार किया जाना चाहिए:

  • जम्पस्टार्ट फाउंडेशन मॉडल में पहले से ही उपलब्ध शक्तिशाली एलएलएम का लाभ उठाएं। कोड की केवल कुछ पंक्तियों के साथ, हमारा नमूना एप्लिकेशन टेक्स्ट सारांश और निर्माण के लिए AI21 और Cohere से उन्नत एलएलएम को तैनात और उपयोग कर सकता है।
  • इन क्षमताओं को गैर-तकनीकी उपयोगकर्ताओं के लिए सुलभ बनाएं। पीडीएफ दस्तावेज़ों को संसाधित करने के लिए एक शर्त दस्तावेज़ से पाठ निकालना है, और सारांशीकरण कार्यों को चलाने में कई मिनट लग सकते हैं। इसके लिए एसिंक्रोनस बैकएंड प्रोसेसिंग क्षमताओं के साथ एक सरल उपयोगकर्ता इंटरफ़ेस की आवश्यकता होती है, जिसे लैम्ब्डा और फ़ार्गेट जैसी क्लाउड-नेटिव सेवाओं का उपयोग करके डिज़ाइन करना आसान है।

हम यह भी ध्यान देते हैं कि एक पीडीएफ दस्तावेज़ अर्ध-संरचित जानकारी है। अनुभाग शीर्षकों जैसे महत्वपूर्ण संकेतों को प्रोग्रामेटिक रूप से पहचानना मुश्किल है, क्योंकि वे फ़ॉन्ट आकार और अन्य दृश्य संकेतकों पर निर्भर करते हैं। जानकारी की अंतर्निहित संरचना की पहचान करने से एलएलएम को डेटा को अधिक सटीक रूप से संसाधित करने में मदद मिलती है, कम से कम उस समय तक जब तक एलएलएम असीमित लंबाई के इनपुट को संभाल नहीं सकता।

निष्कर्ष

इस पोस्ट में, हमने दिखाया कि एक इंटरैक्टिव वेब एप्लिकेशन कैसे बनाया जाए जो व्यावसायिक उपयोगकर्ताओं को सारांश और प्रश्न उत्तर के लिए पीडीएफ दस्तावेजों को अपलोड और संसाधित करने की सुविधा देता है। हमने देखा कि उन्नत एलएलएम तक पहुंचने के लिए जम्पस्टार्ट फाउंडेशन मॉडल का लाभ कैसे उठाया जाए, और लंबे दस्तावेजों को संसाधित करने और उन्हें एलएलएम के लिए जानकारी के रूप में उपलब्ध कराने के लिए टेक्स्ट स्प्लिटिंग और पुनर्प्राप्ति संवर्धित पीढ़ी तकनीकों का उपयोग किया जाए।

इस समय, इन शक्तिशाली क्षमताओं को आपके उपयोगकर्ताओं के लिए उपलब्ध न कराने का कोई कारण नहीं है। हम आपको इसका उपयोग शुरू करने के लिए प्रोत्साहित करते हैं जम्पस्टार्ट फाउंडेशन मॉडल आज।


लेखक के बारे में

लेखक चित्ररैंडी डेफॉउ AWS में वरिष्ठ प्रिंसिपल सॉल्यूशंस आर्किटेक्ट हैं। उनके पास मिशिगन विश्वविद्यालय से एमएसईई है, जहां उन्होंने स्वायत्त वाहनों के लिए कंप्यूटर विज़न पर काम किया। उन्होंने कोलोराडो स्टेट यूनिवर्सिटी से एमबीए भी किया है। रैंडी ने प्रौद्योगिकी क्षेत्र में सॉफ्टवेयर इंजीनियरिंग से लेकर उत्पाद प्रबंधन तक विभिन्न पदों पर काम किया है। 2013 में बिग डेटा क्षेत्र में प्रवेश किया और उस क्षेत्र का पता लगाना जारी रखा। वह एमएल क्षेत्र में परियोजनाओं पर सक्रिय रूप से काम कर रहे हैं और उन्होंने स्ट्रेटा और ग्लूकॉन सहित कई सम्मेलनों में प्रस्तुति दी है।

समय टिकट:

से अधिक AWS मशीन लर्निंग

अमेज़ॅन सेजमेकर ग्राउंड ट्रुथ प्लस के साथ उच्च गुणवत्ता वाले प्रशिक्षण डेटासेट बनाने के लिए एक दृश्य, कोई कोड टूल के साथ अपने डेटा लेबल का निरीक्षण करें

स्रोत नोड: 1554833
समय टिकट: जून 27, 2022