व्यक्तिगत, एजेंट सहायक: एक सुरक्षित, बहु-उपयोगकर्ता, स्व-होस्टेड चैटबॉट के लिए एक व्यावहारिक खाका
Latest Technology, (लेटेस्ट टेक न्यूज़) Gadget (गैजेट्स) …
कैसे मैंने एक स्व-होस्टेड, एंड-टू-एंड प्लेटफ़ॉर्म बनाया है जो प्रत्येक उपयोगकर्ता को एक व्यक्तिगत, एजेंटिक चैटबॉट देता है जो स्वायत्त रूप से केवल उन फ़ाइलों को खोज सकता है जिन्हें उपयोगकर्ता स्पष्ट रूप से एक्सेस करने की अनुमति देता है।
दूसरे शब्दों में: पूर्ण नियंत्रण, 100% निजी, गोपनीयता लीक, टोकन लागत या बाहरी निर्भरता के बिना एलएलएम के सभी लाभ।
पहचान
पिछले सप्ताह में, मैंने खुद को कुछ ऐसा बनाने की चुनौती दी जो कुछ समय से मेरे दिमाग में है:
मैं बड़ी तकनीकी कंपनियों की गोपनीयता का त्याग किए बिना अपने व्यक्तिगत डेटा के साथ एलएलएम को कैसे सुपरचार्ज कर सकता हूं?
इससे इस सप्ताह की चुनौती उत्पन्न हुई:
गोपनीयता से समझौता किए बिना, उपयोगकर्ता के व्यक्तिगत नोट्स तक सुरक्षित रूप से पहुंचने के लिए टूल से लैस एक एजेंटिक चैटबॉट बनाएं।
एक अतिरिक्त चुनौती के रूप में, मैं चाहता था कि सिस्टम एकाधिक उपयोगकर्ताओं का समर्थन करे। एक साझा सहायक नहीं बल्कि एक प्रत्येक उपयोगकर्ता के लिए निजी एजेंट जहां उपयोगकर्ता का इस पर पूरा नियंत्रण होता है कि उनका एजेंट किन फाइलों को पढ़ सकता है और उनके बारे में तर्क कर सकता है।
हम निम्नलिखित चरणों में सिस्टम का निर्माण करेंगे:
- वास्तुकला
- हम एक एजेंट कैसे बनाते हैं और उसे उपकरण कैसे प्रदान करते हैं?
- प्रवाह 1: उपयोगकर्ता फ़ाइल प्रबंधन: जब हम कोई फ़ाइल सबमिट करते हैं तो क्या होता है?
- प्रवाह 2: हम दस्तावेज़ों को कैसे एम्बेड करते हैं और फ़ाइलों को संग्रहीत कैसे करते हैं?
- प्रवाह 3: जब हम अपने एजेंट सहायक से चैट करते हैं तो क्या होता है?
- प्रदर्शन
1)वास्तुकला
मैंने तीन मुख्य “प्रवाह” परिभाषित किए हैं जिनकी सिस्टम को अनुमति होनी चाहिए:
ए) उपयोगकर्ता फ़ाइल प्रबंधन
उपयोगकर्ता फ्रंटएंड के माध्यम से प्रमाणित करते हैं, फ़ाइलें अपलोड करते हैं या हटाते हैं और प्रत्येक फ़ाइल को विशिष्ट समूहों को सौंपते हैं जो यह निर्धारित करते हैं कि कौन से उपयोगकर्ता के एजेंट उस तक पहुंच सकते हैं।
बी) फाइलों को एंबेड करना और संग्रहीत करना
अपलोड की गई फ़ाइलों को डेटाबेस में खंडित, एम्बेडेड और संग्रहीत किया जाता है ताकि यह सुनिश्चित हो सके कि केवल अधिकृत उपयोग ही उन एम्बेडिंग को पुनर्प्राप्त या खोज सकें।
सी) चैट करें
एक उपयोगकर्ता अपने एजेंट से चैट करता है. एजेंट उपकरणों से सुसज्जित है, जिनमें शामिल हैं: सिमेंटिक वेक्टर-खोज उपकरणऔर केवल उन दस्तावेज़ों को खोज सकता है जिन्हें उपयोगकर्ता के पास एक्सेस करने की अनुमति है।
इन प्रवाहों का समर्थन करने के लिए, सिस्टम छह प्रमुख घटकों से बना है:

अनुप्रयोग
एक पायथन एप्लिकेशन जो सिस्टम का दिल है। यह फ्रंट-एंड के लिए एपीआई एंडपॉइंट्स को उजागर करता है और MessageQueue से आने वाले संदेशों को सुनता है
फ़्रंट एंड
आम तौर पर मैं एंगुलर का उपयोग करता हूं लेकिन इस प्रोटोटाइप के लिए मैंने स्ट्रीमलाइट का उपयोग किया। इसे बनाना बहुत तेज़ और आसान था। निःसंदेह उपयोग में यह आसानी मेरे इच्छित हर चीज़ को पूरा न कर पाने के नकारात्मक पहलू के साथ आई। मैं इस घटक को अपने पसंदीदा एंग्लुअर से बदलने की योजना बना रहा हूं, लेकिन मेरी राय में प्रोटोटाइप के लिए स्ट्रीमलाइट बहुत अच्छा था
ब्लॉब भंडारण
यह कंटेनर मिनियो चलाता है; एक खुला-स्रोत, उच्च-प्रदर्शन, वितरित वस्तु भंडारण प्रणाली। निश्चित रूप से मेरे प्रोटोटाइप के लिए यह बहुत अधिक था, लेकिन इसका उपयोग करना बहुत आसान था और यह पायथन के साथ अच्छी तरह से एकीकृत था, इसलिए मुझे कोई पछतावा नहीं है।
(वेक्टर) डेटाबेस
पोस्टग्रेज़ दस्तावेज़ मेटा-डेटा, उपयोगकर्ता, उपयोगकर्ता समूह और टेक्स्ट-खंड जैसे सभी संबंधपरक डेटा को संभालता है। इसके अतिरिक्त पोस्टग्रेज एक एक्सटेंशन प्रदान करता है जिसका उपयोग मैं वेक्टर-डेटा को सहेजने के लिए करता हूं जैसे कि एम्बेडिंग जिसे हम बनाना चाहते हैं। यह मेरे उपयोग-मामले के लिए बहुत सुविधाजनक है क्योंकि मैं किसी तालिका पर वेक्टर-खोज की अनुमति दे सकता हूं, उस तालिका को उपयोगकर्ता-तालिका में जोड़ सकता हूं, यह सुनिश्चित कर सकता हूं कि प्रत्येक उपयोगकर्ता केवल अपना डेटा देख सकता है।
ओलामा
ओलामा दो स्थानीय मॉडलों की मेजबानी करता है: एक के लिए एम्बेडिंग और एक के लिए बात करना. मॉडल काफी हल्के हैं लेकिन उपलब्ध हार्डवेयर के आधार पर इन्हें आसानी से अपग्रेड किया जा सकता है।
संदेश कतार
RabbitMQ सिस्टम को उत्तरदायी बनाता है। बड़ी फ़ाइलों को खंडित और एम्बेड करने के लिए उपयोगकर्ताओं को प्रतीक्षा करने की आवश्यकता नहीं है। इसके बजाय, मैं तुरंत लौटता हूं और पृष्ठभूमि में एम्बेडिंग की प्रक्रिया करता हूं। यह मुझे क्षैतिज मापनीयता भी देता है: कई कर्मचारी एक साथ फ़ाइलों को संसाधित कर सकते हैं।
2) टूलबॉक्स के साथ एक एजेंट बनाना
लैंगग्राफ एक एजेंट को परिभाषित करना आसान बनाता है: यह क्या कदम उठा सकता है, इसे कैसे तर्क करना चाहिए और इसे किस उपकरण का उपयोग करने की अनुमति है। यह एजेंट तब स्वायत्त रूप से उपलब्ध टूल का निरीक्षण कर सकता है, उनके विवरण पढ़ सकता है और निर्णय ले सकता है कि उनमें से किसी एक को कॉल करने से उपयोगकर्ता के प्रश्न का उत्तर देने में मदद मिलेगी या नहीं।
वर्कफ़्लो को एक ग्राफ़ के रूप में वर्णित किया गया है। इसे एजेंट के व्यवहार का खाका समझें। इस प्रोटोटाइप में ग्राफ जानबूझकर सरल है:

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

ऊपर स्क्रीनशॉट में उपयोगकर्ता ने दो फ़ाइलें चुनीं; एक पीडीएफ और एक वर्ड दस्तावेज़, और उन्हें दो समूहों को सौंपता है। पर्दे के पीछे, सिस्टम किसी अपलोड को इस प्रकार संसाधित करता है:

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

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

जब कोई उपयोगकर्ता कोई संदेश टाइप करता है, तो सिस्टम तेज़ और संदर्भ-जागरूक प्रतिक्रिया देने के लिए पर्दे के पीछे कई चरणों का आयोजन करता है:
- उपयोगकर्ता एपीआई को एक संकेत भेजता है और प्रमाणित किया जाता है क्योंकि केवल अधिकृत उपयोगकर्ता ही अपने निजी एजेंट के साथ बातचीत कर सकते हैं।
- ऐप वैकल्पिक रूप से पिछले संदेशों को पुनः प्राप्त करता है ताकि एजेंट के पास वर्तमान वार्तालाप की “मेमोरी” हो। यह सुनिश्चित करता है कि यह चल रही बातचीत के संदर्भ में प्रतिक्रिया दे सकता है।
- संकलित लैंगग्राफ एजेंट को लागू किया गया है।
- एलएलएम, (ओलामा में चल रहा है) कारण और वैकल्पिक रूप से टूल का उपयोग करता है। यदि आवश्यक हो, तो यह वेक्टर-सर्च टूल को कॉल करता है जिसे हमने ग्राफ़ में परिभाषित किया है, ताकि उपयोगकर्ता को प्रासंगिक दस्तावेज़ खंडों को ढूंढने की अनुमति मिल सके।
फिर एजेंट उन निष्कर्षों को अपने तर्क में शामिल करता है और निर्णय लेता है कि उसके पास पर्याप्त प्रतिक्रिया देने के लिए पर्याप्त जानकारी है या नहीं। - एजेंट का उत्तर क्रमिक रूप से उत्पन्न होता है और एक सहज, वास्तविक समय चैट अनुभव के लिए उपयोगकर्ता को वापस स्ट्रीम किया जाता है।
इस बिंदु पर, उपयोगकर्ता अपने निजी, पूरी तरह से स्थानीय एजेंट के साथ चैट कर रहा है जो उनके व्यक्तिगत नोट्स के माध्यम से शब्दार्थ खोज करने की क्षमता से लैस है।
6) प्रदर्शन
आइए देखें कि व्यवहार में यह कैसा दिखता है।
मैंने निम्नलिखित सामग्री के साथ एक वर्ड दस्तावेज़ अपलोड किया है:
Notes On the 21st of November I spoke with a guy named “Gert Vektorman” that turned out to be a developer at a Groningen company called “super data solutions”. Turns out that he was very interested in implementing agentic RAG at his company. We’ve agreed to meet some time at the end of december. Edit: I’ve asked Gert what his favorite programming language was; he like using Python Edit: we’ve met and agreed to create a test implementation. We’ll call this project “project greenfield”मैं फ्रंट-एंड पर जाऊंगा और इस फ़ाइल को अपलोड करूंगा।

अपलोड करने के बाद, मैं फ्रंट-एंड में देख सकता हूं कि:
- दस्तावेज़ डेटाबेस में संग्रहीत है
- इसे एम्बेड किया गया है
- मेरे एजेंट के पास इस तक पहुंच है
अब, चलो चैट करें।

जैसा कि आप देख सकते हैं, एजेंट हमारी फ़ाइल से जानकारी के साथ प्रतिक्रिया देने में सक्षम है। यह आश्चर्यजनक रूप से तेज़ भी है; इस प्रश्न का उत्तर कुछ ही सेकंड में दिया गया।
निष्कर्ष
मुझे ऐसी चुनौतियाँ पसंद हैं जो मुझे नई तकनीक के साथ प्रयोग करने और डेटाबेस से लेकर एजेंट ग्राफ़ और फ्रंट-एंड से लेकर डॉकर छवियों तक पूरे स्टैक पर काम करने की अनुमति देती हैं। सिस्टम को डिज़ाइन करना और एक कार्यशील आर्किटेक्चर चुनना एक ऐसी चीज़ है जिसका मैं हमेशा आनंद लेता हूँ। यह मुझे हमारे लक्ष्यों को आवश्यकताओं, प्रवाह, वास्तुकला, घटकों, कोड और अंततः एक कार्यशील उत्पाद में बदलने की अनुमति देता है।
इस सप्ताह की चुनौती बिल्कुल यही थी: निजी, बहु-उपयोगकर्ता, एजेंटिक आरएजी की खोज और प्रयोग करना। मैंने एक कार्यशील, विस्तार योग्य, पुन: प्रयोज्य, स्केलेबल प्रोटोटाइप बनाया है जिसे भविष्य में बेहतर बनाया जा सकता है। अधिकांश मैंने पाया है कि स्थानीय, 100% निजी, एजेंटिक एलएलएम संभव है।
तकनीकी सीख
- पोस्टग्रेस + पीजीवेक्टर शक्तिशाली है. संबंधपरक मेटाडेटा के साथ एम्बेडिंग संग्रहीत करने से सब कुछ साफ, सुसंगत और क्वेरी करने में आसान रहा क्योंकि अतिरिक्त वेक्टर डेटाबेस की कोई आवश्यकता नहीं थी।
- लैंगग्राफ एजेंट वर्कफ़्लो को परिभाषित करना, उसे टूल से लैस करना और एजेंट को यह तय करने देना कि उनका उपयोग कब करना है, इसे आश्चर्यजनक रूप से आसान बनाता है
- निजी, स्थानीय, स्व-होस्टेड एजेंट संभव हैं। ओलामा के दो हल्के मॉडल (एक चैट के लिए, एक एम्बेडिंग के लिए) चलाने के साथ, मेरे मैकबुक पर सब कुछ प्रभावशाली गति से चलता है
- एक निर्माण कर रहा है बहु-किरायेदार प्रणाली सख्त डेटा अलगाव के साथ एक बार बहुत आसान था वास्तुकला स्वच्छ थी और जिम्मेदारियां अलग कर दी गईं सभी घटकों में
- लूस कपलिंग घटकों को बदलना और स्केल करना आसान बनाता है
अगले कदम
यह सिस्टम अपग्रेड के लिए तैयार है:
- वृद्धिशील पुनः एम्बेडिंग उन दस्तावेज़ों के लिए जो समय के साथ बदलते हैं
(ताकि मैं अपने ओब्सीडियन वॉल्ट को निर्बाध रूप से प्लग इन कर सकूं)। - उद्धरण जो उपयोगकर्ता को मेरे प्रश्न का उत्तर देने के लिए एलएलएम द्वारा उपयोग की गई सटीक फ़ाइलों/पृष्ठों/खंडों की ओर इंगित करता है, जिससे विश्वास और व्याख्या में सुधार होता है।
- अधिक उपकरण एजेंट के लिए – संरचित सारांश से लेकर SQL एक्सेस तक। शायद ऑन्टोलॉजी या उपयोगकर्ता प्रोफ़ाइल भी?
- एक समृद्ध दृश्यपटल बेहतर फ़ाइल प्रबंधन और उपयोगकर्ता अनुभव के साथ
मुझे आशा है कि यह आलेख उतना स्पष्ट था जितना मैं चाहता था, लेकिन यदि ऐसा नहीं है तो कृपया मुझे बताएं कि मैं और स्पष्ट करने के लिए क्या कर सकता हूं। इस बीच, मेरी जांच करें अन्य लेख सभी प्रकार के प्रोग्रामिंग-संबंधित विषयों पर।
हैप्पी कोडिंग!
— माइक
पुनश्च: जैसे मैं क्या कर रहा हूँ? मेरे पीछे आओ!
(टैग्सटूट्रांसलेट)आर्टिफिशियल इंटेलिजेंस(टी)डीप लर्निंग(टी)एलएलएम एप्लीकेशन(टी)मशीन लर्निंग(टी)सॉफ्टवेयर इंजीनियरिंग
Latest Technology, (लेटेस्ट टेक न्यूज़) Gadget (गैजेट्स) …
Source link
