0Pricing
SQL Academy · درس

البحث المتجهي باستخدام pgvector

استخدم إضافة pgvector لتخزين التضمينات وإجراء بحث تقريبي عن أقرب الجيران باستخدام ivfflat / HNSW

البحث المتجهي باستخدام pgvector درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.

ما فائدة المتجهات؟

تشفّر التضمينات المعنى. فالوثيقتان اللتان تتناولان الموضوع نفسه تكون لهما متجهات متشابهة. ويُستخدم البحث بالمتجهات في البحث الدلالي وRAG، أي التوليد المعزّز بالاسترجاع، وأنظمة التوصية.

تمكين pgvector

تتوفر هذه الإضافة على نطاق واسع، إذ تأتي مدمجة في RDS وCloud SQL وSupabase:

CREATE EXTENSION vector;

عمود المتجه

عرّف عمودًا يحدد عدد أبعاد نموذج التضمين لديك:

CREATE TABLE docs (
  id BIGSERIAL PRIMARY KEY,
  title TEXT NOT NULL,
  body TEXT NOT NULL,
  embedding vector(1536)
);

-- 1536 is OpenAI text-embedding-3-small dimension; varies by model.

إدراج التضمينات

أدرج المتجه باعتباره قيمة مصفوفة:

INSERT INTO docs (title, body, embedding)
VALUES ('SQL Course', 'Learn SQL', '[0.013, -0.024, ...]');

عوامل المسافة

يوفر pgvector ثلاثة عوامل:

  • <-> — مسافة إقليدية (L2)
  • <#> — حاصل الضرب الداخلي السالب
  • <=> — مسافة جيب التمام، وهي الأكثر شيوعًا للتضمينات

البحث عن أقرب جار

اعثر على المستندات الأقرب إلى متجه استعلام:

SELECT id, title, 1 - (embedding <=> $1) AS similarity
FROM docs
ORDER BY embedding <=> $1
LIMIT 10;

فهرس IVFFlat

بالنسبة إلى مجموعات البيانات الكبيرة، أنشئ فهرسًا تقريبيًا للبحث عن أقرب جار (ANN):

CREATE INDEX docs_embedding_idx
  ON docs USING IVFFLAT (embedding vector_cosine_ops)
  WITH (lists = 100);

-- Tune lists by row count: rule of thumb sqrt(N).
-- Set probes per query for accuracy:
SET ivfflat.probes = 10;

فهرس HNSW ‏(PG 16+)

يوفر في حالات كثيرة استرجاعًا وزمن استجابة أفضل من IVFFlat:

CREATE INDEX docs_embedding_hnsw
  ON docs USING HNSW (embedding vector_cosine_ops);

SET hnsw.ef_search = 100;

البحث بالمتجهات مع التصفية

اجمع بين البحث بالمتجهات والتصفية المنظمة:

SELECT id, title
FROM docs
WHERE language = 'en'
  AND created_at >= NOW() - INTERVAL '30 days'
ORDER BY embedding <=> $1
LIMIT 10;
-- For best perf, partial index on the filter.

نمط RAG

استرجع N من المستندات ذات الصلة باستخدام التضمين، ثم مرّرها إلى نموذج لغوي كبير باعتبارها سياقًا:

-- 1. Embed user query
-- 2. SELECT top-N docs by cosine
-- 3. Send docs + query to LLM
-- 4. Return LLM's answer to user

البحث الهجين

اجمع بين البحث بالمتجهات والبحث المعجمي باستخدام tsvector للحصول على أفضل النتائج، إذ لا يلتقط أي منهما كل شيء بمفرده:

SELECT id, title,
  0.6 * (1 - (embedding <=> $1)) + 0.4 * ts_rank(search_doc, $2) AS score
FROM docs
WHERE embedding <=> $1 < 0.7
   OR search_doc @@ $2
ORDER BY score DESC LIMIT 10;

اختيار عدد الأبعاد

التضمينات الأكبر تكون أدق، لكنها تحتاج إلى مساحة تخزين أكبر وتكون أبطأ. تعمل تطبيقات كثيرة جيدًا باستخدام نماذج ذات 384 إلى 768 بُعدًا. اختر نموذجًا والتزم به.

خلاصة

تضيف pgvector البحث بالمتجهات كإمكانية أساسية إلى Postgres.

  • نوع العمود vector(N)
  • فهارس IVFFlat وHNSW
  • مسافة جيب التمام باستخدام <=> للتضمينات
  • البحث الهجين مع FTS للحصول على أفضل استرجاع

تحقق سريع

تبحث عن التشابه الدلالي باستخدام تضمينات OpenAI. ما عامل مسافة pgvector الذي تستخدمه عادةً؟

الأسئلة الشائعة

هل درس «البحث المتجهي باستخدام pgvector» مجاني؟

نعم — نص درس «البحث المتجهي باستخدام pgvector» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.

ماذا ستتعلم في «البحث المتجهي باستخدام pgvector»؟

استخدم إضافة pgvector لتخزين التضمينات وإجراء بحث تقريبي عن أقرب الجيران باستخدام ivfflat / HNSW تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟

لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «البحث المتجهي باستخدام pgvector»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟

نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. البحث بالترايغرام (pg_trgm) للمطابقة التقريبية
  2. البحث في النص الكامل باستخدام tsvector وGIN
  3. الفهرسة الجغرافية المكانية باستخدام PostGIS
  4. البحث المتجهي باستخدام pgvector
← العودة إلى SQL Academy