Milvus
Zilliz
الصفحة الرئيسية
  • دليل المستخدم
  • Home
  • Docs
  • دليل المستخدم

  • بحث

  • البحث عن المفتاح الأساسي

البحث بالمفتاح الأساسيCompatible with Milvus 2.6.9+

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

نظرة عامة

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

يتم فرز التوصيات حسب تشابهها مع الكلمة المفتاحية أو المنتج الحالي. ولتحقيق ذلك، يحتاج مطورو المنصة إلى استرداد التمثيل المتجه للكلمة المفتاحية أو المنتج الحالي من Milvus قبل البحث الفعلي عن التشابه، مما يزيد من عملية النقل بين المنصة وMilvus ويؤدي إلى نقل عدد كبير من العوامات عالية الأبعاد عبر الشبكة.

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

في بحث المفتاح الأساسي، لا تحتاج إلى توفير أي متجهات استعلام. وبدلاً من ذلك، يُطلب منك توفير المفاتيح الأساسية (ids) للكيانات التي تحتوي على ناقلات الاستعلام.

الحدود والقيود

  • تنطبق عمليات البحث باستخدام المفاتيح الأساسية على جميع أنواع بيانات المتجهات، باستثناء حقول المتجهات المتفرقة المشتقة من حقول VarChar، كما هو الحال في دوال BM25.

  • يمكنك استخدام المفاتيح الأساسية بدلًا من متجهات الاستعلام في عمليات البحث التي تمت تصفيتها ونطاقها وتجميعها، مع تمكين ترقيم الصفحات اختياريًا. ومع ذلك، لا تنطبق هذه الميزة على عمليات البحث المختلطة ومكررات البحث.

  • بالنسبة لعمليات البحث عن التشابه التي تتضمن تضمين القوائم، لا يزال يتعين عليك استرداد ناقلات الاستعلام وترتيبها في قوائم تضمين وتشغيل عمليات البحث.

  • لا يمكنك استخدام المفاتيح الأساسية بدلاً من ناقلات الاستعلام في واجهات برمجة تطبيقات RESTful.

  • بالنسبة لأي مفاتيح أساسية غير موجودة أو تلك التي تكون بتنسيق غير صحيح، سيطالبك ميلفوس بأخطاء.

  • المفاتيح الأساسية وناقلات الاستعلام متنافية. كما أن توفير كلاهما يؤدي إلى حدوث أخطاء.

أمثلة

تفترض الأمثلة التالية أن جميع معرفات Int64 المتوفرة متوفرة في المجموعة المستهدفة.

لا تُستخدم المفاتيح الأساسية للتصفية، بل تُستخدم فقط لاسترجاع المتجهات.

لإجراء بحث أساسي بالمفتاح الأساسي، ما عليك سوى استبدال ناقلات الاستعلام بالمفاتيح الأساسية.

from pymilvus import MilvusClient

client = MilvusClient(
    uri="http://localhost:19530",
    token="root:Milvus"
)

res = client.search(
    collection_name="quick_setup",
    anns_field="vector",
    ids=[551, 296, 43], # a list of primary keys
    limit=3,
    search_params={"metric_type": "IP"}
)

for hits in res:
    for hit in hits:
        print(hit)
// java
// node.js
// go
# restful

مثال 2: بحث مصفى باستخدام المفاتيح الأساسيّة

يفترض المثال التالي أن اللون والإعجابات هما حقان معرّفان في المخطط في المجموعة المستهدفة.

res = client.search(
    collection_name="my_collection",
    ids=[551, 296, 43], #
    filter='color like "red%" and likes > 50',
    output_fields=["color", "likes"],
    limit=3,
)
// java
// node.js
// go
# restful

مثال 3: البحث في النطاق باستخدام المفاتيح الأساسية

res = client.search(
    collection_name="my_collection",
    ids=[551, 296, 43],
    limit=3,
    search_params={
        "params": {
            "radius": 0.4,
            "range_filter": 0.6
        }
    }
)
// java
// node.js
// go
# restful

مثال 4: تجميع البحث باستخدام المفاتيح الأساسية

يفترض المثال التالي أن docId هو حقل معرّف بالمخطط في المجموعة المستهدفة.

res = client.search(
    collection_name="my_collection",
    ids=[551, 296, 43],
    limit=3,
    group_by_field="docId",
    output_fields=["docId"]
)
// java
// node.js
// go
# restful