مقلوب
عندما تحتاج إلى إجراء استعلامات تصفية متكررة على بياناتك، يمكن للفهارس INVERTED تحسين أداء الاستعلام بشكل كبير. بدلاً من المسح من خلال جميع المستندات، يستخدم Milvus الفهارس المقلوبة لتحديد موقع السجلات الدقيقة التي تطابق شروط التصفية الخاصة بك بسرعة.
متى تستخدم الفهارس المقلوبة
استخدم الفهارس المقلوبة عندما تحتاج إلى:
التصفية حسب قيم محددة: البحث عن جميع السجلات التي يساوي فيها حقل ما قيمة محددة (على سبيل المثال،
category == "electronics")تصفية المحتوى النصي: إجراء عمليات بحث فعالة على
VARCHARالحقولالاستعلام عن قيم حقول JSON: تصفية على مفاتيح محددة داخل هياكل JSON
فائدة الأداء: يمكن للفهارس INVERTED تقليل وقت الاستعلام من ثوانٍ إلى أجزاء من الثانية على مجموعات البيانات الكبيرة من خلال إلغاء الحاجة إلى عمليات مسح المجموعة الكاملة.
كيفية عمل الفهارس المقلوبة
يقوم فهرس INVERTED في Milvus بتعيين كل قيمة حقل فريد (مصطلح) إلى مجموعة معرّفات المستندات التي تظهر فيها تلك القيمة. تتيح هذه البنية إمكانية البحث السريع عن الحقول ذات القيم المتكررة أو الفئوية.
كما هو موضح في الرسم البياني، تعمل العملية في خطوتين:
التعيين الأمامي (المعرف ← المصطلح): يشير كل معرّف مستند إلى قيمة الحقل الذي يحتوي عليه.
التعيين المقلوب (المصطلح → المعرفات): يجمع Milvus المصطلحات الفريدة ويبني تعيينًا معكوسًا من كل مصطلح إلى جميع المعرفات التي تحتوي عليه.
على سبيل المثال، يتم تعيين القيمة "إلكترونيات" إلى المعرفين 1 و3، بينما يتم تعيين "كتب" إلى المعرفين 2 و5.
كيف يعمل الفهرس المعكوس
عندما تقوم بالتصفية بحثًا عن قيمة معينة (على سبيل المثال، category == "electronics")، يبحث Milvus ببساطة عن المصطلح في الفهرس ويسترجع المعرفات المطابقة مباشرة. هذا يتجنب مسح مجموعة البيانات الكاملة ويتيح التصفية السريعة، خاصةً للقيم الفئوية أو المتكررة.
تدعم الفهارس INVERTED جميع أنواع الحقول القياسية، مثل BOOL و INT8 و INT16 و INT16 و INT32 و INT64 و FLOAT و FLOAT و DOUBLE و VARCHAR و JSON و ARRAY. ومع ذلك، فإن معلمات الفهرس لفهرسة حقل JSON تختلف قليلاً عن الحقول العددية العادية.
إنشاء فهارس على حقول غير JSON
لإنشاء فهرس على حقل غير JSON، اتبع الخطوات التالية:
قم بإعداد معلمات الفهرس:
from pymilvus import MilvusClient client = MilvusClient(uri="http://localhost:19530") # Replace with your server address # Create an empty index parameter object index_params = client.prepare_index_params()أضف الفهرس
INVERTED:index_params.add_index( field_name="category", # Name of the field to index index_type="INVERTED", # Specify INVERTED index type index_name="category_index" # Give your index a name )إنشاء الفهرس:
client.create_index( collection_name="my_collection", # Replace with your collection name index_params=index_params )
إنشاء فهارس على حقول JSONCompatible with Milvus 2.5.11+
يمكنك أيضًا إنشاء فهارس INVERTED على مسارات محددة داخل حقول JSON. يتطلب ذلك معلمات إضافية لتحديد مسار JSON ونوع البيانات:
# Build index params
index_params.add_index(
field_name="metadata", # JSON field name
index_type="INVERTED",
index_name="metadata_category_index",
params={
"json_path": "metadata[\"category\"]", # Path to the JSON key
"json_cast_type": "varchar" # Data type to cast to during indexing
}
)
# Create index
client.create_index(
collection_name="my_collection", # Replace with your collection name
index_params=index_params
)
للحصول على معلومات مفصلة حول فهرسة حقول JSON، بما في ذلك المسارات المدعومة وأنواع البيانات والقيود المفروضة عليها، راجع فهرسة JSON.
إسقاط فهرس
استخدم الأسلوب drop_index() لإزالة فهرس موجود من مجموعة.
في الإصدار 2.6.3 أو الإصدار 2.6.3 أو الإصدار الأقدم، يجب عليك تحرير المجموعة قبل إسقاط فهرس قياسي.
بدءًا من الإصدار 2.6.4 أو الإصدار الأحدث، يمكنك إسقاط فهرس تعدادي مباشرةً بمجرد انتفاء الحاجة إليه - لا حاجة لتحرير المجموعة أولاً.
client.drop_index(
collection_name="my_collection", # Name of the collection
index_name="category_index" # Name of the index to drop
)
أفضل الممارسات
إنشاء فهارس بعد تحميل البيانات: أنشئ فهارس على المجموعات التي تحتوي بالفعل على بيانات لتحسين الأداء
استخدم أسماء فهارس وصفية: اختر أسماء تشير بوضوح إلى الحقل والغرض منه
مراقبة أداء الفهرس: تحقق من أداء الاستعلام قبل وبعد إنشاء الفهارس.
ضع في اعتبارك أنماط استعلامك: قم بإنشاء فهارس على الحقول التي تقوم بالتصفية حسبها بشكل متكرر
الخطوات التالية
تعرف على أنواع الفهارس الأخرى
راجع فهرسة JSON للاطلاع على سيناريوهات فهرسة JSON المتقدمة