PdfGptIndexer - OpenAI embeddings और FAISS के साथ PDF दस्तावेज़ों की indexing और query
(github.com/raghavan)- 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 टिप्पणियां
Hacker News टिप्पणियाँ
इस तरह के आइडिया की नकल करने वाले लगभग सभी ऐप्स में OpenAI अनिवार्य होना सबसे ज़्यादा निराशाजनक है
अब बस भी होना चाहिए
OpenAI या cloud की ज़रूरत वाले विकल्पों को “तकनीकी रूप से संभव, लेकिन काफ़ी झंझट वाला advanced setup” जैसा रखना चाहिए, और default इसका उलटा होना चाहिए, तभी बहुत ज़्यादा यूज़र आएँगे
ऐसे ऐप्स का default पूरी तरह local execution होना चाहिए, और
.tomlफ़ाइल में सिर्फ़ एक string बदलकर मनचाहा Hugging Face model लगाने की सुविधा होनी चाहिएअगर सच में OpenAI चाहिए, तो Docker secret या
passchain जैसी key management पद्धतियों और config बदलाव से उसे सक्षम किया जा सकता हैdefault local-first होना चाहिए, और जितना संभव हो local पर प्रोसेस करने के बाद, सिर्फ़ तभी OpenAI को बहुत कम token वाला संकलित prompt भेजा जाना चाहिए जब यूज़र वास्तव में ऐसा चाहें
बड़ी कंपनियों को scalability चाहिए होती है, और तब भी OpenAI की pricing से मुकाबला करना कठिन है
startup-minded कोई व्यक्ति per-request billing, fine-tuning, और vector storage देने वाला OpenLLaMA startup बना सकता है
novelty वाला चरण अब निकल चुका है, अब मैं बस काम को efficiently पूरा करना चाहता हूँ
अब तक की testing में, कुछ हद तक लगातार भरोसेमंद ढंग से काम कराने वाला एकमात्र model GPT-4 रहा है
समझ नहीं आता कि कमी मेरी है, या फिर HN-शैली की wishful thinking चल रही है कि quality, consistency, और reliability के मामले में दूसरे LLMs वास्तविक काम के लिए काफ़ी बेहतर हैं
मेरा अंदाज़ा है कि ऐसा इसलिए हुआ क्योंकि OpenAI का अपना certification program नहीं है
अभी के समय में 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
अभी ऐसा नहीं है
क्या यह हाल के logs से जुड़े सवालों को समझने के लिए context निकाल पाएगा?
अभी तक M series नहीं ली है, इसलिए सोच रहा हूँ कि GPU वाले cloud computing environment में चलाना बेहतर होगा या नहीं
मतलब documentation लिखकर रखी जाए और फिर उसी सामग्री के बारे में सिर्फ़ सवाल पूछे जाएँ
local LLMs को लेकर सत्ता में बैठे लोगों की paranoia का स्तर देखकर, अगर Windows telemetry यह रिपोर्ट कर रही हो कि लोग local LLMs से क्या कर रहे हैं, तो मुझे ज़रा भी हैरानी नहीं होगी
जो लोग ऐसा नहीं मानते, वे मुझे बहुत भोले लगते हैं
क्या मेरा personal data OpenAI को भेजा जा रहा है? क्या यह गंभीर समस्या नहीं है?
जब तक data से सारी sensitive personal information हटा न दी जाए, यह समझदारी नहीं लगती। क्या मैं कुछ मिस कर रहा हूँ?
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 कहाँ फिट होता है
GPT-2 सिर्फ़ tokenization के दौरान token length को efficiently गिनने के लिए इस्तेमाल होता है
क्या कोई कंपनी यह चीज़ hosted version के रूप में देती है?
मैं सच में ऐसा छोटा AI चाहता हूँ जिसे अपना सारा डेटा देकर उससे सवाल पूछ सकूँ
इसमें Google Drive, YouTube वीडियो आदि के साथ integration जैसी सुविधाजनक features भी हैं
इसके 50 हज़ार से ज़्यादा daily active users हैं
समझ नहीं आया। GPT-2, OpenAI के गिने-चुने public models में से एक है, इसलिए इसे local में सीधे चलाया जा सकता है, तो इस काम के लिए API क्यों इस्तेमाल हो रही है?
https://github.com/openai/gpt-2
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 तरीका इतना महत्वपूर्ण नहीं हैGPT-2 सिर्फ़ tokenization के दौरान token length को efficiently calculate करने के लिए इस्तेमाल होता है
README को इस जानकारी को सही तरह से दिखाने के लिए update कर दिया गया है
क्या सिर्फ़ मैं ही ऐसा हूँ जिसे अपने पूरे डेटा में search करने की ज़रूरत नहीं लगती? यहाँ use case क्या है?
काम पर कई 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 देखे हैं?
मुझे लगता है 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 है
मुझे लगता है Milvus, Quickwit, Pinecone enterprise उपयोग के लिए ज़्यादा उपयुक्त हैं और इस्तेमाल में कठिन हैं
जब और तेज़ और ज़्यादा accurate local embedding models मौजूद हैं, तो OpenAI dependency क्यों रखी जाए, समझ नहीं आता
मैं एक ऐसी 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