पाठ 12 / 28

Index चुनना

Index प्रकार को डेटा आकार, अद्यतन पैटर्न और recall ज़रूरतों से मिलाएँ।

आकार और बदलाव दर तय करते हैं

व्यावहारिक मार्गदर्शिका: लगभग 100,000 vectors तक flat/brute force उपयोग करें, क्योंकि वह सटीक और सरल है। कुछ लाख से दसियों लाख तक, memory अनुमति दे तो HNSW मज़बूत डिफ़ॉल्ट है, और memory तंग हो तो IVF रूप; अरबों समाने या लागत घटाने को scalar या product quantisation जोड़ें। अद्यतन पैटर्न (बार-बार insert और delete कुछ indexes में सस्ते और कुछ में महँगे), filters (जो indexes अच्छी तरह filter नहीं कर सकते वे ज़्यादा लाने को मजबूर करते हैं), build समय (बड़े indexes में घंटे लग सकते हैं) और GPU खोज चाहिए या नहीं, पर विचार करें। जो भी चुनें, flat index को test oracle के रूप में रखें, index parameters डेटा संस्करण के साथ दर्ज करें, और डेटा बढ़ने पर दोबारा मापें।

मोटी निर्णय मार्गदर्शिका

सिर्फ़ शुरुआती बिंदु; recall और latency हमेशा ख़ुद मापें।

Vectors            Updates         Memory        Reasonable start
< ~100k             any             any           Flat (exact)
100k - 10M          mostly reads    plenty        HNSW
100k - 10M          mostly reads    tight         IVF (+ scalar quantisation)
10M - billions      batch rebuilds  must shrink   IVF + product quantisation, sharding
heavy filters       any             any           an engine with filter-aware search; over-fetch + post-filter otherwise

Flat index को test oracle रखें

Production में भी flat index (या उसका नमूना) रखें ताकि समय के साथ approximate index का recall मापा जा सके।

त्वरित जाँच: 20,000 vectors के लिए समझदार शुरुआत कौन-सा index है?

  • 32 गुना संपीड़न वाला product quantisation
  • Flat (सटीक) index
  • Sharded cluster
  • कोई index नहीं, अनुमान
Answer

Flat (सटीक) index — छोटे आकार पर सटीक खोज काफ़ी तेज़ है और tuning हटाती है।