1 पॉइंट द्वारा GN⁺ 2023-07-10 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • PDF दस्तावेज़ों को index करने और query करने के लिए एक टूल, जो OpenAI embeddings और FAISS का उपयोग करके PDF दस्तावेज़ों के साथ बातचीत करने वाला RAG सिस्टम लागू करता है
  • PDF फ़ोल्डर से टेक्स्ट निकाला जाता है, उसे 1000-अक्षर के chunks और 200-अक्षर overlap में बाँटा जाता है, फिर OpenAI text-embedding-ada-002 मॉडल से embeddings बनाकर लोकल FAISS index में संग्रहीत किया जाता है
  • query चरण में संग्रहीत FAISS vector index को लोड किया जाता है, सवाल को embedding में बदला जाता है, सबसे मिलते-जुलते शीर्ष 3 document chunks खोजे जाते हैं, और फिर similarity score तथा text snippet दिखाए जाते हैं
  • उत्तर निर्माण में, प्राप्त context के आधार पर GPT-4 एक सुसंगत उत्तर synthesize करता है
  • embeddings को लोकल में संग्रहीत किया जाता है, इसलिए हर query पर embeddings दोबारा बनाने की ज़रूरत नहीं होती; शुरुआती निर्माण के बाद OpenAI इंटरनेट कनेक्शन के बिना डेटा query संभव है और केवल उत्तर निर्माण के लिए API call की आवश्यकता होती है
  • डिफ़ॉल्ट execution flow में python indexer.py चलाकर PDF को process किया जाता है और vector database बनाया जाता है, फिर python chatbot.py से interactive query interface शुरू किया जाता है
    • PDF फ़ोल्डर और index storage location को command arguments से निर्दिष्ट किया जा सकता है
    • collection में नया PDF जोड़ने पर ही indexer को फिर से चलाने की ज़रूरत होती है
  • चलाने की आवश्यकताएँ Python 3.8 या उससे ऊपर और OpenAI API key हैं, जिन्हें .env फ़ाइल के OPENAI_API_KEY मान से सेट किया जाता है

1 टिप्पणियां

 
GN⁺ 2023-07-10
Hacker News टिप्पणियाँ
  • इस तरह के आइडिया की नकल करने वाले लगभग सभी ऐप्स में OpenAI अनिवार्य होना सबसे ज़्यादा निराशाजनक है
    अब बस भी होना चाहिए
    OpenAI या cloud की ज़रूरत वाले विकल्पों को “तकनीकी रूप से संभव, लेकिन काफ़ी झंझट वाला advanced setup” जैसा रखना चाहिए, और default इसका उलटा होना चाहिए, तभी बहुत ज़्यादा यूज़र आएँगे
    ऐसे ऐप्स का default पूरी तरह local execution होना चाहिए, और .toml फ़ाइल में सिर्फ़ एक string बदलकर मनचाहा Hugging Face model लगाने की सुविधा होनी चाहिए
    अगर सच में OpenAI चाहिए, तो Docker secret या pass chain जैसी key management पद्धतियों और config बदलाव से उसे सक्षम किया जा सकता है
    default local-first होना चाहिए, और जितना संभव हो local पर प्रोसेस करने के बाद, सिर्फ़ तभी OpenAI को बहुत कम token वाला संकलित prompt भेजा जाना चाहिए जब यूज़र वास्तव में ऐसा चाहें

    • प्रतिस्पर्धा करना मुश्किल है। अगर कोई छोटा बिज़नेस chatbot की 10,000 requests संभालना चाहता है, तो विकल्प हैं: OpenAI को महीने के 50 डॉलर से कम देना, या cloud GPU मैनेज करना और machine learning engineer रखकर महीने के 1000 डॉलर से ज़्यादा खर्च करना, या किसी के डेस्क के नीचे local 4090 रखकर बिना विश्वसनीयता के 1500 डॉलर की fixed cost उठाना
      बड़ी कंपनियों को scalability चाहिए होती है, और तब भी OpenAI की pricing से मुकाबला करना कठिन है
      startup-minded कोई व्यक्ति per-request billing, fine-tuning, और vector storage देने वाला OpenLLaMA startup बना सकता है
    • सिर्फ़ साधारण experiment नहीं, बल्कि दूसरे LLMs से वास्तव में उपयोगी काम क्या किया जा सकता है, यह जानना चाहता हूँ
      novelty वाला चरण अब निकल चुका है, अब मैं बस काम को efficiently पूरा करना चाहता हूँ
      अब तक की testing में, कुछ हद तक लगातार भरोसेमंद ढंग से काम कराने वाला एकमात्र model GPT-4 रहा है
      समझ नहीं आता कि कमी मेरी है, या फिर HN-शैली की wishful thinking चल रही है कि quality, consistency, और reliability के मामले में दूसरे LLMs वास्तविक काम के लिए काफ़ी बेहतर हैं
    • यह किसी असली product को ship करने के लिए नहीं, बल्कि resume में OpenAI experience साबित करने वाली एक लाइन जोड़ने के लिए बनाया गया लगता है
      मेरा अंदाज़ा है कि ऐसा इसलिए हुआ क्योंकि OpenAI का अपना certification program नहीं है
    • क्या https://mudler.pm/posts/smart-slackbot-for-teams/ में LocalAI जोड़ देना काफ़ी नहीं होगा?
    • यहाँ इस्तेमाल होने वाला OpenAI “कचरा” सिर्फ़ embedding generation है
      अभी के समय में OpenAI, personal projects के लिए सबसे अच्छे और सस्ते embeddings में से एक देता है
      vectors बन जाने के बाद, चाहें तो cloud से पूरी तरह बाहर निकला जा सकता है
      LangChain ने उस परेशानी वाले हिस्से को abstract कर दिया है, इसलिए embedding generator भी कभी भी बदला जा सकता है
      बाकी हिस्सा पहले से Hugging Face इस्तेमाल कर रहा है, और prompt support वाले GPT-2 के अलावा दूसरे models से बदला जा सकता है
  • डेटा को private रखना चाहिए और किसी third party तक नहीं जाने देना चाहिए। इसके लिए privateGPT जैसी चीज़ इस्तेमाल की जा सकती है। GitHub stars 32k हैं
    अगर key मेरी नहीं है, तो data भी मेरा नहीं है
    “GPT की ताकत से documents के साथ private interaction, 100% privacy, कोई data leak नहीं”[0]
    [0] https://github.com/imartinez/privateGPT

    • यह OpenAI products से काफ़ी कमज़ोर है, और मैं इस बात से थक चुका हूँ कि लोग ऐसे models के बारे में ऐसे बात करते हैं जैसे वे पहले से पूरी तरह interchangeable हों
      अभी ऐसा नहीं है
    • सोच रहा हूँ कि क्या यह इतना robust है कि इसमें सारे emails और chat logs डालकर बातचीत की जा सके
      क्या यह हाल के logs से जुड़े सवालों को समझने के लिए context निकाल पाएगा?
    • जानना चाहता हूँ कि यह Intel Mac पर कैसे चलता है। मैं 6-core i9 इस्तेमाल कर रहा हूँ
      अभी तक M series नहीं ली है, इसलिए सोच रहा हूँ कि GPU वाले cloud computing environment में चलाना बेहतर होगा या नहीं
    • अगर यह Confluence के साथ काम करे तो बहुत अच्छा होगा
      मतलब documentation लिखकर रखी जाए और फिर उसी सामग्री के बारे में सिर्फ़ सवाल पूछे जाएँ
    • 100% privacy वाली बात थोड़ी संदिग्ध लगती है
      local LLMs को लेकर सत्ता में बैठे लोगों की paranoia का स्तर देखकर, अगर Windows telemetry यह रिपोर्ट कर रही हो कि लोग local LLMs से क्या कर रहे हैं, तो मुझे ज़रा भी हैरानी नहीं होगी
      जो लोग ऐसा नहीं मानते, वे मुझे बहुत भोले लगते हैं
  • क्या मेरा personal data OpenAI को भेजा जा रहा है? क्या यह गंभीर समस्या नहीं है?
    जब तक data से सारी sensitive personal information हटा न दी जाए, यह समझदारी नहीं लगती। क्या मैं कुछ मिस कर रहा हूँ?

    • मूल रूप से, OpenAI API को भेजा गया data training में इस्तेमाल नहीं होता, और ज़्यादातर मामलों में अधिकतम 30 दिनों के बाद delete कर दिया जाता है
      data usage policy: https://openai.com/policies/api-data-usage-policies
      model-specific data usage policy: https://platform.openai.com/docs/models/how-we-use-your-data
    • मेरा भी यही सवाल है
      क्या सिर्फ़ यह जाँचने से आगे कि OpenAI key चाहिए या नहीं, यह जानने का कोई ज़्यादा बारीक तरीका है कि personal data का इस्तेमाल कैसे होता है?
  • README बहुत उलझाऊ है
    उसमें लिखा है कि GPT-2 tokenizer इस्तेमाल होता है और GPT-2 को embedding model की तरह इस्तेमाल किया जाता है, लेकिन code देखने पर लगता है कि default LangChain OpenAIEmbeddings और OpenAI LLM इस्तेमाल हो रहे हैं
    क्या वे क्रमशः text-embedding-ada-002 और text-davinci-003 नहीं हैं?
    मुझे बिल्कुल समझ नहीं आ रहा कि यहाँ GPT-2 कहाँ फिट होता है

    • इस्तेमाल किया जाने वाला embedding model default OpenAI API embedding text-embedding-ada-002 है
      GPT-2 सिर्फ़ tokenization के दौरान token length को efficiently गिनने के लिए इस्तेमाल होता है
  • क्या कोई कंपनी यह चीज़ hosted version के रूप में देती है?
    मैं सच में ऐसा छोटा AI चाहता हूँ जिसे अपना सारा डेटा देकर उससे सवाल पूछ सकूँ

    • https://libraria.dev/ यह फ़ीचर और उससे भी ज़्यादा चीज़ें service के रूप में देता है
      इसमें Google Drive, YouTube वीडियो आदि के साथ integration जैसी सुविधाजनक features भी हैं
    • अगर आप ChatGPT Plus subscribe करते हैं, तो ChatWithPDF(https://plugins.sdan.io) इस्तेमाल कर सकते हैं
      इसके 50 हज़ार से ज़्यादा daily active users हैं
    • https://news.ycombinator.com/item?id=36649777
    • https://chatbotkit.com
    • डेटा के आकार के हिसाब से chiseleditor.com भी एक मुफ़्त विकल्प हो सकता है
  • समझ नहीं आया। GPT-2, OpenAI के गिने-चुने public models में से एक है, इसलिए इसे local में सीधे चलाया जा सकता है, तो इस काम के लिए API क्यों इस्तेमाल हो रही है?
    https://github.com/openai/gpt-2

    • GPT-2 इस्तेमाल नहीं हो रहा। README ग़लत है
      from langchain.embeddings import OpenAIEmbeddings इस्तेमाल हो रहा है, और यह OpenAI embedding API text-embedding-ada-002 है
      GPT-2 सिर्फ़ GPT2TokenizerFast.from_pretrained("gpt2") वाले हिस्से में इस्तेमाल हो रहा है, और वह भी LangChain की RecursiveCharacterTextSplitter() utility में token count करने वाली length function के रूप में
      यह भी ज़्यादा समझदारी भरा नहीं लगता। पता नहीं यहाँ GPT-2 tokenizer क्यों इस्तेमाल किया गया है
      बस character count कर लें या .split() के आधार पर word count कर लें, वही काफ़ी है। यहाँ count करने का exact तरीका इतना महत्वपूर्ण नहीं है
    • इस्तेमाल होने वाला embedding model default OpenAI API embedding text-embedding-ada-002 है
      GPT-2 सिर्फ़ tokenization के दौरान token length को efficiently calculate करने के लिए इस्तेमाल होता है
      README को इस जानकारी को सही तरह से दिखाने के लिए update कर दिया गया है
    • मान लिया गया है कि GPT-4, GPT-2 की तुलना में सवालों के बेहतर जवाब देगा
  • क्या सिर्फ़ मैं ही ऐसा हूँ जिसे अपने पूरे डेटा में search करने की ज़रूरत नहीं लगती? यहाँ use case क्या है?

    • एक use case example यह है
      काम पर कई investment topics पर चर्चा करने वाला एक group है, और आयोजक की networking अच्छी है, इसलिए वह लगभग हर हफ़्ते बाहर से speakers लाने की कोशिश करता है। काफ़ी educational है
      मेरे पास हर talk के raw notes हैं, और लक्ष्य था उन notes को खंगालकर knowledge को ठीक से organize करके wiki जैसी किसी चीज़ में बदलना
      इसे शुरू किए 3 साल हो गए, लेकिन अभी तक समय नहीं निकाल पाया, और व्यावहारिक रूप से देखें तो आगे भी शायद न निकाल पाऊँ
      उन notes में जानकारी खोजने के लिए text search इस्तेमाल कर सकता हूँ, लेकिन वह search string पर बहुत ज़्यादा sensitive है, इसलिए अक्सर जो चाहिए वह नहीं मिलता
      अगर जानकारी कई files में बिखरी हो, तो search results की सारी files खोलकर देखनी पड़ती हैं
      ऐसी तकनीक से आप सारे notes को vector DB में डाल सकते हैं, और फिर जो चाहिए उसे natural language में पूछ सकते हैं
      local system सवाल को समझकर DB से सबसे relevant documents ढूँढता है, फिर सवाल और search results को OpenAI को भेजता है ताकि वह सवाल को समझकर notes में जवाब ढूँढ सके
      मैंने पहले LangChain से एक proof of concept बनाया था, और वह काम करता था। एक बार उसने दो अलग-अलग talks में बिखरी जानकारी को जोड़कर जवाब दिया था, और वह सच में “आहा” वाला पल था
      दिक्कत यह है कि tune करने के लिए बहुत ज़्यादा parameters हैं, और सिस्टम की performance को evaluate करने का कोई तरीका या metric अभी तक नहीं सोच पाया हूँ। कोई सलाह हो तो अच्छा होगा
      इन notes में कोई personal information नहीं है, इसलिए privacy की समस्या नहीं है
      मैं 20 साल से ज़्यादा के emails पर भी ऐसा कुछ सेट करना चाहता था, लेकिन privacy concerns की वजह से नहीं किया। ऊपर से मैं notmuch नाम का mail indexer इस्तेमाल करता हूँ, इसलिए वहाँ AI की ज़रूरत भी उतनी ज़्यादा नहीं लगती
      लेकिन दूसरे non-personal notes के लिए, अगर इस सिस्टम को ठीक से काम करने लायक बनाया जा सके, तो यह जीवनरक्षक साबित हो सकता है
      कई सालों में मैंने बहुत सारे topics पर बहुत ज़्यादा notes बना लिए हैं, और उन्हें ठीक से organize न करना पड़े, इसका वास्तविक आर्थिक मूल्य है
      बस notes लिखते रहो, और ज़रूरत पड़ने पर AI से जो चाहिए वह निकलवा लो
    • कभी-कभी डेटा होता है, लेकिन पता नहीं होता कि वह कहाँ है
      कभी-कभी पता होता है कि डेटा कहाँ है, लेकिन वह इतना ज़्यादा होता है कि ज़रूरत सिर्फ़ किसी चीज़ की तेज़ explanation की होती है
      कभी-कभी कई sources से बहुत सारा डेटा होता है, और अंत में जो चाहिए होता है वह यह कि ज़्यादातर या सभी स्रोत किस बात पर सहमत हैं उसका summary, या फिर वे एक-दूसरे से कैसे अलग हैं उसका summary
      use cases बहुत हैं, और मेरा मानना है कि चूँकि हम ऐसे काम निपटाने के पुराने तरीकों के आदी हैं, इसलिए जब तक हम खुद गहराई में जाकर इसकी संभावनाएँ नहीं देखते, इसकी उपयोगिता का “बल्ब जलने” वाला पल अक्सर नहीं आता
      इसका दायरा काफ़ी बड़ा है। निजी तौर पर मैं जिस project पर काम कर रहा हूँ, वह भी इसका एक रूप है, जहाँ मैं कई सालों के personal notes और journal entries डालकर self-reflection और personal growth के लिए उनसे सवाल करता हूँ
      मुझे लगता है कि इस पूरे क्षेत्र में बहुत क्षमता है
  • क्या किसी को पता है कि Milvus, Quickwit, Pinecone की तुलना कैसे होती है?
    मैं यह सोच रहा हूँ कि क्या स्थानीय व्यवसायों के लिए LLM, fine-tuning/vector search, और chatbot से जुड़ी consulting के मौके हैं
    मैं ऐसा टूल भी बनाना चाहता हूँ जिसमें file को drag-and-drop करते ही personalized inference आसानी से मिल जाए
    हाल ही में मेरे LinkedIn feed में https://gpt-trainer.com/ दिखा, और documents के लिए कुछ और भी देखे
    https://www.explainpaper.com/
    https://www.konjer.xyz/
    मैं price competition नहीं करना चाहता
    3090 पर local open source LLM serve करना भी बढ़िया होगा, लेकिन उसमें scalability नहीं होगी
    क्या तुमने कोई और fine-tuning या vector search context startup देखे हैं?

    • Pinecone और Milvus, vector storage और search component में FAISS इस्तेमाल करने के विकल्प हो सकते हैं
      मुझे लगता है embeddings का फर्क, storage/search के विकल्पों से ज़्यादा इस बात से महसूस होगा कि embedding generation के लिए क्या इस्तेमाल किया जाता है
      उदाहरण के लिए, यहाँ दिए गए https://news.ycombinator.com/item?id=36649579 वाले विकल्पों को OpenAI embeddings API की जगह इस्तेमाल करना
      embedding storage/search के विकल्पों के बीच, बड़े scale पर performance, cost, और personal preference या developer experience के अलावा कोई खास फर्क दिमाग में नहीं आता
      Quickwit का नाम मैंने पहली बार सुना; site को जल्दी से देखने पर यह vector store जैसा नहीं लगता, इसलिए शायद कम संबंधित है
      custom ChatGPT बनाने वाले tools के लिए मेरी सूची देख सकते हो: https://llm-utils.org/List+of+tools+for+making+a+%22ChatGPT+...
      fine-tuning as a service में enterprises को target करने वाली Lamini AI है
      एक और embedding startup Weaviate है
    • मैं सिर्फ numpy से एक simple vector DB बना रहा हूँ: https://github.com/sdan/vlite
      मुझे लगता है Milvus, Quickwit, Pinecone enterprise उपयोग के लिए ज़्यादा उपयुक्त हैं और इस्तेमाल में कठिन हैं
    • मेरी राय में qdrant बेहतर है
  • जब और तेज़ और ज़्यादा accurate local embedding models मौजूद हैं, तो OpenAI dependency क्यों रखी जाए, समझ नहीं आता

    • कौन से models?
  • मैं एक ऐसी company में काम करता हूँ जो sensitive enterprise data और LLM के बीच security layer का काम करती है
    model चाहे HF, ChatGPT, Bard में से कुछ भी हो, और medium चाहे conversation data हो, PDF हो, या Notion जैसा knowledge base, कोई फर्क नहीं पड़ता
    यह sensitive data को छिपाकर risky usage को रोकती है और साथ ही fact-checking भी करती है
    अगर आप इसी तरह की चीज़ ढूँढ रहे हैं, तो मैं परिचय करा सकता हूँ: tothepoint.tech