# Data Model: Collections, Records, Payloads और Namespaces — Vector Databases

Source: https://www.geekswithgeeks.com/hi/vector-databases/b-datamodel

> हर vector के साथ क्या रखना है, डिज़ाइन करें।

## Database से पहले record तय करें

अधिकांश engines records को **collections** (या tables/indexes) में समूहित करते हैं जहाँ हर vector का **आयाम और दूरी metric समान** है, एक embedding model से जुड़ा। **Record** डिज़ाइन करें: स्थिर **ID** (दस्तावेज़ ID और chunk संख्या से बनी, ताकि दोबारा ingest करने पर duplicate नहीं, overwrite हो); **vector**; **पाठ** (या उसका संकेतक); और वे **payload fields** जिन पर आप filter या प्रदर्शन करेंगे (tenant, भाषा, वर्ष, स्रोत, पृष्ठ, अनुमतियाँ, content hash, embedding model नाम)। जिन payload fields पर filter करते हैं उन्हें index करें। ग्राहकों को अलग करने का तरीक़ा तय करें: **प्रति tenant collection** (मज़बूत अलगाव, कई छोटे indexes), **tenant field और filter वाली एक collection** (कुशल, filters लागू होने पर निर्भर), या जहाँ उपलब्ध हो **namespaces/partitions**। जब संभव हो बड़े दस्तावेज़ vector store से बाहर रखें: पाठ कहीं और रखें और ID रखें।

## निश्चित IDs duplicates रोकती हैं, चलाकर

मैंने यह सादा-Python (सिर्फ़ standard library) उदाहरण चलाया। वही दस्तावेज़ और chunk संख्या हमेशा वही ID बनाते हैं, इसलिए संपादन के बाद दोबारा ingest करने पर duplicate जुड़ने की जगह पुराना record overwrite होता है। बदला पाठ अलग content hash देता है, जो बताता है कि vector दोबारा निकालना है।

```python
import hashlib

def record_id(doc_id, chunk_no): return f"{doc_id}#chunk-{chunk_no}"
def content_hash(text): return hashlib.sha256(text.encode()).hexdigest()[:12]

v1 = "Unused leave up to 5 days can be carried over."
v2 = "Unused leave up to 10 days can be carried over."
print(record_id("hr-policy-2025", 3), record_id("hr-policy-2025", 3))
print("hash v1:", content_hash(v1), "| hash v2:", content_hash(v2), "| changed:", content_hash(v1) != content_hash(v2))
```

Output:

```
hr-policy-2025#chunk-3 hr-policy-2025#chunk-3
hash v1: 1c41c4893eab | hash v2: 20718f62c63d | changed: True
```

## हर record के साथ मॉडल नाम रखें

`model` field मिश्रित-मॉडल ग़लतियाँ पकड़ने योग्य और re-embedding को audit-योग्य बनाता है।

**Quiz:** Record IDs दस्तावेज़ ID और chunk संख्या से क्यों बनाएँ?

- [ ] Databases अन्य IDs मना करते हैं
- [ ] IDs random होनी चाहिए
- [ ] यह vectors छोटे करता है
- [x] दोबारा ingest करने पर duplicate नहीं, overwrite होता है

*Answer:* दोबारा ingest करने पर duplicate नहीं, overwrite होता है. स्थिर IDs अद्यतन को idempotent बनाती हैं।
