بحث المتجهات في Oracle AI Database 26ai للمطوّرين
ابنِ RAG وبحثًا دلاليًا داخل قاعدة البيانات مباشرة عبر أعمدة VECTOR و VECTOR_DISTANCE وفهارس المتجهات.
يوفّر Oracle AI Database 26ai (ميزة AI Vector Search) نوع بيانات VECTOR أصليًا ودوال SQL لبحث التشابه. تخزّن المتجهات بجوار صفوفك وتشغّل استعلامات دلالية بـ SQL عادي، دون مخزن متجهات منفصل.
أضف عمود VECTOR
ALTER TABLE docs ADD (embedding VECTOR(1536, FLOAT32));
الرقم الأول هو عدد الأبعاد ويجب أن يطابق نموذج التضمين لديك (الرقم 1536 مجرد مثال؛ تحقّق من حجم مخرجات نموذجك). ترفض قاعدة البيانات أي متجه بحجم مختلف بالخطأ ORA-51803. أما FLOAT32 فهو صيغة العناصر، وتتوفر أيضًا INT8 وFLOAT64 وBINARY.
التعبئة والاستعلام
ولّد متجهًا لكل صف باستخدام نموذج تضمين وخزّنه في العمود. يمكنك استدعاء النموذج من تطبيقك، أو تحميل نموذج تضمين بصيغة ONNX داخل قاعدة البيانات عبر DBMS_VECTOR.LOAD_ONNX_MODEL وتوليد المتجهات بـ SQL عبر VECTOR_EMBEDDING. بعدها رتّب الصفوف حسب بُعدها عن متجه السؤال باستخدام VECTOR_DISTANCE:
SELECT id, body FROM docs ORDER BY VECTOR_DISTANCE(embedding, :query_vec, COSINE) FETCH EXACT FIRST 5 ROWS ONLY;
تفرض FETCH EXACT بحثًا دقيقًا يقارن متجه السؤال بكل الصفوف، وتطلب FETCH APPROX بحثًا تقريبيًا عبر فهرس متجهات. إذا لم تكتب أيًّا منهما فقد تستخدم قاعدة البيانات فهرس متجهات إن وُجد، لذا اكتب EXACT حين تحتاج نتائج دقيقة مضمونة. المتغيّر :query_vec يحمل متجه السؤال، ويجب أن يولّده النموذج نفسه الذي ولّد المتجهات المخزّنة. استخدم مقياس المسافة الذي يوصي به نموذجك، والافتراضي هو COSINE.
سرّع البحث بفهرس متجهات
في الجداول الكبيرة أنشئ فهرس متجهات واطلب بحثًا تقريبيًا عبر FETCH APPROX. فهرس IVF (Inverted File Flat) يعمل دون إعداد ذاكرة إضافية:
CREATE VECTOR INDEX docs_ivf_idx ON docs (embedding) ORGANIZATION NEIGHBOR PARTITIONS DISTANCE COSINE WITH TARGET ACCURACY 95;
SELECT id, body FROM docs ORDER BY VECTOR_DISTANCE(embedding, :query_vec, COSINE) FETCH APPROX FIRST 5 ROWS ONLY;
ℹ فهرس HNSW يحتاج Vector Pool
ORGANIZATION INMEMORY NEIGHBOR GRAPH) أسرع عادةً، لكن يجب أن يتّسع له Vector Pool في الذاكرة، ويتحكم فيه المعامل VECTOR_MEMORY_SIZE. إذا لم يتوفر Vector Pool (مثلًا قيمة المعامل صفر دون تفعيل التحجيم التلقائي) يفشل إنشاء الفهرس بالخطأ ORA-51962. تحقّق عبر SHOW PARAMETER vector_memory_size في جذر CDB وفي PDB معًا: إذا ضبطه CDB على 1 مع SGA_TARGET أكبر من صفر، تكبر الذاكرة تلقائيًا رغم أن PDB يعرض 0. تحديد حجم الذاكرة مهمة لمسؤول قاعدة البيانات. راجع Size the Vector Pool.💡 ابقِ الإجابة مستندة
اختبر فهمك
Check your understanding
0% · 0/3أين تُخزَّن المتجهات في Oracle AI Database 26ai؟
أي دالة تعطي المسافة التي نرتّب بها أقرب الجيران؟
أي عبارة تطلب صراحةً بحثًا تقريبيًا عبر فهرس متجهات؟
تحتاج إلى تنفيذها؟
اطلب عرضًا