पाठ 8 / 28
Transactions और Types: vector, halfvec
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 में भाग लेता है।
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 समान है)।
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)त्वरित जाँच: Transactions vector डेटा को क्या लाभ देते हैं?
- स्वतः अधिक recall
- तेज़ embeddings
- पाठ और embedding का परमाणु अद्यतन, और rollback
- Backups की ज़रूरत नहीं
Answer
पाठ और embedding का परमाणु अद्यतन, और rollback — Row-स्तर की ACID semantics vector column पर भी लागू होती है।