पाठ 5 / 28
vector Column वाली Table बनाना
Extension चालू करें और सामान्य columns के पास vectors रखें।
एक विशेष column वाली सामान्य table
PostgreSQL में आप CREATE EXTENSION vector; से pgvector चालू करते हैं, फिर अपने embedding model के आयामों की संख्या के साथ vector(n) प्रकार का column घोषित करते हैं। Row में पाठ, tenant, वर्ष और बाक़ी कुछ भी हो सकता है, इसलिए एक query vector similarity और relational शर्तें दोनों उपयोग कर सकती है, और एक transaction दस्तावेज़ और उसके vector को साथ अद्यतन कर सकता है। Vectors '[0.9, 0.1, 0.0]' जैसे पाठ literals के रूप में लिखे जाते हैं या आपके driver द्वारा arrays के रूप में दिए जाते हैं। आयाम जाँचा जाता है: ग़लत लंबाई का vector insert करना error है, जो मॉडल मिलाने से बचाता है। Demo 3 आयाम उपयोग करता है ताकि आप संख्याएँ पढ़ सकें; असली embeddings में सैकड़ों होते हैं।
दूरी operator वाला SQL
pgvector PostgreSQL में vector type, दूरी operators और ANN indexes जोड़ता है, इसलिए आप सादे SQL से खोजते हैं।
Table बनाना और पाँच rows insert करना, चलाकर
मैंने यह SQL Docker container में pgvector extension संस्करण 0.8.6 के साथ PostgreSQL 16 पर चलाया। Table सामान्य columns (tenant, year, body) को vector(3) column के साथ मिलाती है। पाँच rows जाती हैं, दूसरे tenant (beta) की row और पुराने 2022 दस्तावेज़ समेत।
SET client_min_messages = warning;
DROP TABLE IF EXISTS docs;
CREATE TABLE docs (
id serial PRIMARY KEY,
tenant text NOT NULL,
year int NOT NULL,
body text NOT NULL,
embedding vector(3) NOT NULL
);
INSERT INTO docs (tenant, year, body, embedding) VALUES
('acme', 2025, 'leave policy 2025', '[0.9, 0.1, 0.0]'),
('acme', 2022, 'old leave policy', '[0.8, 0.2, 0.1]'),
('acme', 2025, 'travel and hotels', '[0.1, 0.9, 0.1]'),
('beta', 2025, 'beta confidential memo', '[0.9, 0.0, 0.2]'),
('acme', 2025, 'security basics', '[0.0, 0.1, 0.9]');
SELECT id, tenant, year, body FROM docs ORDER BY id;
Output:
id | tenant | year | body ----+--------+------+------------------------ 1 | acme | 2025 | leave policy 2025 2 | acme | 2022 | old leave policy 3 | acme | 2025 | travel and hotels 4 | beta | 2025 | beta confidential memo 5 | acme | 2025 | security basics (5 rows)
पाठ को vector के पास रखें
मूल chunk पाठ उसी row में रखने से दूसरी lookup के बिना परिणाम दिखाए जा सकते हैं।
त्वरित जाँच: vector(3) column में ग़लत आयाम का vector insert करने पर क्या होता है?
- वह चुपचाप padding से भरा जाता है
- Error उठता है
- वह पाठ के रूप में रखा जाता है
- Database restart होता है
Answer
Error उठता है — आयाम जाँच embedding models के मिश्रण को जल्दी पकड़ती है।