نقدم لك Milvus 2.5: بحث بالنص الكامل، وتصفية أكثر قوة للبيانات الوصفية، وتحسينات في سهولة الاستخدام!
نظرة عامة
يسعدنا تقديم أحدث إصدار من ميلفوس، الإصدار 2.5، والذي يقدم إمكانية جديدة قوية: البحث في النص الكامل، والمعروف أيضًا باسم البحث المعجمي أو البحث بالكلمات الرئيسية. إذا كنت جديدًا في مجال البحث، فإن البحث في النص الكامل يتيح لك العثور على المستندات من خلال البحث عن كلمات أو عبارات محددة داخلها، على غرار طريقة البحث في جوجل. وهذا يكمل إمكانات البحث الدلالي الموجودة لدينا، والتي تفهم المعنى الكامن وراء بحثك بدلاً من مجرد مطابقة الكلمات الدقيقة.
نحن نستخدم مقياس BM25 القياسي في هذا المجال لتشابه المستندات، ويستند تطبيقنا على متجهات متناثرة، مما يسمح بتخزين واسترجاع أكثر كفاءة. بالنسبة لأولئك الذين ليسوا على دراية بالمصطلح، فإن المتجهات المتفرقة هي طريقة لتمثيل النص حيث تكون معظم القيم صفرية، مما يجعلها فعالة للغاية في التخزين والمعالجة - تخيل جدول بيانات ضخم حيث تحتوي بعض الخلايا فقط على أرقام، والباقي فارغة. يتناسب هذا النهج جيدًا مع فلسفة منتج Milvus حيث يكون المتجه هو كيان البحث الأساسي.
من الجوانب الإضافية الجديرة بالملاحظة في تطبيقنا هو القدرة على إدراج النص والاستعلام عنه مباشرةً بدلاً من أن يقوم المستخدمون أولاً بتحويل النص يدويًا إلى متجهات متفرقة. وهذا يأخذ Milvus خطوة أخرى نحو معالجة البيانات غير المنظمة بشكل كامل.
لكن هذه هي البداية فقط. مع إصدار الإصدار 2.5، قمنا بتحديث خارطة طريق منتج Milvus. في التكرارات المستقبلية لمنتج Milvus، سينصب تركيزنا على تطوير قدرات Milvus في أربعة اتجاهات رئيسية:
- تبسيط معالجة البيانات غير المهيكلة;
- تحسين جودة البحث وكفاءته;
- إدارة أسهل للبيانات;
- خفض التكاليف من خلال التطورات الخوارزمية والتصميمية
هدفنا هو بناء بنية تحتية للبيانات يمكنها تخزين المعلومات واسترجاعها بكفاءة وفعالية في عصر الذكاء الاصطناعي.
البحث في النص الكامل عن طريق البحث الدلالي المتفرّق BM25
على الرغم من أن البحث الدلالي عادةً ما يكون لديه وعي أفضل بالمحتوى وفهم أفضل للهدف، إلا أنه عندما يحتاج المستخدم إلى البحث عن أسماء علم محددة أو أرقام تسلسلية أو عبارة مطابقة تمامًا، فإن استرجاع النص الكامل مع مطابقة الكلمات الرئيسية غالبًا ما ينتج نتائج أكثر دقة.
لتوضيح ذلك بمثال:
- يتفوق البحث الدلالي عندما تطلب: "البحث عن مستندات حول حلول الطاقة المتجددة"
- يكون البحث عن النص الكامل أفضل عندما تحتاج إلى: "البحث عن مستندات تشير إلى تسلا موديل 3 2024"
في نسختنا السابقة (Milvus 2.4)، كان على المستخدمين معالجة نصهم مسبقًا باستخدام أداة منفصلة (وحدة BM25EmbeddingFunction إلى PyMilvus) على أجهزتهم الخاصة قبل أن يتمكنوا من البحث فيه كان لهذا النهج عدة قيود: لم يتمكن من التعامل مع مجموعات البيانات المتزايدة بشكل جيد، وتطلب خطوات إعداد إضافية، وجعل العملية برمتها أكثر تعقيدًا من اللازم. بالنسبة للمهتمين بالتقنية، كانت القيود الرئيسية هي أنه لا يمكن أن يعمل إلا على جهاز واحد؛ لا يمكن تحديث المفردات وإحصائيات المجموعة الأخرى المستخدمة لتسجيل BM25 مع تغير المجموعة؛ وتحويل النص إلى متجهات من جانب العميل أقل سهولة في العمل مع النص مباشرة.
يبسط ميلفوس 2.5 كل شيء. يمكنك الآن العمل مع النص مباشرةً:
- تخزين مستنداتك النصية الأصلية كما هي
- البحث باستخدام استعلامات اللغة الطبيعية
- الحصول على النتائج في شكل مقروء
خلف الكواليس، يتعامل Milvus مع جميع تحويلات المتجهات المعقدة تلقائيًا مما يسهل العمل مع البيانات النصية. هذا ما نطلق عليه نهج "إدخال المستند وإخراج المستند" - أنت تعمل بنص قابل للقراءة، ونحن نتعامل مع الباقي.
التنفيذ التقني
بالنسبة للمهتمين بالتفاصيل التقنية، يضيف ميلفوس 2.5 إمكانية البحث في النص الكامل من خلال تطبيق Sparse-BM25 المدمج الخاص به، بما في ذلك:
- أداة ترميز مبنية على تانتيفي: يتكامل ميلفوس الآن مع منظومة تانتيفي المزدهرة
- القدرة على استيعاب واسترجاع المستندات الخام: دعم الاستيعاب المباشر للبيانات النصية والاستعلام عنها
- تسجيل ملاءمة BM25: استيعاب تسجيل BM25، الذي يتم تنفيذه استنادًا إلى المتجهات المتفرقة
لقد اخترنا العمل مع نظام tantivy البيئي المتطور وبناء أداة ترميز النص Milvus على tantivy. في المستقبل، ستدعم Milvus المزيد من أدوات الترميز في المستقبل وستعرض عملية الترميز لمساعدة المستخدمين على فهم جودة الاسترجاع بشكل أفضل. سنستكشف أيضًا أدوات الترميز القائمة على التعلّم العميق واستراتيجيات الجذع لتحسين أداء البحث في النص الكامل. فيما يلي نموذج كود لاستخدام أداة الترميز وتكوينها:
# Tokenizer configuration
schema.add_field(
field_name='text',
datatype=DataType.VARCHAR,
max_length=65535,
enable_analyzer=True, # Enable tokenizer on this column
analyzer_params={"type": "english"}, # Configure tokenizer parameters, here we choose the english template, fine-grained configuration is also supported
enable_match=True, # Build an inverted index for Text_Match
)
بعد تكوين أداة الرمز المميز في مخطط المجموعة، يمكن للمستخدمين تسجيل النص في دالة bm25 عبر طريقة إضافة_وظيفة. سيتم تشغيل هذا داخليًا في خادم Milvus. يمكن إكمال جميع تدفقات البيانات اللاحقة مثل الإضافات والحذف والتعديلات والاستعلامات من خلال العمل على السلسلة النصية الخام، بدلاً من التمثيل المتجه. انظر المثال البرمجي أدناه لمعرفة كيفية استيعاب النص وإجراء بحث في النص الكامل باستخدام واجهة برمجة التطبيقات الجديدة:
# Define the mapping relationship between raw text data and vectors on the schema
bm25_function = Function(
name="text_bm25_emb",
input_field_names=["text"], # Input text field
output_field_names=["sparse"], # Internal mapping sparse vector field
function_type=FunctionType.BM25, # Model for processing mapping relationship
)
schema.add_function(bm25_function)
...
# Support for raw text in/out
MilvusClient.insert('demo', [
{'text': 'Artificial intelligence was founded as an academic discipline in 1956.'},
{'text': 'Alan Turing was the first person to conduct substantial research in AI.'},
{'text': 'Born in Maida Vale, London, Turing was raised in southern England.'},
])
MilvusClient.search(
collection_name='demo',
data=['Who started AI research?'],
anns_field='sparse',
limit=3
)
لقد اعتمدنا تطبيقًا لتسجيل الصلة BM25 الذي يمثل الاستعلامات والمستندات كمتجهات متناثرة، يُطلق عليه Sparse-BM25. وهذا يفتح العديد من التحسينات القائمة على المتجهات المتناثرة، مثل:
يحقق Milvus إمكانات البحث الهجين من خلال تطبيق Sparse-BM25 المتطور، الذي يدمج البحث عن النص الكامل في بنية قاعدة البيانات المتجهة. من خلال تمثيل ترددات المصطلحات كمتجهات متناثرة بدلاً من الفهارس المقلوبة التقليدية، يتيح Sparse-BM25 تحسينات متقدمة، مثل فهرسة الرسم البياني وتكميم المنتج (PQ ) والتكميم الكمي القياسي (SQ). تعمل هذه التحسينات على تقليل استخدام الذاكرة وتسريع أداء البحث. على غرار نهج الفهرس المقلوب، يدعم Milvus أخذ النص الخام كمدخلات وتوليد متجهات متفرقة داخليًا. وهذا يجعله قادرًا على العمل مع أي أداة ترميز واستيعاب أي كلمة تظهر في مجموعة النصوص المتغيرة ديناميكيًا.
بالإضافة إلى ذلك، يتجاهل التقليم القائم على الاستدلال المتجهات المتفرقة منخفضة القيمة، مما يعزز الكفاءة دون المساس بالدقة. على عكس النهج السابق الذي يستخدم المتجهات المتناثرة، فإنه يمكن أن يتكيف مع مجموعة متزايدة من المتحولات، وليس دقة تسجيل BM25.
- بناء فهارس بيانية على المتجه المتناثر، والتي تعمل بشكل أفضل من الفهرس المقلوب على الاستعلامات ذات النص الطويل حيث يحتاج الفهرس المقلوب إلى مزيد من الخطوات لإنهاء مطابقة الرموز في الاستعلام;
- الاستفادة من تقنيات التقريب لتسريع البحث مع تأثير طفيف فقط على جودة الاسترجاع، مثل تكميم المتجه والتشذيب القائم على الاستدلال;
- توحيد الواجهة ونموذج البيانات لإجراء البحث الدلالي والبحث في النص الكامل، وبالتالي تحسين تجربة المستخدم.
# Creating an index on the sparse column
index_params.add_index(
field_name="sparse",
index_type="AUTOINDEX", # Default WAND index
metric_type="BM25" # Configure relevance scoring through metric_type
)
# Configurable parameters at search time to speed up search
search_params = {
'params': {'drop_ratio_search': 0.6}, # WAND search parameter configuration can speed up search
}
باختصار، وسّع برنامج Milvus 2.5 من قدرته على البحث إلى ما هو أبعد من البحث الدلالي من خلال تقديم استرجاع النص الكامل، مما يسهل على المستخدمين بناء تطبيقات ذكاء اصطناعي عالية الجودة. هذه مجرد خطوات أولية في مجال البحث المتناثر-بم 25، ونتوقع أن يكون هناك المزيد من إجراءات التحسين التي يمكن تجربتها في المستقبل.
مرشحات بحث مطابقة النص
الميزة الثانية للبحث النصي التي تم إصدارها مع الإصدار 2.5 من ميلفوس هي ميزة مطابقة النص، والتي تسمح للمستخدم بتصفية البحث إلى إدخالات تحتوي على سلسلة نصية محددة. هذه الميزة مبنية أيضًا على أساس الترميز ويتم تنشيطها باستخدام enable_match=True
.
تجدر الإشارة إلى أنه مع خاصية مطابقة النص، تعتمد معالجة نص الاستعلام على منطق OR بعد الترميز. على سبيل المثال، في المثال أدناه، ستُرجع النتيجة جميع المستندات (باستخدام حقل "نص") التي تحتوي إما على "متجه" أو "قاعدة بيانات".
filter = "TEXT_MATCH(text, 'vector database')"
إذا كان السيناريو الخاص بك يتطلب مطابقة كلٍ من "المتجه" و"قاعدة البيانات"، فأنت بحاجة إلى كتابة مطابقتين نصيتين منفصلتين وتراكبهما باستخدام "و" لتحقيق هدفك.
filter = "TEXT_MATCH(text, 'vector') and TEXT_MATCH(text, 'database')"
تحسين كبير في أداء التصفية العددية
ينشأ تركيزنا على أداء التصفية العددية من اكتشافنا أن الجمع بين استرجاع المتجهات وتصفية البيانات الوصفية يمكن أن يحسن أداء الاستعلام ودقته بشكل كبير في سيناريوهات مختلفة. وتتراوح هذه السيناريوهات من تطبيقات البحث عن الصور مثل تحديد حالة الزاوية في القيادة الذاتية إلى سيناريوهات RAG المعقدة في قواعد المعرفة المؤسسية. وبالتالي، فهي مناسبة للغاية لمستخدمي المؤسسات لتنفيذها في سيناريوهات تطبيقات البيانات واسعة النطاق.
في الممارسة العملية، يمكن أن تؤثر العديد من العوامل مثل كمية البيانات التي تقوم بترشيحها، وكيفية تنظيم بياناتك، وكيفية البحث على الأداء. لمعالجة هذا الأمر، يقدم الإصدار Milvus 2.5 ثلاثة أنواع جديدة من الفهارس - فهرس خريطة البت وفهرس المصفوفة المقلوب والفهرس المقلوب بعد ترميز حقل نص Varchar. يمكن لهذه الفهارس الجديدة تحسين الأداء بشكل كبير في حالات الاستخدام في العالم الحقيقي.
على وجه التحديد:
- يمكن استخدامفهرس BitMap لتسريع تصفية العلامات (المشغلات الشائعة تشمل في، صفيف_يتضمن، إلخ)، وهي مناسبة للسيناريوهات التي تحتوي على عدد أقل من بيانات فئة الحقل (عددية البيانات). ويتمثل المبدأ في تحديد ما إذا كان صف البيانات يحتوي على قيمة معينة في عمود ما، مع تحديد 1 لـ نعم و0 لـ لا، ثم الاحتفاظ بقائمة BitMap. يوضح الرسم البياني التالي مقارنة اختبار الأداء الذي أجريناه بناءً على سيناريو عمل أحد العملاء. في هذا السيناريو، يبلغ حجم البيانات 500 مليون، وفئة البيانات 20، والقيم المختلفة لها نسب توزيع مختلفة (1%، 5%، 10%، 50%)، ويختلف الأداء في ظل كميات التصفية المختلفة أيضًا. مع التصفية بنسبة 50%، يمكننا تحقيق مكاسب في الأداء بنسبة 6.8 أضعاف من خلال فهرس BitMap. تجدر الإشارة إلى أنه مع زيادة الكاردينالية، مقارنةً بفهرس BitMap، سيُظهر الفهرس المقلوب أداءً أكثر توازناً.
- تعتمدمطابقة النص على الفهرس المقلوب بعد ترميز حقل النص. يتجاوز أداؤها بكثير وظيفة مطابقة أحرف البدل (أي مثل + %) التي قدمناها في 2.4. وفقًا لنتائج اختبارنا الداخلي، فإن مزايا Text Match واضحة جدًا، خاصةً في سيناريوهات الاستعلام المتزامن، حيث يمكنها تحقيق زيادة تصل إلى 400 ضعف في الثانية في الثانية.
فيما يتعلق بمعالجة بيانات JSON، نخطط لتقديم في الإصدارات اللاحقة من الإصدار 2.5.x بناء مؤشرات مقلوبة للمفاتيح التي يحددها المستخدم وتسجيل معلومات الموقع الافتراضي لجميع المفاتيح لتسريع التحليل. نتوقع أن يؤدي هذان المجالان إلى تحسين أداء الاستعلام في JSON و Dynamic Field بشكل كبير. نخطط لعرض المزيد من المعلومات في مذكرات الإصدار المستقبلية والمدونات التقنية، لذا ترقبوا معنا!
واجهة إدارة جديدة
لا ينبغي أن تتطلب إدارة قاعدة البيانات شهادة في علوم الكمبيوتر، لكننا نعلم أن مسؤولي قواعد البيانات يحتاجون إلى أدوات قوية. لهذا السبب قدمنا واجهة إدارة المجموعة WebUI، وهي واجهة جديدة قائمة على الويب يمكن الوصول إليها على عنوان مجموعتك على المنفذ 9091/webui. توفر أداة المراقبة هذه
- لوحات معلومات المراقبة في الوقت الحقيقي التي تعرض مقاييس على مستوى المجموعة
- تحليلات مفصلة للذاكرة والأداء لكل عقدة
- معلومات الشرائح وتتبع الاستعلامات البطيئة
- مؤشرات صحة النظام وحالة العقدة
- أدوات استكشاف الأخطاء وإصلاحها سهلة الاستخدام لمشاكل النظام المعقدة
على الرغم من أن هذه الواجهة لا تزال في مرحلة تجريبية، إلا أننا نعمل بنشاط على تطويرها بناءً على ملاحظات المستخدمين من مسؤولي قواعد البيانات. ستتضمن التحديثات المستقبلية تشخيصات مدعومة بالذكاء الاصطناعي، والمزيد من ميزات الإدارة التفاعلية، وقدرات مراقبة محسّنة للعقد.
التوثيق وتجربة المطورين
لقد قمنا بتجديد وثائقنا وتجربة SDK/API بالكامل لجعل الوصول إلى Milvus أكثر سهولة مع الحفاظ على العمق للمستخدمين ذوي الخبرة. تشمل التحسينات ما يلي:
- نظام توثيق معاد هيكلته مع تقدم أوضح من المفاهيم الأساسية إلى المفاهيم المتقدمة
- برامج تعليمية تفاعلية وأمثلة واقعية تعرض تطبيقات عملية
- مراجع شاملة لواجهة برمجة التطبيقات مع عينات من التعليمات البرمجية العملية
- تصميم SDK أكثر سهولة في الاستخدام يبسط العمليات الشائعة
- أدلة مصورة تجعل المفاهيم المعقدة أسهل في الفهم
- مساعد التوثيق المدعوم بالذكاء الاصطناعي (ASK AI) للحصول على إجابات سريعة
تركز SDK/API المحدثة على تحسين تجربة المطورين من خلال واجهات أكثر سهولة وتكامل أفضل مع الوثائق. نعتقد أنك ستلاحظ هذه التحسينات عند العمل مع سلسلة 2.5.x.
ومع ذلك، نحن نعلم أن التوثيق وتطوير SDK عملية مستمرة. سنواصل تحسين كل من بنية المحتوى وتصميم SDK بناءً على ملاحظات المجتمع. انضم إلى قناة Discord الخاصة بنا لمشاركة اقتراحاتك ومساعدتنا على التحسين أكثر.
الملخص
يحتوي ميلفوس 2.5 على 13 ميزة جديدة والعديد من التحسينات على مستوى النظام، ليس فقط بمساهمة من Zilliz بل من مجتمع المصادر المفتوحة. لقد تطرقنا إلى عدد قليل منها فقط في هذا المنشور ونشجعك على زيارة مذكرة الإصدار والوثائق الرسمية لمزيد من المعلومات!
- نظرة عامة
- البحث في النص الكامل عن طريق البحث الدلالي المتفرّق BM25
- مرشحات بحث مطابقة النص
- تحسين كبير في أداء التصفية العددية
- واجهة إدارة جديدة
- التوثيق وتجربة المطورين
- الملخص
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word