3 पॉइंट द्वारा GN⁺ 2024-05-04 | 1 टिप्पणियां | WhatsApp पर शेयर करें

SQLite के लिए वेक्टर खोज हेतु नया एक्सटेंशन विकसित किया जा रहा है

  • sqlite-vec एक नया SQLite एक्सटेंशन है जो वेक्टर खोज के लिए बनाया गया है और इसे वर्तमान में मौजूद sqlite-vss की जगह लेने के लिए डिज़ाइन किया गया है।
  • यह एक एम्बेड करने योग्य, पर्याप्त तेज़ वेक्टर खोज टूल बनेगा जो SQLite चलने वाले सभी environment (WASM सहित) पर काम कर सकेगा।
  • अभी यह development में है, लेकिन जैसे ही यह तैयार हो जाए, repo को चेक करने की सलाह दी जाती है।

sqlite-vec की विशेषताएँ

  • यह शुद्ध C में लिखा गया और dependency-रहित SQLite एक्सटेंशन है।
  • तेज़ वेक्टर खोज के लिए custom SQL functions और virtual tables उपलब्ध कराता है।
  • वेक्टर ऑपरेशन्स (quantization, JSON/BLOB/numpy conversion, vector operations आदि) के लिए अन्य tools और utilities भी उपलब्ध हैं।
  • केवल SQL से ही वेक्टर खोज की जा सकती है (CREATE VIRTUAL TABLE, INSERT INTO, SELECT statements का उपयोग करके)।

sqlite-vec के फायदे

  • शुद्ध C में लिखे जाने के कारण सभी platforms (Linux/MacOS/Windows), वेब ब्राउज़र (WebAssembly), मोबाइल फोन, Raspberry Pi आदि पर रन कर सकता है।
  • binary size केवल कुछ सौ KB के स्तर पर छोटा रहता है।
  • memory उपयोग को बेहतर तरीके से नियंत्रित किया जा सकता है (वेक्टर को chunk-wise store करके और KNN खोज के समय प्रत्येक chunk को पढ़कर)।
  • PRAGMA mmap_size command से in-memory performance बेहतर हो सकती है।
  • Matryoshka embedding जैसी variable-length embeddings तथा int8/bit vectors के साथ binary और scalar quantization को support करने से दोनों प्रकार की quantization संभव है।
  • speed, accuracy और disk space पर अधिक नियंत्रण मिलता है।
  • शुरुआत में केवल exhaustive (पूर्ण) vector search support करेगा, बाद में IVF + HNSW जोड़ने की योजना है।

डेमो

  • ब्राउज़र में सीधे sqlite-vec रन किया जा सकता है (movies.bit.db SQLite database लोड किया जाता है)।
  • articles table में title, release_date, overview जैसी columns मौजूद हैं।
  • vec_movies virtual table में overview column का embedding vector store होता है (768-dimensional binary vector, 96 bytes)।
  • KNN शैली की खोज से चुनी हुई फिल्म और सबसे similar 10 फिल्में खोजी जा सकती हैं।

sqlite-vss की समस्याएँ

  • केवल Linux + MacOS पर काम करता है (Windows, WASM, मोबाइल डिवाइस आदि support नहीं करता)।
  • सभी vectors को मेमोरी में ही रखा जाता है।
  • कई transaction-related bugs और issues मौजूद हैं।
  • compile करना बहुत कठिन और समयसाध्य है।
  • सामान्य vector ऑपरेशन्स जैसे scalar/binary quantization उपलब्ध नहीं हैं।
  • Faiss पर निर्भर रहने से उत्पन्न होने वाली समस्याएँ।

sqlite-vec का विकास स्टेटस

  • core functionality काम कर रही है, लेकिन error handling और testing लगभग मौजूद नहीं है।
  • sqlite-vec.c फाइल में 246 TODO entries हैं।
  • सभी TODO पूरे होने के बाद docs, demo, bindings आदि के साथ sqlite-vec v0.1.0 रिलीज़ करने की योजना है (लगभग एक महीने का लक्ष्य)।

GN⁺ की राय

  • कई platforms और environments में चल सकने वाला एक embedded vector search tool होना बड़ा आकर्षक है। खासकर, वेब ब्राउज़र में इसे WASM से रन करने की क्षमता काफ़ी दिलचस्प है।
  • मेमोरी नियंत्रण, variable-length embeddings और quantization जैसी आधुनिक vector search टेक्नोलॉजी को शामिल करने वाला दूसरा बड़ा प्लस पॉइंट है। लगता है कि speed, accuracy और storage space पर ज्यादा flexible control किया जा सकता है।
  • लेकिन सिर्फ exhaustive search support करना अभी सीमा है। डेटा बड़ा होने पर खोज की गति पर असर पड़ सकता है। IVF+HNSW जैसी ANN algorithms का support urgently चाहिए।
  • साथ ही यह अभी अभी अपने शुरुआती चरण में है, इसलिए production environment में अभी सीधे उपयोग करना संभव नहीं लगता। बेहतर stabilization के लिए अभी थोड़ा समय और चाहिए।
  • Faiss जैसी existing vector search libraries के साथ benchmark तुलना भी जरूरी होगी। pure SQLite extension का लाभ है, लेकिन performance की वास्तविक परीक्षा अभी बाकी है।

1 टिप्पणियां

 
GN⁺ 2024-05-04
Hacker News टिप्पणी
  • लेखक खुद टिप्पणी सेक्शन में शामिल होकर नए परियोजना sqlite-vec का परिचय दे रहे हैं। यह अभी डेवलपमेंट में है, लेकिन अगले कुछ हफ्तों में v0.1.0 रिलीज़ करने का लक्ष्य बताया गया है। इसे पहले विकसित किए गए sqlite-vss का फॉलो-अप/उत्तराधिकारी प्रोजेक्ट माना जा रहा है।
  • sqlite-vec एक ऐसा लाइब्रेरी है जो embedded vector search के लिए ऑप्टिमाइज़्ड है, और यह अलग-अलग OS, मोबाइल तथा Raspberry Pi जैसी डिवाइसों पर काम कर सकता है। लेखक इसे Beepy नाम के semantic search ऐप में इस्तेमाल करके देख रहे हैं।
  • किसी ने पूछा कि 768-डाइमेंशन वाले vector को 96-byte में कैसे store किया जाता है। सामान्यतः float64 में 6144-byte लगते हैं, इसलिए compression या approximate-value storage जैसी तकनीकों को लेकर जिज्ञासा दिखी।
  • एक डेवलपर, जिसने पहले sqlite-vss इस्तेमाल किया था, ने कहा कि इससे RAG मॉडल बनाने में मदद मिली। उसने बताया कि Ubuntu environment में यह ठीक-ठाक चला।
  • DuckDB ने भी हाल ही में similar vector similarity search extension रिलीज़ किया है।
  • Qdrant vector DB का इस्तेमाल करके AI RAG ऐप बनाते समय के अनुभव का ज़िक्र करते हुए, sqlite-vec के लिए अपेक्षा/उत्साह व्यक्त किया।
  • चर्चा यह थी कि क्या इसे सिर्फ़ SQLite के public API के साथ ही इस्तेमाल किया जाएगा या सीधे SQLite amalgamation में integrate किया जाएगा। WebAssembly binding के नज़रिए से deployment approach को लेकर भी चिंता जताई गई।
  • एक टिप्पणी में कहा गया कि OSS प्रोजेक्ट तब अच्छे लगते हैं जब वे किसी specific need से मैच करते हैं; लेखक टाइपस्क्रिप्ट इकोसिस्टम के लिए उपयोगी हो सकने वाले ideas पर विचार कर रहे हैं।
  • किसी ने कहा कि यह कुछ महीने पहले वाले sqlite-vss issue का possible solution हो सकता है।
  • सवाल उठा कि सभी feature vectors की dimensionality कैसे मैच की जाती है। ऐसा लगता है कि स्ट्रिंग्स को float में बदलकर स्टोर किया जाता है; क्या Hamming distance calculation में अलग लंबाई के vectors को भी consider किया जाता है, इसे verify करना पड़ेगा।
  • यह भी राय दी गई कि development शायद README-driven तरीके से हुआ है—यानी क्या शुरुआत documentation लिखने से ही की गई थी?