بناء فهرس الفيكتور

يصف هذا الدليل كيفية بناء فهرس الفيكتور في Milvus.

يعتبر فهرس الفيكتور وحدة تنظيم البيانات الوصفية المستخدمة لتسريع البحث عن تشابه الفيكتور. بدون بناء فهرس على الفيكتورات، ستقوم Milvus بأداء بحث بالقوة الخام.

بشكل افتراضي، لا يُفهم Milvus الفقاعات التي تحتوي على أقل من 1,024 صف.

يوضح المثال التالي بناء فهرس IVF_FLAT بـ 1024 مجموعة باستخدام مسافة الأقرب (L2). يمكنك اختيار نوع الفهرس ونوع المقياس الذي يناسب سيناريو الخاص بك.

تحضير معلمات الفهرس

اتبع هذه الخطوات لتحضير معلمات الفهرس:

index_params = {
  "metric_type":"L2",
  "index_type":"IVF_FLAT",
  "params":{"nlist":1024}
}
المعلمة الوصف الخيارات
metric_type نوع المقياس المستخدم لقياس تشابه الفيكتور بالنسبة للفيكتورات العائمة:- L2 (مسافة أوروكليدية)- IP (المنتج الداخلي)- COSINE (تشابه جيبي)بالنسبة للفيكتورات الثنائية:- JACCARD (مسافة جاكار)- HAMMING (مسافة هامنغ)
index_type نوع الفهرس المستخدم لتسريع البحث عن الفيكتور بالنسبة للفيكتورات العائمة:- FLAT (FLAT)- IVF_FLAT (IVF_FLAT)- IVF_SQ8 (IVF_SQ8)- IVF_PQ (IVF_PQ)- GPU_IVF_FLAT* (GPU_IVF_FLAT)- GPU_IVF_PQ*> (GPU_IVF_PQ)- HNSW (HNSW)- DISKANN* (DISKANN)بالنسبة للفيكتورات الثنائية:- BIN_FLAT (BIN_FLAT)- BIN_IVF_FLAT (BIN_IVF_FLAT)
params معلمات البناء المحددة للفهرس لمزيد من المعلومات، انظر الفهرس في الذاكرة والفهرس على القرص.
  • DISKANN لديه متطلبات معينة. لمزيد من المعلومات، انظر إلى الفهرس على القرص.
  • يتوفر GPU_IVF_FLAT وGPU_IVF_PQ فقط في تثبيتات Milvus مع دعم GPU ممكّن.

بناء الفهرس

قم ببناء الفهرس عن طريق تحديد اسم حقل الفيكتور ومعلمات الفهرس.

from pymilvus import Collection, utility
collection = Collection("book")
collection.create_index(
  field_name="book_intro",
  index_params=index_params
)

utility.index_building_progress("book")
المعلمة الوصف
field_name اسم حقل الفيكتور الذي سيتم بناء الفهرس عليه.
index_params معلمات الفهرس المراد بناؤها.

بناء فهرس السكالار

على عكس الفيكتورات، تحتوي السكالار على قيمة حجم فقط دون اتجاه. يعتبر Milvus الأرقام والسلاسل الفردية سكالار. فيما يلي قائمة بأنواع البيانات المتاحة لحقول السكالار في Milvus.

ابتداءً من Milvus v2.1.0، يمكنك بناء فهرس على حقول السكالار لتسريع تصفية السمات في البحث المختلط. يمكنك قراءة المزيد حول فهرس حقل السكالار هنا.

ملاحظة: يجب استبدال الرابط "هنا" بالرابط الفعلي المحدد في المستند الأصلي.

بناء الفهرس

عند بناء فهرس على حقل سكالار، لا يجب أن تقوم بتحديد أي معلمات فهرس. القيمة الافتراضية لاسم الفهرس لحقل السكالار هي default_idx، تليها اسم الحقل المفهرس. يمكنك تعيينها إلى قيم أخرى مناسبة إذا كنت ترغب في ذلك.

يفترض كود الشريحة التالي أن المجموعة المسماة book موجودة بالفعل وأنه يحتاج إلى إنشاء فهرس على حقل السلسلة book_name.

from pymilvus import Collection

collection = Collection("book")   
collection.create_index(
  field_name="book_name", 
  index_name="scalar_index",
)
collection.load()

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

search_param = {
  "data": [[0.1, 0.2]],
  "anns_field": "book_intro",
  "param": {"metric_type": "L2", "params": {"nprobe": 10}},
  "limit": 2,
  "expr": "book_name like \"Hello%\"", 
}
res = collection.search(**search_param)

حذف الفهرس

from pymilvus import Collection
collection = Collection("book")      # احصُل على مجموعة موجودة بالفعل.
collection.drop_index()