# Index चुनना — Embeddings और Vector Search

Source: https://www.geekswithgeeks.com/hi/embeddings/s-choose

> 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 हमेशा ख़ुद मापें।

```text
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 मापा जा सके।

**Quiz:** 20,000 vectors के लिए समझदार शुरुआत कौन-सा index है?

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

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