دليل استخدام pgvector
pgvector
هو وحدة توسعة تابعة لجهة خارجية لـ PostgreSQL، توفر نوع بيانات المتجه وكذلك طرق الوصول IVFFlat وHNSW. إنه مناسب للسيناريوهات التي تتطلب معالجة فعالة لبيانات المتجه، مثل التعلم الآلي، معالجة الصور، ومعالجة اللغات الطبيعية وما إلى ذلك. ستقدم هذه المقالة شرحاً مفصلاً حول كيفية تثبيت واستخدام pgvector
في ServBay.
تثبيت pgvector
يأتي ServBay مع وحدة التوسعة pgvector
; كل ما عليك فعله هو تفعيلها في قاعدة البيانات. فيما يلي خطوات تفعيل pgvector
:
الاتصال بقاعدة بيانات PostgreSQL:
bashpsql -U your_username -d your_database
1إنشاء التوسعة:
sqlCREATE EXTENSION vector;
1التحقق من التثبيت:
sql\dx
1
إعداد pgvector
بعد تفعيل pgvector
، يمكنك إنشاء وإدارة بيانات المتجهات واستخدام طرق الوصول المختلفة لأداء العمليات.
إنشاء جدول بيانات المتجه
فيما يلي مثال يوضح كيفية إنشاء جدول يتضمن بيانات المتجه.
إنشاء الجدول:
sqlCREATE TABLE embeddings ( id SERIAL PRIMARY KEY, vector VECTOR(3) );
1
2
3
4إدراج بيانات العينة:
sqlINSERT INTO embeddings (vector) VALUES ('[0.1, 0.2, 0.3]'), ('[0.4, 0.5, 0.6]'), ('[0.7, 0.8, 0.9]');
1
2
3
4
إنشاء فهرس المتجه
لتحسين أداء الاستعلام، يُنصح بإنشاء فهرس للعمود المتجه.
إنشاء فهرس IVFFlat:
sqlCREATE INDEX idx_ivfflat_vector ON embeddings USING ivfflat (vector) WITH (lists = 100);
1إنشاء فهرس HNSW:
sqlCREATE INDEX idx_hnsw_vector ON embeddings USING hnsw (vector) WITH (m = 16, ef_construction = 200);
1
استخدام pgvector للاستعلام عن المتجهات
فيما يلي بعض الأمثلة الشائعة للاستعلام عن المتجهات.
استعلام الأقرب من الجيران
- استعلام عن أقرب متجه:sql
SELECT id, vector FROM embeddings ORDER BY vector <-> '[0.2, 0.3, 0.4]' LIMIT 5;
1
2
3
استعلام تطابق المتجهات
- استعلام عن تطابق المتجهات:sql
SELECT id, vector, (vector <-> '[0.2, 0.3, 0.4]') AS similarity FROM embeddings ORDER BY similarity LIMIT 5;
1
2
3
تصور بيانات المتجه
يمكنك استخدام أدوات مختلفة لتصور البيانات (مثل Matplotlib) لتصور بيانات المتجه في pgvector
.
استخدام Matplotlib
تثبيت Matplotlib:
bashpip install matplotlib
1إنشاء سكريبت Python:
pythonimport psycopg2 import matplotlib.pyplot as plt # Connect to PostgreSQL database conn = psycopg2.connect( dbname="your_database", user="your_username", password="your_password", host="localhost" ) cur = conn.cursor() # Query vector data cur.execute("SELECT vector FROM embeddings") vectors = cur.fetchall() # Extract vector coordinates x = [v[0][0] for v in vectors] y = [v[0][1] for v in vectors] z = [v[0][2] for v in vectors] # Create 3D scatter plot fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter(x, y, z) ax.set_xlabel('X Label') ax.set_ylabel('Y Label') ax.set_zlabel('Z Label') plt.show() # Close database connection cur.close() conn.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
الخلاصة
pgvector
هو وحدة توسعة فعالة للمتجهات، من خلال تكوين واستخدام بسيط يمكنك تحقيق تخزين واستعلام فعال لبيانات المتجهات في PostgreSQL. يأتي ServBay مع وحدة التوسعة pgvector
؛ ما عليك سوى اتباع الخطوات المذكورة في هذه المقالة للتثبيت والتكوين، ومن ثم البدء في الاستخدام. من خلال أداء مختلف استعلامات وتحاليل المتجهات، يمكنك الاستفادة القصوى من بيانات المتجه وتقديم دعم قاعدة بيانات موثوق لتطبيقاتك.