- तेज़ी से बदलते तकनीकी माहौल में मज़बूत ऑन-कॉल ऑपरेशंस बनाए रखना सेवाओं के सुचारु संचालन को सुनिश्चित करने के लिए महत्वपूर्ण है
- प्लेटफ़ॉर्म इंजीनियरिंग टीमें ऑन-कॉल शेड्यूल, incident response, महत्वपूर्ण पलों में communication, और Slack® चैनलों में मज़बूत customer support को कुशलतापूर्वक मैनेज करने में कठिनाई झेल रही हैं
- ऑन-कॉल इंजीनियरों के साथ communication और प्रश्नोत्तर को बेहतर बनाने के लिए जनरेटिव AI का उपयोग करने वाले ऑन-कॉल copilot Genie के बारे में बताया गया है
विस्तार से देखें: समस्या और प्रेरणा
- Uber में Michelangelo टीम जैसी कई टीमों के Slack support channel हैं, जहाँ internal users मदद माँग सकते हैं
- इन चैनलों में हर महीने औसतन 45,000 सवाल पूछे जाते हैं
- सवालों की बड़ी संख्या और लंबे response wait time, users और ऑन-कॉल इंजीनियरों दोनों की productivity को कम कर देते हैं
झंझटभरी प्रक्रिया
- आम तौर पर जब कोई user Slack channel में सवाल पूछता है, तो उसे ऑन-कॉल इंजीनियर के जवाब का इंतज़ार करना पड़ता है
- ऑन-कॉल इंजीनियर user के शुरुआती सवाल का जवाब देता है या अधिक विवरण माँगता है
- user follow-up सवाल पूछ सकता है, और स्पष्टता माँग सकता है, या अतिरिक्त जानकारी दे सकता है
- फिर से ऑन-कॉल इंजीनियर के जवाब का इंतज़ार करना पड़ता है
- कई बार के आगे-पीछे वाले communication के बाद user का सवाल हल होता है
जानकारी ढूँढना मुश्किल
- कई सवालों का जवाब मौजूदा documentation देखकर दिया जा सकता है, लेकिन जानकारी Uber के internal wiki Engwiki, internal Stack Overflow, और अन्य जगहों पर बिखरी होने के कारण किसी खास जवाब को ढूँढना मुश्किल होता है
- नतीजतन users अक्सर वही सवाल बार-बार पूछते हैं, जिससे सैकड़ों Slack channels में ऑन-कॉल support की माँग बहुत बढ़ जाती है
आर्किटेक्चर चुनौतियाँ
- ऑन-कॉल copilot बनाने के लिए यह चुनना पड़ा कि LLM model को fine-tune किया जाए या Retrieval-Augmented Generation (RAG) का उपयोग किया जाए
- Fine-tuning के लिए curated data की ज़रूरत होती है, जिसमें उच्च-गुणवत्ता वाले और विविध उदाहरण हों, जिनसे LLM सीख सके
- साथ ही, नए उदाहरणों के साथ model को up-to-date बनाए रखने के लिए computing resources भी चाहिए
- दूसरी ओर, RAG को शुरुआत से ही बहुत सारे विविध उदाहरणों की आवश्यकता नहीं होती
- इससे copilot का launch time कम हुआ, इसलिए हमने copilot के लिए यही approach चुनी
ऑन-कॉल copilot बनाते समय hallucination से निपटना, data source को सुरक्षित रखना, और user experience सुधारना जैसी कई चुनौतियाँ थीं। आगे हम संक्षेप में देखेंगे कि हर चुनौती को कैसे सुलझाया गया।
Hallucination के लिए इन बातों पर ध्यान दिया गया:
- जवाबों की सटीकता: सवाल से जुड़ा ज्ञान खोजकर यह सुनिश्चित किया गया कि LLM engine गलत या भ्रामक जानकारी न बनाए
- Validation mechanism: hallucination की संभावना घटाने के लिए authoritative sources के खिलाफ copilot के जवाबों को validate करने के तरीके लागू किए गए
- Continuous learning: copilot को सबसे ताज़ा data तक पहुँच देकर accuracy बढ़ाई गई
Data security के लिए, क्योंकि कई data sources ऐसे थे जिन्हें Slack channel में उजागर नहीं किया जा सकता था, इसलिए किन data sources को collect करना है यह बहुत सावधानी से चुना गया
User experience बेहतर बनाने के लिए इसे इस तरह डिज़ाइन किया गया:
- Intuitive interface: ऐसा आसान interface डिज़ाइन किया गया जिससे users copilot के साथ कुशलतापूर्वक interact कर सकें
- Feedback loop: ऐसा system बनाया गया जिसमें users जवाबों पर feedback दे सकें, ताकि copilot के performance में लगातार सुधार किया जा सके
इन चुनौतियों को सुलझाकर एक भरोसेमंद, user-friendly और सुरक्षित ऑन-कॉल copilot विकसित किया गया
संरचना का गहन विश्लेषण
- अब ऑन-कॉल copilot Genie के architecture पर नज़र डालते हैं
- संक्षेप में, Uber के internal wiki, internal Stack Overflow, और engineering requirements documents जैसे internal data sources को scrape किया जाता है और OpenAI embedding model का उपयोग करके इन data sources से vectors बनाए जाते हैं
- ये embeddings vector database में store किए जाते हैं
- फिर जब user Slack channel में सवाल पोस्ट करता है, तो सवाल को embedding में बदला जाता है
- Service vector database से सवाल से जुड़े relevant embeddings को retrieve करती है
- Embedding से indexed results को response पाने के लिए LLM के prompt के रूप में इस्तेमाल किया जाता है
Data preparation, embedding, और serving के लिए artifact push चरणों को Apache Spark™ का उपयोग करने वाले RAG applications के रूप में generalize किया जा सकता है। ये सामान्य चरण RAG applications की बुनियाद बनाते हैं
ETL
डेटा तैयारी
- Spark app, Uber के Engwiki या Uber Stack Overflow API का उपयोग करके हर data source से content लाता है
- इस data preparation चरण का output Spark dataframe होता है
- Schema में एक column में Engwiki link और दूसरे column में Engwiki की content होती है, और दोनों string format में होते हैं
Embedding बनाना
- Data scrape होने के बाद OpenAI embedding model का उपयोग करके embeddings बनाए जाते हैं और Uber के Blob storage Terrablob में push किए जाते हैं
- बनाए गए embeddings को केवल Engwiki space से जुड़े specific Slack channel के माध्यम से access किया जा सकता है
- Output format एक dataframe है, जिसका schema chunk content को उस chunk के संबंधित vector से map करता है
- Uber के internal wiki content को langchain का उपयोग करके chunk किया जाता है और embeddings PySpark UDF के माध्यम से OpenAI से generate किए जाते हैं
Pusher
- इसमें दिखाया गया है कि vectors को Terrablob में कैसे push किया जाता है
- यह भी दिखाया गया है कि vectors किस तरह push होते हैं
- Data source से Sia में data ingest करने के लिए bootstrap job trigger की जाती है
- Sia, Uber का internal vector database solution है
- इसके बाद index build और merge के लिए दो Spark jobs trigger की जाती हैं और data को Terrablob में ingest किया जाता है
- सभी leafs, Terrablob में store किए गए base index और snapshot को sync और download करते हैं
- Retrieval के दौरान query सीधे हर leaf को भेजी जाती है
Knowledge Service
- Genie में Knowledge Service नाम की एक backend service है
- यह incoming query को पहले embedding में बदलती है, फिर vector database से सबसे relevant chunks लाकर हर incoming query के लिए request का जवाब देती है
लागत ट्रैकिंग
- Cost tracking के लिए, जब Slack client या अन्य platform Knowledge Service को call करते हैं, तो UUID Knowledge Service को pass किया जाता है
- फिर Knowledge Service, context header के ज़रिए UUID को Michelangelo Gateway को pass करती है
- Michelangelo Gateway, LLM के लिए एक pass-through service है, इसलिए इसे उस UUID के साथ cost को track करने वाले audit log में जोड़ा जा सकता है
Genie के performance का मूल्यांकन
मापन का तरीका
-
Users Genie के जवाब में संबंधित button पर क्लिक करके Slack में तुरंत feedback दे सकते हैं
-
Users को इनमें से चुनने का विकल्प दिया जाता है:
- हल हुआ: जवाब ने समस्या को पूरी तरह हल कर दिया
- मददगार: जवाब कुछ हद तक उपयोगी था, लेकिन user को और मदद चाहिए
- मददगार नहीं: response गलत था या प्रासंगिक नहीं था
- प्रासंगिक नहीं: user को ऑन-कॉल support चाहिए और Genie मदद नहीं कर सकता, जैसे code review के मामले
-
जब user feedback छोड़ता है, तो Slack plugin इसे उठाता है और एक specific Kafka topic का उपयोग करके feedback और संबंधित metadata को Hive table में stream करता है
-
बाद में dashboard में इन metrics को visualize किया जाता है
Performance evaluation
- Genie users को custom evaluation चलाने का विकल्प देता है
- Users hallucination, जवाब की relevance, या अन्य metrics का मूल्यांकन कर सकते हैं जिन्हें वे अपने use case के लिए महत्वपूर्ण मानते हैं
- इस evaluation का उपयोग retrieval और generation जैसे सभी संबंधित RAG components को बेहतर tune करने के लिए किया जा सकता है
Evaluation process, पहले से बने Michelangelo components का उपयोग करने वाली एक अलग ETL pipeline है। Genie का context और response Hive से retrieve किया जाता है और Slack metadata तथा user feedback जैसी अन्य संबंधित data के साथ join किया जाता है। इसके बाद इसे process करके Evaluator को भेजा जाता है। Evaluator दिए गए prompt को लेकर LLM को Judge के रूप में चलाता है। निर्धारित metrics निकाले जाते हैं और evaluation report में शामिल किए जाते हैं, जिसे users UI में देख सकते हैं
दस्तावेज़ मूल्यांकन
- सटीक जानकारी की retrieval, source documents की स्पष्टता और accuracy पर निर्भर करती है
- अगर documents की गुणवत्ता ही खराब हो, तो LLM कितना भी अच्छा क्यों न हो, अच्छा performance देना संभव नहीं है
- इसलिए documents का मूल्यांकन करने और document quality सुधारने के लिए actionable suggestions देने की क्षमता, एक कुशल और प्रभावी RAG system के लिए अनिवार्य है
यह document evaluation app का workflow दिखाता है। Data scrape होने के बाद knowledge base के documents को Spark dataframe में बदला जाता है। Dataframe की हर row knowledge base के एक document का प्रतिनिधित्व करती है। फिर evaluation को process करने के लिए LLM को Judge के रूप में call किया जाता है। यहाँ custom evaluation prompt का उपयोग कर LLM को input दिया जाता है। LLM evaluation score के साथ score की explanation और हर document की quality सुधारने के लिए actionable suggestions लौटाता है। ये सभी metrics evaluation report के रूप में publish होते हैं, जिसे users Michelangelo UI में access कर सकते हैं
चुनौतियों के समाधान
- Hallucination कम करने के लिए vector database से मिले prompts को LLM को भेजने का तरीका बदला गया
- vector database से मिले हर result के लिए partial context के साथ उसका source URL स्पष्ट रूप से जोड़ा गया
- LLM से कहा गया कि वह केवल दिए गए अलग-अलग sub-contexts के आधार पर जवाब दे और जवाब को cite करने के लिए source URL लौटाए
- हर जवाब के लिए source URL देने की कोशिश की गई
- OpenAI से embeddings बनाते समय, या ऐसे लोगों तक Slack के जरिए data source leak होने से बचाने के लिए जिन्हें महत्वपूर्ण data sources तक access नहीं है, पहले से curated ऐसे data sources चुने गए जो अधिकांश Uber engineers के लिए व्यापक रूप से उपलब्ध हैं, और embedding generation के लिए केवल उन्हीं data sources की अनुमति दी गई
- Genie की प्रश्नों का उत्तर देने की क्षमता को अधिकतम करने के लिए एक नया interaction mode विकसित किया गया
- इस mode में users अधिक आसानी से follow-up सवाल पूछ सकते हैं और Genie के जवाबों को अधिक ध्यान से पढ़ने के लिए प्रेरित होते हैं
- अगर Genie सवाल का जवाब नहीं दे पाता, तो user आसानी से issue को ऑन-कॉल support तक escalate कर सकता है
नए interaction mode में जब user सवाल पूछता है, तो Genie दिए गए अगले-step task buttons के साथ जवाब देता है। इन buttons का उपयोग करके user आसानी से follow-up सवाल पूछ सकता है, सवाल को resolved के रूप में mark कर सकता है, या human support से संपर्क कर सकता है
उपलब्धियाँ
- सितंबर 2023 में launch होने के बाद से Genie ने 154 Slack channels तक अपनी पहुँच बढ़ाई है और 70,000 से अधिक सवालों के जवाब दिए हैं
- Genie ने 48.9% usefulness rate हासिल की है, जो इसके बढ़ते प्रभाव को दिखाती है
- Launch के बाद से अब तक इसके द्वारा 13,000 घंटे की engineering time बचाने का अनुमान है
भविष्य
- Genie एक अत्याधुनिक Slack bot है, जिसे ऑन-कॉल management को सरल बनाने, incident response को optimize करने, और team collaboration को बेहतर करने के लिए डिज़ाइन किया गया है
- सादगी और प्रभावशीलता पर केंद्रित होकर विकसित Genie एक comprehensive assistant की तरह काम करता है और engineering teams को ऑन-कॉल ज़िम्मेदारियों को सहज रूप से संभालने में मदद करता है
- यह ऑन-कॉल assistant copilot users और ऑन-call इंजीनियरों के लिए हर platform के Slack channel के भीतर interaction और engagement के पूरे अनुभव को बदल सकता है
- साथ ही Michelangelo या IDE जैसे हर product के भीतर यह अनुभव भी बदल सकता है, ताकि user ऑन-कॉल support का इंतज़ार किए बिना product-specific Slack channel या product के भीतर ही product-specific help पा सके
निष्कर्ष
- ऑन-कॉल assistant copilot Genie ने engineering teams के ऑन-कॉल काम को मैनेज करने के तरीके में बदलाव ला दिया है
- Automated resolution को बढ़ावा देकर और उपयोगी analysis देकर Genie teams को ऑन-कॉल ज़िम्मेदारियों को कुशल और प्रभावी ढंग से संभालने में सक्षम बनाता है
GN⁺ की राय
- Genie एक अभिनव ऑन-कॉल copilot है जो Uber के कई Slack channels में user सवालों के जवाब देकर engineers का समय बचाता है और user experience बेहतर बनाता है
- Genie की सफलता machine learning तकनीक और मानवीय विशेषज्ञता के शक्तिशाली संयोजन को दिखाती है। यह बड़े पैमाने के data और LLM का उपयोग करके सवालों के सटीक और उपयोगी जवाब देता है
- हालांकि, Genie में अभी भी सीमाएँ और सुधार की गुंजाइश है। यह hallucination की समस्या को पूरी तरह हल नहीं कर पाया है, और कभी-कभी गलत या भ्रामक जानकारी दे सकता है। लगातार monitoring और user feedback के ज़रिए system को बेहतर बनाना होगा
- एक और महत्वपूर्ण पहलू data security और privacy है। Genie द्वारा प्रोसेस किया जाने वाला data संवेदनशील और गोपनीय हो सकता है, इसलिए सुरक्षित handling और access control अनिवार्य हैं
- भविष्य में Genie जवाबों की गुणवत्ता बढ़ाने, अधिक data sources को integrate करने, और security को मज़बूत करने की दिशा में विकसित हो सकता है। साथ ही Genie जैसे copilot को अन्य business क्षेत्रों तक बढ़ाना भी संभव है
- Automated customer support, sales support, और यहाँ तक कि coding support तक, AI-आधारित assistants को कई तरह के कामों में लागू किया जा सकता है। ऐसे tools कर्मचारियों की productivity बढ़ा सकते हैं और user experience बेहतर कर सकते हैं
- कुल मिलाकर Genie एक दिलचस्प उदाहरण है कि AI और मानवीय विशेषज्ञता मिलकर किस तरह बेहतर कामकाज और customer service की ओर ले जा सकते हैं। यह तकनीक आगे भी विकसित होती रहेगी और हमारे काम करने तथा interact करने के तरीके पर गहरा प्रभाव डालने की उम्मीद है
अभी कोई टिप्पणी नहीं है.