🚀 جرب Zilliz Cloud، الـ Milvus المدارة بالكامل، مجاناً — تجربة أداء أسرع بـ 10 أضعاف! جرب الآن>>

milvus-logo
LFAI
الصفحة الرئيسية
  • دليل المستخدم
  • Home
  • Docs
  • دليل المستخدم

  • الفهارس

  • الفهارس العددية

  • فهرس الحقول العددية

فهرس الحقول العددية

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

أنواع الفهرسة العددية

  • الفهرسة التلقائية: يقرر Milvus تلقائيًا نوع الفهرس بناءً على نوع بيانات الحقل القياسي. وهذا مناسب عندما لا تحتاج إلى التحكم في نوع الفهرس المحدد.

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

الفهرسة التلقائية

لاستخدام الفهرسة التلقائية، احذف معلمة نوع الفهرسة في add_index()بحيث يمكن ل Milvus استنتاج نوع الفهرس بناءً على نوع الحقل القياسي.

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

لاستخدام الفهرسة التلقائية، احذف معلمة نوع الفهرس في createIndex()بحيث يمكن ل Milvus استنتاج نوع الفهرس بناءً على نوع الحقل القياسي.

للاطلاع على التعيينات بين أنواع البيانات العددية وخوارزميات الفهرسة الافتراضية، راجع خوارزميات فهرسة الحقل العددي.

# Auto indexing
client = MilvusClient(
    uri="http://localhost:19530"
)

index_params = MilvusClient.prepare_index_params() # Prepare an empty IndexParams object, without having to specify any index parameters

index_params.add_index(
    field_name="scalar_1", # Name of the scalar field to be indexed
    index_type="", # Type of index to be created. For auto indexing, leave it empty or omit this parameter.
    index_name="default_index" # Name of the index to be created
)

client.create_index(
  collection_name="test_scalar_index", # Specify the collection name
  index_params=index_params
)
import io.milvus.v2.common.IndexParam;
import io.milvus.v2.service.index.request.CreateIndexReq;

IndexParam indexParamForScalarField = IndexParam.builder()
    .fieldName("scalar_1") // Name of the scalar field to be indexed
    .indexName("default_index") // Name of the index to be created
    .indexType("") // Type of index to be created. For auto indexing, leave it empty or omit this parameter.
    .build();

List<IndexParam> indexParams = new ArrayList<>();
indexParams.add(indexParamForVectorField);

CreateIndexReq createIndexReq = CreateIndexReq.builder()
    .collectionName("test_scalar_index") // Specify the collection name
    .indexParams(indexParams)
    .build();

client.createIndex(createIndexReq);
await client.createIndex({
    collection_name: "test_scalar_index", // Specify the collection name
    field_name: "scalar_1", // Name of the scalar field to be indexed
    index_name: "default_index", // Name of the index to be created
    index_type: "" // Type of index to be created. For auto indexing, leave it empty or omit this parameter.
})

فهرسة مخصصة

لاستخدام الفهرسة المخصصة، حدد نوع فهرسة معين باستخدام معلمة index_type في add_index().

لاستخدام الفهرسة المخصصة، حدد نوع فهرسة معين باستخدام معلمة indexType في . IndexParam.

لاستخدام الفهرسة المخصصة، حدد نوع فهرسة معين باستخدام المعلمة index_type في . createIndex().

ينشئ المثال أدناه فهرسًا مقلوبًا للحقل القياسي scalar_2.

index_params = MilvusClient.prepare_index_params() #  Prepare an IndexParams object

index_params.add_index(
    field_name="scalar_2", # Name of the scalar field to be indexed
    index_type="INVERTED", # Type of index to be created
    index_name="inverted_index" # Name of the index to be created
)

client.create_index(
  collection_name="test_scalar_index", # Specify the collection name
  index_params=index_params
)
import io.milvus.v2.common.IndexParam;
import io.milvus.v2.service.index.request.CreateIndexReq;

IndexParam indexParamForScalarField = IndexParam.builder()
    .fieldName("scalar_1") // Name of the scalar field to be indexed
    .indexName("inverted_index") // Name of the index to be created
    .indexType("INVERTED") // Type of index to be created
    .build();

List<IndexParam> indexParams = new ArrayList<>();
indexParams.add(indexParamForVectorField);

CreateIndexReq createIndexReq = CreateIndexReq.builder()
    .collectionName("test_scalar_index") // Specify the collection name
    .indexParams(indexParams)
    .build();

client.createIndex(createIndexReq);
await client.createIndex({
    collection_name: "test_scalar_index", // Specify the collection name
    field_name: "scalar_1", // Name of the scalar field to be indexed
    index_name: "inverted_index", // Name of the index to be created
    index_type: "INVERTED" // Type of index to be created
})

الطرق والمعلمات

  • إعداد_المفهرس_بارامز()

    يقوم بإعداد كائن IndexParams.

  • إضافة_الفهرس()

    يضيف تكوينات الفهرس إلى كائن IndexParams.

    • اسم_الحقل(سلسلة)

      اسم الحقل القياسي المراد فهرسته.

    • نوع_الفهرس(سلسلة):

      نوع الفهرس القياسي المراد إنشاؤه. للفهرسة الضمنية، اتركها فارغة أو احذف هذه المعلمة.

      للفهرسة المخصصة، القيم الصالحة هي:

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

      • STL_SORT: يفرز الحقول العددية باستخدام خوارزمية فرز مكتبة القالب القياسية. يدعم فقط الحقول الرقمية (مثل INT8 و INT16 و INT32 و INT64 و FLOAT و DOUBLE).

      • تري: بنية بيانات شجرية لعمليات البحث والاسترجاع السريع للبادئة. يدعم حقول VARCHAR.

    • اسم_الفهرس(سلسلة)

      اسم الفهرس القياسي المراد إنشاؤه. يدعم كل حقل قياسي فهرسًا واحدًا.

  • إنشاء_فهرس()

    إنشاء الفهرس في المجموعة المحددة.

    • اسم_المجموعة(سلسلة)

      اسم المجموعة التي يتم إنشاء الفهرس لها.

    • index_params

      كائن IndexParams الذي يحتوي على تكوينات الفهرس.

الأساليب والمعلمات

  • إعداد كائن IndexParamإعداد كائن IndexParam.
    • اسم الحقل(سلسلة) اسم الحقل القياسي المراد فهرسته.
    • اسم الفهرس(سلسلة) اسم الفهرس القياسي المراد إنشاؤه. يدعم كل حقل قياسي فهرس واحد.
    • نوع الفهرس(سلسلة) نوع الفهرس القياسي المراد إنشاؤه. للفهرسة الضمنية، اتركها فارغة أو احذف هذه المعلمة. للفهرسة المخصصة، القيم الصالحة هي
      • INVERTED: (موصى به) يتكون الفهرس المقلوب من قاموس مصطلحات يحتوي على جميع الكلمات الرمزية مرتبة أبجديًا. لمزيد من التفاصيل، راجع الفهرس المقلوب.
      • STL_SORT: يفرز الحقول العددية باستخدام خوارزمية فرز مكتبة القالب القياسية. يدعم الحقول المنطقية والرقمية (مثل INT8 و INT16 و INT32 و INT64 و FLOAT و DOUBLE).
      • تري: بنية بيانات شجرية لعمليات البحث والاسترجاع السريع للبادئة. يدعم حقول VARCHAR.
  • CreateIndexReq إنشاءفهرس في المجموعة المحددة.
    • اسم المجموعة(سلسلة) اسم المجموعة التي يتم إنشاء الفهرس لها.
    • indexParams(قائمة) قائمة بكائنات IndexParam التي تحتوي على تكوينات الفهرس.

الأساليب والمعلمات

  • إنشاء فهرس

    إنشاء الفهرس في المجموعة المحددة.

    • اسم_المجموعة(سلسلة) اسم المجموعة التي يتم إنشاء الفهرس لها.
    • اسم_الحقل(سلسلة) اسم الحقل القياسي المراد فهرسته.
    • اسم_الفهرس(سلسلة) اسم الفهرس القياسي المراد إنشاؤه. يدعم كل حقل قياسي فهرس واحد.
    • نوع_الفهرس(سلسلة) نوع الفهرس القياسي المراد إنشاؤه. للفهرسة الضمنية، اتركها فارغة أو احذف هذه المعلمة. للفهرسة المخصصة، القيم الصالحة هي
      • INVERTED: (موصى به) يتكون الفهرس المقلوب من قاموس مصطلحات يحتوي على جميع الكلمات الرمزية مرتبة أبجديًا. لمزيد من التفاصيل، راجع الفهرس المقلوب.
      • STL_SORT: يفرز الحقول العددية باستخدام خوارزمية فرز مكتبة القالب القياسية. يدعم الحقول المنطقية والرقمية (مثل INT8 و INT16 و INT32 و INT64 و FLOAT و DOUBLE).
      • تري: بنية بيانات شجرية لعمليات البحث والاسترجاع السريع للبادئة. يدعم حقول VARCHAR.

التحقق من النتيجة

استخدم طريقة list_indexes() للتحقق من إنشاء الفهارس العددية:

استخدم الطريقة listIndexes() للتحقق من إنشاء الفهارس العددية:

استخدم الأسلوب listIndexes() للتحقق من إنشاء الفهارس العددية:

client.list_indexes(
    collection_name="test_scalar_index"  # Specify the collection name
)

# Output:
# ['default_index','inverted_index']
import java.util.List;
import io.milvus.v2.service.index.request.ListIndexesReq;

ListIndexesReq listIndexesReq = ListIndexesReq.builder()
    .collectionName("test_scalar_index")  // Specify the collection name
    .build();

List<String> indexNames = client.listIndexes(listIndexesReq);

System.out.println(indexNames);

// Output:
// [
//     "default_index",
//     "inverted_index"
// ]
res = await client.listIndexes({
    collection_name: 'test_scalar_index'
})

console.log(res.indexes)

// Output:
// [
//     "default_index",
//     "inverted_index"
// ]   

الحدود

  • تدعم الفهرسة العددية حاليًا أنواع البيانات INT8 و INT16 و INT32 و INT64 و FLOAT و DOUBLE و BOOL و VARCHAR و ARRAY، ولكن ليس نوع بيانات JSON.

جرب Managed Milvus مجاناً

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

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

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