सूचना की अधिकता के डिजिटल युग में, बड़े डेटासेट से कार्रवाई योग्य अंतर्दृष्टि निकालना पहले से कहीं अधिक महत्वपूर्ण है। हाल ही में, मैंने एक बड़ी चुनौती का समाधान करने के लिए रिट्रीवल-ऑगमेंटेड जेनरेशन (आरएजी) का लाभ उठाने की यात्रा शुरू की - मीटिंग नोट्स के विशाल संग्रह से सटीक उत्तर प्रदान करना। यह ब्लॉग उन बाधाओं, समाधानों और उपलब्धियों की पड़ताल करता है, जिन्होंने मेरी आरएजी-आधारित क्वेरी-उत्तर प्रणाली को असंरचित मीटिंग डेटा से अंतर्दृष्टि निकालने के लिए एक मजबूत उपकरण में बदल दिया।
समस्या विवरण: RAG के साथ प्रश्नों का उत्तर देने में चुनौतियाँ
प्राथमिक चुनौतियों में से एक मीटिंग नोट्स के विशाल भंडार के भीतर जटिल, इरादे-विशिष्ट प्रश्नों को संसाधित करने में सक्षम प्रणाली का निर्माण करना था। पारंपरिक RAG क्वेरी-उत्तर देने वाले मॉडल अक्सर अप्रासंगिक या अधूरी जानकारी लौटाते हैं, जो उपयोगकर्ता के इरादे को पकड़ने में विफल रहते हैं। विभिन्न क्वेरी प्रकारों के साथ संयुक्त मीटिंग डेटा की असंरचित प्रकृति के कारण अधिक परिष्कृत समाधान की आवश्यकता होती है।
प्रारंभिक दृष्टिकोण: प्रभावी क्वेरी उत्तर देने के लिए नींव रखना
मैंने पुनर्प्राप्ति और प्रतिक्रिया पीढ़ी को संयोजित करने के लिए डिज़ाइन किए गए एक मूलभूत आरएजी मॉडल के साथ शुरुआत की। उपयोग की गई दो प्रारंभिक तकनीकें थीं:
चंकिंग: बड़े दस्तावेज़ों को वाक्य सीमाओं के आधार पर छोटे खंडों में तोड़ने से खोज का दायरा कम करके पुनर्प्राप्ति में सुधार हुआ।
एंबेडिंग और वेक्टर स्टोरेज: चंकिंग के बाद, प्रत्येक सेगमेंट को वेक्टर डेटाबेस में एम्बेड और संग्रहीत किया गया था, जिससे कुशल खोज सक्षम हो सकी।
हालाँकि, इस सेटअप की सीमाएँ थीं। प्रारंभिक खंडन दृष्टिकोण के कारण अक्सर अप्रासंगिक जानकारी पुनर्प्राप्त हो जाती थी, और उत्पन्न उत्तरों में प्रत्येक प्रश्न के इरादे के साथ सटीकता और संरेखण का अभाव होता था।
बड़े पैमाने पर आरएजी क्वेरी का उत्तर देने में चुनौतियां
इन चुनौतियों ने RAG क्वेरी उत्तर देने में सटीकता में सुधार के लिए अधिक उन्नत दृष्टिकोण की आवश्यकता को रेखांकित किया।
उन्नत क्वेरी सटीकता के लिए उन्नत आरएजी तकनीक (समाधान)
इन मुद्दों के समाधान के लिए, मैंने कई उन्नत पद्धतियों को लागू किया, सिस्टम को पुनरावृत्तीय रूप से परिष्कृत किया:
सिमेंटिक चंकिंग
पारंपरिक चंकिंग के विपरीत, सिमेंटिक चंकिंग प्रत्येक खंड के भीतर अर्थ को प्राथमिकता देता है, पुनर्प्राप्त जानकारी को क्वेरी के इरादे के साथ संरेखित करके प्रासंगिकता बढ़ाता है।
from langchain_experimental.text_splitter import SemanticChunker from langchain_openai.embeddings import OpenAIEmbeddings from langchain.schema import Document # Initialize OpenAI Embeddings with API key openai_api_key = "" embedder = OpenAIEmbeddings(openai_api_key=openai_api_key) text_splitter = SemanticChunker(embedder) def prepare_docs_for_indexing(videos): all_docs = [] for video in videos: video_id = video.get('video_id') title = video.get('video_name') transcript_info = video.get('details', {}).get('transcript_info', {}) summary = video.get('details', {}).get('summary') created_at = transcript_info.get('created_at') # Getting the created_at timestamp # Get the full transcription text transcription_text = transcript_info.get('transcription_text', '') # Create documents using semantic chunking docs = text_splitter.create_documents([transcription_text]) for doc in docs: # Add metadata to each document doc.metadata = { "created_at": created_at, "title": title, "video_id": video_id, "summary": summary } all_docs.append(doc) return all_docs docs = prepare_docs_for_indexing(videos) # Output the created documents for doc in docs: print("____________") print(doc.page_content)
अधिकतम मार्जिन पुनर्प्राप्ति
इस पद्धति ने प्रासंगिक और अप्रासंगिक डेटा के बीच अंतर करके पुनर्प्राप्ति परिशुद्धता में सुधार किया, यह सुनिश्चित किया कि केवल सबसे अच्छे मिलान वाले डेटा खंड ही पुनर्प्राप्त किए गए थे।
लैम्ब्डा स्कोरिंग
लैम्ब्डा स्कोरिंग का उपयोग करके, मैं प्रासंगिकता के आधार पर परिणामों को रैंक कर सकता हूं, बेहतर उत्तर गुणवत्ता के लिए क्वेरी इरादे के साथ अधिक निकटता से संरेखित प्रतिक्रियाओं को प्राथमिकता दे सकता हूं।
from langchain_community.vectorstores import OpenSearchVectorSearch from langchain_openai import OpenAIEmbeddings embeddings = OpenAIEmbeddings() docsearch = OpenSearchVectorSearch.from_documents( docs, embeddings, opensearch_url="http://localhost:9200" ) query = "your query" docs = docsearch.max_marginal_relevance_search(query, k=2, fetch_k=10, lambda_param=0.25)
मल्टी-क्वेरी और आरएजी फ़्यूज़न
जटिल प्रश्नों के लिए, सिस्टम कई उप-प्रश्न उत्पन्न करता है। RAG फ़्यूज़न फिर विविध उत्तरों को एक एकल, सामंजस्यपूर्ण प्रतिक्रिया में एकीकृत करता है, प्रतिक्रिया की गुणवत्ता बढ़ाता है और त्रुटि को कम करता है।
def generate_multi_queries(question: str): # Template to generate multiple queries template = """You are an AI language model assistant. Your task is to generate five different versions of the given user question to retrieve relevant documents from a vector database. By generating multiple perspectives on the user question, your goal is to help the user overcome some of the limitations of the distance-based similarity search. Provide these alternative questions separated by newlines. Original question: {question}""" # Creating a prompt template for query generation prompt_perspectives = ChatPromptTemplate.from_template(template) # Generate the queries using ChatOpenAI and output parser generate_queries = ( prompt_perspectives | ChatOpenAI(temperature=0, openai_api_key=openai_api_key) | StrOutputParser() | (lambda x: x.split("\n")) ) # Invoke the chain to generate queries multi_queries = generate_queries.invoke({"question": question}) return multi_queries
def reciprocal_rank_fusion(results: list[list], k=60): """Applies Reciprocal Rank Fusion (RRF) to fuse ranked document lists.""" fused_scores = {} for docs in results: for rank, doc in enumerate(docs): doc_str = dumps(doc) # Convert to a serializable format if doc_str not in fused_scores: fused_scores[doc_str] = 0 fused_scores[doc_str] = 1 / (rank k) # RRF formula # Sort documents by the fused score reranked_results = [ (loads(doc), score) for doc, score in sorted(fused_scores.items(), key=lambda x: x[1], reverse=True) ] return reranked_result
उन्नत अनुक्रमण और अनुकूलित वेक्टर खोज
अनुक्रमण तंत्र में सुधार और वेक्टर खोज मापदंडों को परिष्कृत करने से पुनर्प्राप्ति तेज और अधिक सटीक हो गई, खासकर बड़े डेटासेट के लिए।
परिणाम: आरएजी क्वेरी उत्तर देने में प्रमुख उपलब्धियां
इन तकनीकों को लागू करने से महत्वपूर्ण सुधार हुए:
मुख्य तथ्य और सीखे गए सबक
इस यात्रा के माध्यम से, मैंने कई मुख्य अंतर्दृष्टि की पहचान की:
निष्कर्ष: आरएजी-आधारित सिस्टम के लिए भविष्य की संभावनाएं
उन्नत तकनीकों के साथ आरएजी मॉडल को बढ़ाने से जटिल, सूक्ष्म प्रश्नों का उत्तर देने के लिए एक सरल पुनर्प्राप्ति प्रणाली को एक शक्तिशाली उपकरण में बदल दिया गया। आगे देखते हुए, मेरा लक्ष्य वास्तविक समय सीखने की क्षमताओं को शामिल करना है, जिससे सिस्टम गतिशील रूप से नए डेटा के अनुकूल हो सके। इस अनुभव ने मेरे तकनीकी कौशल को गहरा किया और डेटा पुनर्प्राप्ति प्रणालियों में लचीलेपन, अर्थ संबंधी फोकस और पुनरावृत्तीय सुधार के महत्व पर प्रकाश डाला।
अंतिम विचार: उन्नत आरएजी सिस्टम लागू करने के लिए एक गाइड
आरएजी चुनौतियों पर काबू पाने में अपने अनुभव को साझा करके, मैं इसी तरह के समाधानों को लागू करने के लिए एक गाइड पेश करने की उम्मीद करता हूं। पुनरावृत्तीय परिशोधन के साथ संयुक्त रणनीतिक तकनीकों ने न केवल तात्कालिक मुद्दों का समाधान किया, बल्कि क्वेरी-उत्तर देने वाली प्रणालियों में भविष्य की प्रगति के लिए एक मजबूत नींव भी रखी।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3