4 पॉइंट द्वारा GN⁺ 2025-11-29 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 और OpenAI gpt-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 देखने की सलाह दी गई है

डेटा लोड और इंडेक्स निर्माण प्रक्रिया

  • hackernews table में पोस्ट 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 पेश किया गया है
  • मुख्य चरण
    1. उपयोगकर्ता से विषय input लेना
    2. SentenceTransformers all-MiniLM-L6-v2 से विषय का embedding बनाना
    3. ClickHouse में vector similarity search से संबंधित पोस्ट/टिप्पणियाँ fetch करना
    4. LangChain और OpenAI gpt-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_reduce chain चुनी जाती है
  • आउटपुट इस format में आता है: “Summary from chatgpt-3.5:”

1 टिप्पणियां

 
GN⁺ 2025-11-29
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 भी अच्छे हैं

    • इन दिनों Qwen3-Embedding-0.6B को प्राथमिकता देता हूँ
      open weights, multilingual support, और 32k context देता है
    • फिर भी all-Mini का फायदा यह है कि इसे client side पर चलाया जा सकता है
      यह लगभग 70MB का है, इसलिए डाउनलोड करना आसान है। EmbeddingGemma 300MB से बड़ा है, इसलिए थोड़ा भारी पड़ता है
      सोच रहा हूँ कि 100MB से कम में कोई अच्छा मॉडल है क्या
    • EmbeddingGemma की license समस्या निराशाजनक है
      ‘Gemma license’ अस्पष्ट है, इसलिए कानूनी समीक्षा की ज़रूरत पड़ सकती है
      अगर Google “restricted use” सूची बदल दे, तो कभी भी इसका उपयोग प्रतिबंधित होने का जोखिम है
    • commercial embedding models के बीच तुलना जानने की उत्सुकता है
      जैसे Cohere vs OpenAI small vs OpenAI large जैसी तुलना की सामग्री कम मिलती है
      समझ नहीं आता कि benchmark किस आधार पर किया जाए
    • कुछ हफ्ते पहले EmbeddingGemma और nomic-embed-text-v1 का AB test किया था, और nomic ने काफी बेहतर नतीजे दिए
      यह CPU पर भी अच्छी तरह चलता है
  • 2023 से सभी HN comments को BigQuery में embed करके hn.fiodorov.es पर host किया जा रहा है
    source code GitHub पर सार्वजनिक है

    • मैंने खुद इस्तेमाल किया, और इसने काफी अच्छे जवाब दिए
      “Who’s Gary Marcus” खोजने पर Google की तुलना में ज़्यादा negative नतीजे मिले
      जानना चाहता हूँ कि इसका running cost कितना है
    • GitHub repo का architecture विवरण प्रभावशाली लगा। शानदार प्रोजेक्ट है
    • embedding किस hardware पर बनाई गई, और इसमें कितना समय लगा, यह जानना चाहता हूँ
    • क्या users अपनी data deletion request के लिए issue submit feature का उपयोग कर सकते हैं, यह जानना है
  • HN की Privacy और Data Policy के अनुसार comments का commercial उपयोग प्रतिबंधित है
    तकनीकी रूप से vector representation भी derived work मानी जा सकती है

    • Y Combinator Terms of Use के अनुसार
      साइट की सामग्री की commercial copying, distribution, modification, या derivative creation प्रतिबंधित है
      साथ ही data mining, scraping जैसी गतिविधियाँ भी मना हैं
    • बेशक vector derived work है, लेकिन मेरी याददाश्त भी उसी तरह derived work ही है
      मेरा मानना है कि vector database को अपनी याददाश्त के external aid की तरह बनाना मेरा अधिकार है
    • मज़ाक में कह रहा हूँ, मैं तो अपने सारे comments हटाने का अनुरोध करने ही वाला था। अब शायद ज़रूरत नहीं पड़ेगी
    • तो फिर OpenAI को भी कोई बता दे
  • अच्छा होगा अगर HN में “similar sentences देखें” जैसा right-click menu हो
    शायद इससे यह भी पता चले कि पहले भी वही सुझाव दिया गया था या नहीं

    • comments और threads को semantic आधार पर जोड़ना सच में दिलचस्प होगा
      यह भी देखा जा सकेगा कि वही चर्चा अलग-अलग posts में कितनी बार दोहराई जाती है,
      और मैं जो लिखने वाला हूँ उस पर पहले कैसी प्रतिक्रिया मिली थी, यह पहले से पता चल सकता है
      यह एक तरह का semantic thread concept हो सकता है
    • उस feature का उपयोग करो, तो शायद “tangential, orthogonal, anecdata, enshittification, razor…” जैसे शब्दों की भरमार दिखेगी
    • पहले किसी ने HN के लिए sockpuppet account पहचानने का tool बनाया था, और वह सिर्फ writing style से लगभग पूरी तरह पहचान लेता था, जो काफ़ी डरावना था
  • सोच रहा हूँ कि vector search vs सामान्य text search की तुलना करने वाला कोई paper है क्या
    यह भी सवाल है कि vector search वास्तव में उतना फ़ायदेमंद है या नहीं

    • सामान्य search को आमतौर पर bm25 कहा जाता है। search से जुड़े अधिकांश papers में bm25 को baseline की तरह इस्तेमाल किया जाता है
    • किसी खास paper की जानकारी नहीं है, लेकिन Bluesky पर reachsumit.com अकाउंट अक्सर RAG और information retrieval से जुड़ी सामग्री साझा करता है
    • तुलना किस पहलू से हो रही है, यह महत्वपूर्ण है — server load है या user experience, उसी पर उत्तर निर्भर करेगा
  • कहा गया है कि HN posts और embedding metadata मिलाकर 55GB हैं; अगर वह Parquet file है, तो सोच रहा हूँ कि क्या यह सही आकार है

    • शायद ज़्यादातर हिस्सा embedding data का ही होगा। मेरे DB में पूरे HN posts और comments हैं, और वह uncompressed 17.68GB, compressed 5.67GB के आसपास है
    • compression efficiency आश्चर्यजनक रूप से अच्छी है। Brotli compression इस्तेमाल करने पर लाखों pages भी 1~2GB तक सिमट जाते हैं
    • तालिका देखकर लगता है कि वह आँकड़ा सही है। मैं भी अपने upvote data को embed करके अपनी पसंद का विश्लेषण करना चाहता हूँ
    • compressed स्थिति में यह काफ़ी वाजिब आकार लगता है
  • अगर comments का एकमात्र उद्देश्य commercial model training में इस्तेमाल होना है, तो यह थोड़ा कड़वा लगता है
    लगता है कि आगे चलकर यह मेरी भागीदारी की इच्छा को प्रभावित कर सकता है

    • LLM के आने के बाद इंटरनेट पर उपयोगी चीज़ें लिखने का मन कम हो गया है
      पहले लगता था कि मैं किसी अजनबी की मदद कर रहा हूँ, अब लगता है कि मैं किसी ऐसे व्यक्ति की मदद कर रहा हूँ जिसे मैं पसंद नहीं करता
    • मुझे तो उल्टा यह विचार मज़ेदार लगता है कि मेरी अजीब-सी comments LLM के latent space में निशान बनकर रह जाएँगी
      भविष्य के किसी विशाल मॉडल के भीतर कहीं मेरी बात बहुत हल्के से गूंज सकती है
    • माहौल बहुत गंभीर हो गया है। बस मज़े से लेने की बात कहनी है
  • अच्छा होता अगर account/comment deletion feature होता

    • जो कुछ हम लिख चुके हैं, वह दुनिया भर की अनगिनत devices पर पहले ही कॉपी हो चुका है
      यह practically स्थायी data बन चुका है, और कभी न कभी मेरी comments प्राचीन ज्ञान की तरह बची रह सकती हैं
    • HN dataset पहले ही कई जगह कॉपी हो चुका है, इसलिए यहाँ जो लिखते हैं उसे public content मानकर चलना चाहिए
  • to-do list से एक काम हटा दिया (इस प्रोजेक्ट की वजह से)

  • मान लो कोई दोस्त पूछे… अगर यहाँ comment करूँ, तो क्या वह vector में बदल जाता है?