إدارة موارد الملفات
مورد الملف هو مرجع مسجّل في الخادم إلى ملف قاموس خارجي تستهلكه محللات النصوص في وقت التشغيل. في Milvus 3.0، يمكن لأربعة مكوّنات محلّل أن تحمّل قواميسها من مورد ملف بدلًا من صفيف مضمن:
مكوّن المحلّل |
معلمة تقبل مورد ملف |
|---|---|
|
|
|
|
|
|
|
تحل موارد الملفات مشكلتين عمليتين مع مصفوفات القاموس المضمنة:
القواميس الحقيقية كبيرة. يمكن أن تكون مفردات جيبا الصينية عشرات الآلاف من الأسطر؛ وجداول المرادفات عادةً ما تكون آلاف القواعد. إن تضمينها في تكوين المحلل غير عملي.
عادةً ما تتم مشاركة نفس القاموس عبر المجموعات. تسجيلها مرة واحدة، ثم الرجوع إليها بالاسم، يحافظ على صغر حجم المخططات ويجعل تحديثات القاموس عملية واحدة.
أنواع موارد الملفات
يدعم ميلفوس نوعين من موارد الملفات مع مسؤوليات إدارة مختلفة:
النوع |
مكان وجود الملف |
من يدير الملف |
ملائم |
|---|---|---|---|
بعيد |
في مخزن الكائنات (MinIO / S3 / GCS / Azure) الذي تم تكوين مجموعة Milvus الخاصة بك لاستخدامه بالفعل |
Milvus، عبر واجهات برمجة التطبيقات الخاصة بالعميل |
موصى به لمعظم عمليات النشر. |
محلي |
على نفس المسار المطلق على نظام الملفات المحلي لكل مكون من مكونات Milvus (DataNode، QueryNode، StreamingNode) |
أنت - قم بتحميل الملف بنفسك، على سبيل المثال عبر وحدة تخزين Kubernetes |
سيناريوهات مفتوحة المصدر / ذاتية الاستضافة حيث تفضل إدارة ملفات القاموس خارج Milvus. |
تستعرض بقية هذه الصفحة كلا النوعين، بدءًا من النوع البعيد الأكثر شيوعًا.
المتطلبات الأساسية
بالنسبة لموارد الملفات عن بعد، يجب تكوين عملية نشر ملف Milvus الخاص بك مع مخزن كائنات. معظم عمليات النشر موجودة بالفعل - تحقق من قسم
minio:منmilvus.yamlالخاص بك (أو قيم مخطط هيلم المكافئة). لاحظ القيمbucketNameوrootPath؛ ستحتاج إليها عند تسجيل موارد الملفات.بالنسبة لموارد الملفات المحلية، يجب أن تكون قادرًا على وضع الملفات على كل جراب / حاوية Milvus في نفس المسار المطلق. تعتمد كيفية القيام بذلك على عملية النشر الخاصة بك (ربط التحميل أو وحدة التخزين المدعومة بخريطة التكوين، أو حاوية البدء، وما إلى ذلك).
تسجيل مورد ملف بعيد
تسجيل مورد ملف عن بعد هو سير عمل من ثلاث خطوات: قم بتحميل الملف إلى تخزين الكائن، وقم بتسجيله في Milvus تحت اسم مختار، ثم قم بالإشارة إليه من أي محلل يحتاج إليه.
الخطوة 1. تحميل ملف القاموس إلى مخزن الكائنات
استخدم أداتك الخاصة (mc ، aws s3 cp ، ، boto3 ، أو أي عميل متوافق مع S3) لوضع الملف في الدلو الذي تم تكوين Milvus لاستخدامه.
على سبيل المثال، إذا كان milvus.yaml يحتوي على:
minio:
bucketName: milvus-bucket
rootPath: file
تحميل ملف باسم chinese_terms.txt مع rootPath كبادئة يضع الكائن في s3://milvus-bucket/file/chinese_terms.txt.
الوسيطة path التي ستقوم بتمريرها إلى add_file_resource في الخطوة 2 هي مفتاح الكائن الكامل، بما في ذلك بادئة rootPath - في المثال أعلاه، path="file/chinese_terms.txt". يتم رفض المسار بدون البادئة (على سبيل المثال، فقط "chinese_terms.txt") مع الخطأ file resource path not exist.
الخطوة 2. تسجيل الملف مع add_file_resource
from pymilvus import MilvusClient
client = MilvusClient(uri="http://localhost:19530")
client.add_file_resource(
name="chinese_terms", # short, unique name you'll reference later
path="file/chinese_terms.txt", # full S3 object key, including the rootPath prefix
)
add_file_resource يتم التحقق من صحته بشكل متزامن: لا يتم إرجاع الاستدعاء إلا بعد أن يتأكد ميلفوس من وجود الكائن على path في مخزن الكائنات المهيأ. إذا كان الكائن مفقودًا، ترفع المكالمة MilvusException(code=65535, "file resource path not exist") - قم بتحميل الملف أولاً، ثم أعد المحاولة.
الاستدعاء غير محدد. لا يؤدي استدعاء add_file_resource مرتين بنفس name و path إلى إنشاء نسخ مكررة.
الخطوة 3. قم بالإشارة إلى مورد الملف من محلل
حيثما تقبل معلمة محلل مرجع ملف (extra_dict_file ، stop_words_file ، ، word_list_file ، synonyms_file)، استخدم النموذج البعيد المتعارف عليه:
{
"type": "remote",
"resource_name": "chinese_terms", # must match the name in add_file_resource
"file_name": "chinese_terms.txt", # filename only — Milvus uses this to identify the file inside the resource
}
تستخدم جميع معلمات المحلل الأربعة نفس الشكل؛ يختلف فقط مفتاح المحلل المحيط. للاطلاع على أمثلة ملموسة لكل محلل، انظر Jieba tokenizer، ومرشح الإيقاف، ومرشح فك التجميع، ومرشح المترادفات.
أسماء المعلمات هي resource_name و file_name - وليس name و file. يؤدي استخدام name / file (أو "type": "resource" بدلاً من "type": "remote") إلى رفع MilvusException في وقت إنشاء المحلل برسالة مثل resource name of remote file ... must be set.
قائمة موارد الملف
resources = client.list_file_resources()
for r in resources:
print(r.name, r.path)
# chinese_terms file/chinese_terms.txt
list_file_resources() تُرجع قائمة من FileResourceInfo كائنات ، كل منها .name و .path. تُرجع المجموعة الفارغة []. لا يوجد لكل مورد get ؛ list_file_resources هي واجهة برمجة التطبيقات الوحيدة للقراءة.
إزالة مورد ملف
client.remove_file_resource(name="chinese_terms")
remove_file_resource هو أمرٌ غير محدد: استدعاؤه لاسم غير موجود يُرجع None دون إثارة.
قبل إزالة مورد ملف، قم بإسقاط أو تغيير أي مجموعات تشير تكوينات محللها إليه. الاحتفاظ بمورد ملف حتى لا تعتمد أي مجموعة عليه يجنبك خطر فشل عمليات البحث عن المحلل بعد اختفاء المورد.
استخدام مورد ملف محلي
يشير مورد ملف محلي مباشرة إلى مسار على نظام الملفات المحلي لكل مكون من مكونات Milvus. لا يوجد add_file_resource استدعاء - لا يتتبع مالفوس الموارد المحلية. يمكنك وضع الملف في نفس المسار المطلق على كل جراب أو حاوية ذات صلة بنفسك، ثم الإشارة إليه بالمسار:
{
"type": "local",
"path": "/var/lib/milvus/dicts/chinese_terms.txt",
}
موارد الملفات المحلية صالحة فقط في عمليات النشر حيث تتحكم في أنظمة الملفات الخاصة بعُقد البيانات وعُقد الاستعلام وعُقد التدفق - عادةً ما تكون Milvus ذاتية الاستضافة على معدن مكشوف أو على مجموعة Kubernetes حيث يمكنك إضافة وحدة تخزين محمولة. يجب أن يكون الملف موجودًا في نفس المسار المطلق بالضبط على كل مكوِّن؛ وإلا ستفشل بعض العُقد عند تحميل المحلِّل.
يتم فتح الملف عند إنشاء المحلل لأول مرة. إذا لم يكن المسار موجودًا في تلك النقطة، يفشل إنشاء المحلِّل مع MilvusException(code=2000, "IOError: No such file or directory").
اعتبارات
التوفر على مستوى الكتلة ليس فورياً. بعد إرجاع
add_file_resource، يقوم Milvus بمزامنة الملف لكل مكون يحتاج إليه. خلال هذه النافذة القصيرة، قد يفشل إنشاء مجموعة تشير إلى المورد على العقد التي لم تتم مزامنتها بعد. الإصلاح النموذجي هو إعادة محاولة استدعاء الإنشاء بعد بضع ثوانٍ.الإزالة فقط عندما لا تعتمد أي مجموعة على المورد. قم بإسقاط أو تغيير أي مجموعة يشير تكوين محللها إلى المورد قبل استدعاء
remove_file_resource، لتجنب عمليات البحث في المحلل التي تفشل في العثور على الملف.البيانات الوصفية فقط.
list_file_resources()إرجاعnameوpath- لا يوجد حجم أو المجموع الاختباري أو وقت التحميل أو بيانات وصفية أخرى. تتبع إصدارات القاموس باصطلاح التسمية الخاص بك إذا كنت بحاجة إليها.