قوالب تعبيرات التصفية

في Milvus، يمكن أن تؤثر تعبيرات التصفية المعقدة التي تحتوي على عناصر عديدة، خاصة تلك التي تتضمن أحرفًا غير ASCII مثل أحرف CJK، بشكل كبير على أداء الاستعلام. لمعالجة هذه المشكلة، يقدم Milvus آلية قوالب تعبيرات التصفية المصممة لتحسين الكفاءة عن طريق تقليل الوقت المستغرق في تحليل التعبيرات المعقدة. تشرح هذه الصفحة استخدام قوالب تعبيرات التصفية في عمليات البحث والاستعلام والحذف.

نظرة عامة

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

لنفترض أن لديك تعبير تصفية يتضمن حقلين، هما age و city ، وتريد العثور على جميع الأشخاص الذين تزيد أعمارهم عن 25 عامًا والذين يعيشون إما في «北京» (بكين) أو «上海» (شنغهاي). بدلاً من تضمين القيم مباشرةً في تعبير التصفية، يمكنك استخدام قالب:

filter = "age > {age} AND city IN {city}"
filter_params = {"age": 25, "city": ["北京", "上海"]}

هنا، يُعتبر كل من {age} و {city} عناصر نائبة سيتم استبدالها بالقيم الفعلية في filter_params عند تنفيذ الاستعلام.

يتميز استخدام قوالب تعبيرات التصفية في Milvus بعدة مزايا رئيسية:

  • تقليل وقت التحليل: من خلال استبدال تعبيرات التصفية الكبيرة أو المعقدة بعناصر نائبة، يقضي النظام وقتًا أقل في تحليل التصفية ومعالجتها.

  • تحسين أداء الاستعلام: مع انخفاض عبء التحليل، يتحسن أداء الاستعلام، مما يؤدي إلى زيادة معدل الاستعلامات في الثانية (QPS) وزيادة سرعة الاستجابة.

  • قابلية التوسع: مع نمو مجموعات البيانات الخاصة بك وزيادة تعقيد تعبيرات التصفية، تضمن القوالب أن يظل الأداء فعالًا وقابلًا للتوسع.

عمليات البحث

بالنسبة لعمليات البحث في Milvus، يُستخدم التعبير filter لتعريف شرط التصفية، ويُستخدم المعلمة filter_params لتحديد قيم العناصر النائبة. يحتوي قاموس filter_params على القيم الديناميكية التي سيستخدمها Milvus للاستبدال في تعبير التصفية.

expr = "age > {age} AND city IN {city}"
filter_params = {"age": 25, "city": ["北京", "上海"]}
res = client.search(
    "hello_milvus",
    vectors[:nq],
    filter=expr,
    limit=10,
    output_fields=["age", "city"],
    search_params={"metric_type": "COSINE", "params": {"search_list": 100}},
    filter_params=filter_params,
)

في هذا المثال، سيقوم Milvus باستبدال {age} ديناميكيًا بـ 25 و {city} بـ ["北京", "上海"] عند تنفيذ عملية البحث.

عمليات الاستعلام

يمكن تطبيق آلية القوالب نفسها على عمليات الاستعلام في Milvus. في الدالة query ، تقوم بتعريف تعبير التصفية وتستخدم filter_params لتحديد القيم المراد استبدالها.

expr = "age > {age} AND city IN {city}"
filter_params = {"age": 25, "city": ["北京", "上海"]}
res = client.query(
    "hello_milvus",
    filter=expr,
    output_fields=["age", "city"],
    filter_params=filter_params
)

باستخدام filter_params ، يتعامل Milvus بكفاءة مع الإدراج الديناميكي للقيم، مما يحسن سرعة تنفيذ الاستعلام.

عمليات الحذف

يمكنك أيضًا استخدام قوالب تعبيرات التصفية في عمليات الحذف. وعلى غرار عمليات البحث والاستعلام، يحدد تعبير filter الشروط، بينما توفر filter_params القيم الديناميكية للعناصر النائبة.

expr = "age > {age} AND city IN {city}"
filter_params = {"age": 25, "city": ["北京", "上海"]}
res = client.delete(
    "hello_milvus",
    filter=expr,
    filter_params=filter_params
)

يؤدي هذا النهج إلى تحسين أداء عمليات الحذف، خاصةً عند التعامل مع شروط تصفية معقدة.

الخلاصة

تعد قوالب تعبيرات التصفية أداة أساسية لتحسين أداء الاستعلامات في Milvus. باستخدام العناصر النائبة وقاموس filter_params ، يمكنك تقليل الوقت المستغرق في تحليل تعبيرات التصفية المعقدة بشكل كبير. وهذا يؤدي إلى تنفيذ أسرع للاستعلامات وأداء عام أفضل.

ترجمة بواسطةDeepL

جرب Managed Milvus مجاناً

Zilliz Cloud خالي من المتاعب، ويعمل بواسطة Milvus ويعمل بسرعة 10 أضعاف.

ابدأ
التعليقات

هل كانت هذه الصفحة مفيدة؟