# vector Column वाली Table बनाना — Vector Databases

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

> 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 से खोजते हैं।

![चार हिस्से: type, operators, filters, transactions।](assets/figures/vector-databases/section-2-map.svg) — चित्र 2.1 — Type, operators, filters और transactions।

## 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 दस्तावेज़ समेत।

```sql
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 के बिना परिणाम दिखाए जा सकते हैं।

**Quiz:** vector(3) column में ग़लत आयाम का vector insert करने पर क्या होता है?

- [ ] वह चुपचाप padding से भरा जाता है
- [x] Error उठता है
- [ ] वह पाठ के रूप में रखा जाता है
- [ ] Database restart होता है

*Answer:* Error उठता है. आयाम जाँच embedding models के मिश्रण को जल्दी पकड़ती है।
