Hacker News के 2.874 करोड़ पोस्ट और टिप्पणियाँ अब vector embedding खोज डेटासेट के रूप में उपलब्ध
(clickhouse.com)- Hacker News डेटासेट में 2.874 करोड़ पोस्ट और टिप्पणियाँ शामिल हैं, और प्रत्येक टेक्स्ट SentenceTransformers all-MiniLM-L6-v2 मॉडल से बना 384-डाइमेंशनल वेक्टर एम्बेडिंग रखता है
- डेटा को ClickHouse द्वारा उपलब्ध कराई गई एकल Parquet फ़ाइल (S3 bucket) के रूप में सार्वजनिक किया गया है, जिसे बड़े पैमाने के vector search application की डिजाइन और प्रदर्शन मूल्यांकन में इस्तेमाल किया जा सकता है
- उदाहरण SQL code के ज़रिये table निर्माण, डेटा लोड, HNSW आधारित वेक्टर सिमिलैरिटी इंडेक्स निर्माण और खोज query चलाने की प्रक्रिया चरण-दर-चरण समझाई गई है
- Python उदाहरण में SentenceTransformers से query embedding बनाकर, ClickHouse में cosineDistance() फंक्शन का उपयोग करते हुए semantic खोज की जाती है
- इसके बाद वाला सारांश डेमो एप्लिकेशन
LangChainऔर OpenAIgpt-3.5-turboके साथ खोजे गए पोस्टों का summary बनाता है और इसे enterprise generative AI use case के रूप में विस्तारित करने की संभावना दिखाता है
Hacker News vector search डेटासेट का अवलोकन
- डेटासेट में Hacker News के 2.874 करोड़ पोस्ट और टिप्पणियाँ शामिल हैं और प्रत्येक आइटम में SentenceTransformers all-MiniLM-L6-v2 से उत्पन्न 384-डाइमेंशनल वेक्टर एम्बेडिंग है
- एम्बेडिंग sentence और paragraph के semantic meaning को पकड़ने के लिए एक local embedding model का उपयोग करता है
- यह डेटासेट user-generated text data पर आधारित large-scale vector search application के design, sizing और performance analysis के लिए उपयोगी है
डेटासेट के विस्तृत विवरण
- पूरा डेटा ClickHouse की तरफ से उपलब्ध कराई गई single Parquet फ़ाइल के रूप में है और इसे S3 bucket (
https://clickhouse-datasets.s3.amazonaws.com/hackernews-miniLM/…) से डाउनलोड किया जा सकता है - उपयोगकर्ताओं को data storage और memory requirements अनुमानित करने के लिए ClickHouse दस्तावेज़ का ANN index guide देखने की सलाह दी गई है
डेटा लोड और इंडेक्स निर्माण प्रक्रिया
hackernewstable में पोस्ट ID, text, vector, author, time, score जैसे कई attributes शामिल होकर बनाई गई है- डेटा लोड करने के लिए निम्न SQL command चलाएँ
INSERT INTO hackernews SELECT * FROM s3('https://clickhouse-datasets.s3.amazonaws.com/hackernews-miniLM/…');- लगभग 28.74 million rows insert करने में कुछ मिनट लगते हैं
- वेक्टर similarity index HNSW algorithm और cosineDistance से बनाया जाता है
ALTER TABLE hackernews ADD INDEX vector_index vector TYPE vector_similarity('hnsw', 'cosineDistance', 384, 'bf16', 64, 512); ALTER TABLE hackernews MATERIALIZE INDEX vector_index SETTINGS mutations_sync = 2;M=64,ef_construction=512सेट किया गया है; CPU cores और storage bandwidth के हिसाब से index निर्माण में कुछ मिनट से लेकर कई घंटे लग सकते हैं
- index build होने के बाद vector search query अपने आप index का उपयोग करती है
SELECT id, title, text FROM hackernews ORDER BY cosineDistance(vector, <search vector>) LIMIT 10- इंडेक्स मेमोरी में लोड करने में कुछ सेकंड से लेकर कुछ मिनट लग सकते हैं
Python आधारित semantic खोज उदाहरण
- Python स्क्रिप्ट में SentenceTransformers से इनपुट query का embedding बनाया जाता है और query execution के लिए ClickHouse Connect का प्रयोग होता है
cosineDistance()फंक्शन से input vector और dataset vectors के बीच similarity गणना की जाती है- उदाहरण रन में “Are OLAP cubes useful” query के लिए शीर्ष 20 संबंधित पोस्ट दिखाए गए
- आउटपुट में प्रत्येक पोस्ट की ID और text का एक छोटा हिस्सा (100 characters) दिखता है
सारांश डेमो एप्लिकेशन
- ClickHouse से semantic और document खोज के उदाहरण के बाद, एक generative AI आधारित summary application पेश किया गया है
- मुख्य चरण
- उपयोगकर्ता से विषय input लेना
SentenceTransformers all-MiniLM-L6-v2से विषय का embedding बनाना- ClickHouse में vector similarity search से संबंधित पोस्ट/टिप्पणियाँ fetch करना
LangChainऔर OpenAIgpt-3.5-turboसे खोज परिणाम का सारांश बनाना
- उदाहरण रन में “ClickHouse performance experiences” विषय पर खोज करने के बाद GPT-3.5 से summary generate हुई
- सारांश में ClickHouse की performance, simplicity, efficiency और large-scale analytics के लिए suitability को highlight किया गया, साथ ही कुछ DML और backup कठिनाइयों का भी उल्लेख है
- यह एप्लिकेशन customer sentiment analysis, customer support automation, meeting notes summary, financial दस्तावेज़ analysis जैसे कई enterprise generative AI use cases में expand किया जा सकता है
सारांश एप्लिकेशन की कोड संरचना
- Python code में
SentenceTransformer,clickhouse_connect,LangChain,ChatOpenAIआदि का उपयोग होता है - खोज परिणामों को combine करके उन्हें GPT-3.5 मॉडल को भेजा जाता है और अधिकतम 10 वाक्यों का summary बनाया जाता है
- इनपुट text के token count के आधार पर
stuffयाmap_reducechain चुनी जाती है - आउटपुट इस format में आता है: “Summary from chatgpt-3.5:”
1 टिप्पणियां
Hacker News राय
नए vector embedding dataset के लिए all-MiniLM-L6-v2 का उपयोग न करने की सलाह दी गई है
यह मॉडल शुरुआती tutorials में अक्सर इस्तेमाल होने वाला sentence-transformers आधारित एक व्यावहारिक मॉडल था, लेकिन अब यह पुराना हो चुका है और नवीनतम architecture और training pipeline को प्रतिबिंबित नहीं करता
इसका context length भी 512 ही है, जो छोटा है। इसकी जगह EmbeddingGemma की सिफारिश की गई है। यह 2k context window सपोर्ट करता है और benchmark performance बहुत अच्छी है
यह धीमा है, लेकिन इसके लायक है। बीच का विकल्प चाहें तो bge-base-en-v1.5 या nomic-embed-text-v1.5 भी अच्छे हैं
open weights, multilingual support, और 32k context देता है
यह लगभग 70MB का है, इसलिए डाउनलोड करना आसान है। EmbeddingGemma 300MB से बड़ा है, इसलिए थोड़ा भारी पड़ता है
सोच रहा हूँ कि 100MB से कम में कोई अच्छा मॉडल है क्या
‘Gemma license’ अस्पष्ट है, इसलिए कानूनी समीक्षा की ज़रूरत पड़ सकती है
अगर Google “restricted use” सूची बदल दे, तो कभी भी इसका उपयोग प्रतिबंधित होने का जोखिम है
जैसे Cohere vs OpenAI small vs OpenAI large जैसी तुलना की सामग्री कम मिलती है
समझ नहीं आता कि benchmark किस आधार पर किया जाए
यह CPU पर भी अच्छी तरह चलता है
2023 से सभी HN comments को BigQuery में embed करके hn.fiodorov.es पर host किया जा रहा है
source code GitHub पर सार्वजनिक है
“Who’s Gary Marcus” खोजने पर Google की तुलना में ज़्यादा negative नतीजे मिले
जानना चाहता हूँ कि इसका running cost कितना है
HN की Privacy और Data Policy के अनुसार comments का commercial उपयोग प्रतिबंधित है
तकनीकी रूप से vector representation भी derived work मानी जा सकती है
साइट की सामग्री की commercial copying, distribution, modification, या derivative creation प्रतिबंधित है
साथ ही data mining, scraping जैसी गतिविधियाँ भी मना हैं
मेरा मानना है कि vector database को अपनी याददाश्त के external aid की तरह बनाना मेरा अधिकार है
अच्छा होगा अगर HN में “similar sentences देखें” जैसा right-click menu हो
शायद इससे यह भी पता चले कि पहले भी वही सुझाव दिया गया था या नहीं
यह भी देखा जा सकेगा कि वही चर्चा अलग-अलग posts में कितनी बार दोहराई जाती है,
और मैं जो लिखने वाला हूँ उस पर पहले कैसी प्रतिक्रिया मिली थी, यह पहले से पता चल सकता है
यह एक तरह का semantic thread concept हो सकता है
सोच रहा हूँ कि vector search vs सामान्य text search की तुलना करने वाला कोई paper है क्या
यह भी सवाल है कि vector search वास्तव में उतना फ़ायदेमंद है या नहीं
कहा गया है कि HN posts और embedding metadata मिलाकर 55GB हैं; अगर वह Parquet file है, तो सोच रहा हूँ कि क्या यह सही आकार है
अगर comments का एकमात्र उद्देश्य commercial model training में इस्तेमाल होना है, तो यह थोड़ा कड़वा लगता है
लगता है कि आगे चलकर यह मेरी भागीदारी की इच्छा को प्रभावित कर सकता है
पहले लगता था कि मैं किसी अजनबी की मदद कर रहा हूँ, अब लगता है कि मैं किसी ऐसे व्यक्ति की मदद कर रहा हूँ जिसे मैं पसंद नहीं करता
भविष्य के किसी विशाल मॉडल के भीतर कहीं मेरी बात बहुत हल्के से गूंज सकती है
अच्छा होता अगर account/comment deletion feature होता
यह practically स्थायी data बन चुका है, और कभी न कभी मेरी comments प्राचीन ज्ञान की तरह बची रह सकती हैं
to-do list से एक काम हटा दिया (इस प्रोजेक्ट की वजह से)
मान लो कोई दोस्त पूछे… अगर यहाँ comment करूँ, तो क्या वह vector में बदल जाता है?