HeadlinesBriefing HeadlinesBriefing.com

pg_vectorsearch: PostgreSQL के लिए तेज़ वेक्टर खोज एक्सटेंशन

Hacker News •
×

pg_vectorsearch एक PostgreSQL एक्सटेंशन है जो उच्च-प्रदर्शन वाली अनुमानित निकटतम पड़ोसी (ANN) खोज के लिए बनाया गया है। इसे GitHub पर साझा किया गया है और Hacker News पर इसकी चर्चा हुई है। यह फिलहाल अल्फा चरण में है और उत्पादन के बजाय परीक्षण के लिए है। पूर्व-रिलीज़ संस्करणों के बीच अपग्रेड संभव न हो सकता है, इसलिए उपयोगकर्ताओं को एक्सटेंशन और उसके इंडेक्स को हटाकर फिर से बनाने की योजना रखनी चाहिए। चेंजलॉग में ज्ञात समस्याएँ सूचीबद्ध हैं।

इस एक्सटेंशन का PRISM इंडेक्स (Partitioned Routing Index for Similarity Matching) एक इंडेक्स एक्सेस मेथड है, जो अवधारणा के स्तर पर pgvector के IVFFlat से मिलता-जुलता है, लेकिन यह RaBitQ क्वांटाइज़ेशन, क्रमिक रूटिंग और विभाजन पर आधारित है। यह C में लागू है और SIMD दूरी गणना (AVX2, AVX512, NEON), गतिशील इन्सर्ट, अपडेट और डिलीट, तथा prism_rebalance के जरिए पोस्टिंग सूचियों के पुनर्संतुलन का समर्थन करता है। परियोजना का दावा है कि क्वेरी और इंडेक्स निर्माण, दोनों में PRISM, pgvector के IVFFlat और HNSW से काफी तेज़ है, और 10 करोड़ वेक्टर वाले डेटासेट पर, एक चौथाई मेमोरी वाले इंस्टेंस में, समान रिकॉल पर HNSW से बेहतर प्रदर्शन करता है।

PRISM वेक्टरों को क्लस्टरों में बाँटने के लिए एक क्रमिक सेंट्रॉइड ट्री का उपयोग करता है, और उस ट्री को गर्म रखने के लिए PostgreSQL बफर कैश पर निर्भर करता है। वेक्टर RaBitQ से क्वांटाइज़ होकर पोस्टिंग सूचियों में संग्रहीत होते हैं। इसकी त्रुटि सीमाएँ खोज को उन वेक्टरों को बाहर करने देती हैं जो निकटतम पड़ोसी नहीं हो सकते, जिससे आवश्यक पूर्ण-परिशुद्धता रीरैंक की संख्या घटती है।

उपयोगकर्ता वेक्टर को मूल vec32 या vec16 कॉलम में संग्रहीत कर सकते हैं, या मौजूदा pgvector के vector या halfvec कॉलम पर सीधे PRISM इंडेक्स बना सकते हैं, बिना अपनी तालिकाओं या क्वेरी को बदले। दोनों तरीके समान ऑपरेटर और ट्यूनिंग सेटिंग्स का उपयोग करते हैं, जैसे कि रिकॉल और गति के बीच संतुलन के लिए prism.nprobe।

स्रोत: Hacker News · HeadlinesBriefing द्वारा सारांशित