# Transactions और Types: vector, halfvec — Vector Databases

Source: https://www.geekswithgeeks.com/hi/vector-databases/p-tx

> ACID अद्यतन और छोटे भंडारण types उपयोग करें।

## Vectors को database गारंटियाँ मिलती हैं

चूँकि vectors सामान्य rows हैं, आपको **transactions** मिलते हैं: दस्तावेज़ का पाठ और उसका embedding परमाणु रूप से अद्यतन करें, विफल batch को roll back करें, rows हटाएँ और indexes पीछे चलें, और अपने पहले से उपयोग के औज़ारों (`pg_dump`, base backups, point-in-time recovery) से सुसंगत **backups** लें। pgvector छोटे types भी देता है: **`halfvec`** 16-bit floats रखता है (`vector` का आधा आकार), और अन्य उपयोगों के लिए **sparse** और **bit** vector types हैं; अपने संस्करण की सीमाओं, जैसे index किए जा सकने वाले अधिकतम आयाम, के लिए extension का दस्तावेज़ देखें। छोटे types memory और disk घटाते हैं, आम तौर पर कम recall हानि के साथ, पर अपने डेटा पर मापें।

## Roll back हुआ delete, चलाकर

मैंने यह SQL Docker container में pgvector extension संस्करण 0.8.6 के साथ PostgreSQL 16 पर चलाया। Transaction के भीतर tenant `beta` की row हट गई है (4 rows); `ROLLBACK` के बाद सारी 5 rows लौट आती हैं। Vector column किसी अन्य column की तरह transaction में भाग लेता है।

```sql
BEGIN;
DELETE FROM docs WHERE tenant = 'beta';
SELECT count(*) AS inside_transaction FROM docs;
ROLLBACK;
SELECT count(*) AS after_rollback FROM docs;
```

Output:

```
 inside_transaction 
--------------------
                  4
(1 row)

 after_rollback 
----------------
              5
(1 row)
```

## halfvec छोटा है, चलाकर

मैंने यह SQL Docker container में pgvector extension संस्करण 0.8.6 के साथ PostgreSQL 16 पर चलाया। इस माप में 4-आयामी `vector` मान 24 bytes और `halfvec` 16 bytes लेता है, क्योंकि 16-bit floats 32-bit के आधे हैं (निश्चित header समान है)।

```sql
SELECT pg_column_size('[0.1,0.2,0.3,0.4]'::vector(4))  AS vector_bytes,
       pg_column_size('[0.1,0.2,0.3,0.4]'::halfvec(4)) AS halfvec_bytes;
```

Output:

```
 vector_bytes | halfvec_bytes 
--------------+---------------
           24 |            16
(1 row)
```

**Quiz:** Transactions vector डेटा को क्या लाभ देते हैं?

- [ ] स्वतः अधिक recall
- [ ] तेज़ embeddings
- [x] पाठ और embedding का परमाणु अद्यतन, और rollback
- [ ] Backups की ज़रूरत नहीं

*Answer:* पाठ और embedding का परमाणु अद्यतन, और rollback. Row-स्तर की ACID semantics vector column पर भी लागू होती है।
