এই অধ্যায়টি Milvus ডেভেলপমেন্ট শুরু করার জন্য পাইথন ব্যবহারের সাথে কিভাবে দ্রুত শুরু করা যায় তা নিয়ে।

আমরা যে স্যাম্পল কোড প্রদান করি, সেটি চালানো মাধ্যমে আপনি মিলভুসের কার্যকারিতা প্রাথমিক ভাবে বুঝতে পারবেন।

সংস্করণের প্রয়োজনীয়তা

  • Milvus 2.3.0
  • Python 3 (3.7.1 বা উর্ধ্বমুখী)
  • PyMilvus 2.3.x

Milvus Python SDK ইনস্টল করুন

python3 -m pip install pymilvus==

স্যাম্পল কোড ডাউনলোড করুন

তথ্য ডাউনলোড করতে শুরুতেই নিম্নলিখিত কমান্ডটি ব্যবহার করুন hello_milvus.py বা ডাউনলোড করার জন্য নিম্নলিখিত কমান্ডটি ব্যবহার করুন।

$ wget https://www.tizi365.com/storage/hello_milvus.py

স্যাম্পল কোডের ব্যাখ্যা

স্যাম্পল কোডটি নিম্নলিখিত পদক্ষেপগুলি অনুলিপি করে।

  • PyMilvus প্যাকেজ আমদানি করুন:
from pymilvus import (
    connections,
    utility,
    FieldSchema,
    CollectionSchema,
    DataType,
    Collection,
)
  • সার্ভারে সংযোগ করুন:
connections.connect("default", host="localhost", port="19530")
  • সংগ্রহ তৈরি করুন:
fields = [
    FieldSchema(name="pk", dtype=DataType.INT64, is_primary=True, auto_id=False),
    FieldSchema(name="random", dtype=DataType.DOUBLE),
    FieldSchema(name="embeddings", dtype=DataType.FLOAT_VECTOR, dim=8)
]
schema = CollectionSchema(fields, "hello_milvus হ'ল সরলতম ডেমো উদাহরণ, API পরিচিতির জন্য ব্যবহার করা হয়েছে")
hello_milvus = Collection("hello_milvus", schema)
  • সংগ্রহে ভেক্টর ঢুকিয়ে দিন:
import random
entities = [
    [i for i in range(3000)],  # ফিল্ড পিকে
    [float(random.randrange(-20, -10)) for _ in range(3000)],  # ফিল্ড র‌্যান্ডম
    [[random.random() for _ in range(8)] for _ in range(3000)],  # ফিল্ড এম্বেডিং
]
insert_result = hello_milvus.insert(entities)
hello_milvus.flush()
  • এন্টিটিগুলির উপর একটি ইনডেক্স তৈরি করুন:
index = {
    "index_type": "IVF_FLAT",
    "metric_type": "L2",
    "params": {"nlist": 128},
}
hello_milvus.create_index("embeddings", index)
  • সংগ্রহ মেমোরিতে লোড করুন এবং ভেক্টর সিমিলারিটি খোঁজার কাজ করুন:
hello_milvus.load()
vectors_to_search = entities[-1][-2:]
search_params = {
    "metric_type": "L2",
    "params": {"nprobe": 10},
}
result = hello_milvus.search(vectors_to_search, "embeddings", search_params, limit=3, output_fields=["random"])
  • ভেক্টর কুয়েরি করুন:
result = hello_milvus.query(expr="random > -14", output_fields=["random", "embeddings"])
  • মিক্সড সার্চ করুন:
result = hello_milvus.search(vectors_to_search, "embeddings", search_params, limit=3, expr="random > -12", output_fields=["random"])
  • প্রাথমিক কী ভিত্তিতে এন্টিটিগুলি মুছুন:
expr = f"pk in [{entities[0][0]}, {entities[0][1]}]"
hello_milvus.delete(expr)
  • সংগ্রহটি মুছুন:
utility.drop_collection("hello_milvus")

নমূনা কোড চালানো

নিম্নলিখিত কমান্ড প্রয়োগ করে নমূনা কোড চালান।

$ python3 hello_milvus.py

নিচে প্রদর্শিত হল ফিরে আনা ফলাফল এবং প্রশ্ন ল্যাটেনসি:

=== Milvus এ সংযোগ করা হচ্ছে ===

কি Milvus এ নামকিত সংগ্রহ বিদিত: ফ্যাল্স

=== সংগ্রহ `hello_milvus` তৈরি করা হচ্ছে ===

=== সাজানো হচ্ছে ইউনিটি ===

মিলভুসে ইউনিটির সংখ্যা: 3000

=== IVF_FLAT ইনডেক্স তৈরি করা হয়েছে ===

=== লোড হচ্ছে ===

=== ভেক্টর সদৃশতা ভিত্তিক অনুসন্ধান ===

ম্যাচ: (দূরত্ব: 0.0, আইডি: 2998), র‍্যান্ডম ফিল্ড: -11.0
ম্যাচ: (দূরত্ব: 0.11455299705266953, আইডি: 1581), র‍্যান্ডম ফিল্ড: -18.0
ম্যাচ: (দূরত্ব: 0.1232629269361496, আইডি: 2647), র‍্যান্ডম ফিল্ড: -13.0
ম্যাচ: (দূরত্ব: 0.0, আইডি: 2999), র‍্যান্ডম ফিল্ড: -11.0
ম্যাচ: (দূরত্ব: 0.10560893267393112, আইডি: 2430), র‍্যান্ডম ফিল্ড: -18.0
ম্যাচ: (দূরত্ব: 0.13938161730766296, আইডি: 377), র‍্যান্ডম ফিল্ড: -14.0
অনুসন্ধান ল্যাটেন্সি = 0.2796 সেকেন্ড

=== `random > -14` ব্যবহার করে অনুসন্ধান করা হচ্ছে ===

অনুসন্ধান ফলাফল:
-{'pk': 9, 'random': -13.0, 'embeddings': [0.298433, 0.931987, 0.949756, 0.598713, 0.290125, 0.094323, 0.064444, 0.306993]}
অনুসন্ধান ল্যাটেন্সি = 0.2970 সেকেন্ড

=== `random > -12` ব্যবহার করে মিশ্রিত অনুসন্ধান পরিচালনা ===

ম্যাচ: (দূরত্ব: 0.0, আইডি: 2998), র‍্যান্ডম ফিল্ড: -11.0
ম্যাচ: (দূরত্ব: 0.15773043036460876, আইডি: 472), র‍্যান্ডম ফিল্ড: -11.0
ম্যাচ: (দূরত্ব: 0.3273330628871918, আইডি: 2146), র‍্যান্ডম ফিল্ড: -11.0
ম্যাচ: (দূরত্ব: 0.0, আইডি: 2999), র‍্যান্ডম ফিল্ড: -11.0
ম্যাচ: (দূরত্ব: 0.15844076871871948, আইডি: 2218), র‍্যান্ডম ফিল্ড: -11.0
ম্যাচ: (দূরত্ব: 0.1622171700000763, আইডি: 1403), র‍্যান্ডম ফিল্ড: -11.0
অনুসন্ধান ল্যাটেন্সি = 0.3028 সেকেন্ড

=== `pk in [0, 1]` এর সাহায্যে মুছে ফেলা হচ্ছে ===

মুছে ফেলার আগে অভিব্যক্তি `pk in [0, 1]` ভিত্তিক অনুসন্ধান -> ফলাফল:
-{'pk': 0, 'random': -18.0, 'embeddings': [0.142279, 0.414248, 0.378628, 0.971863, 0.535941, 0.107011, 0.207052, 0.98182]}
-{'pk': 1, 'random': -15.0, 'embeddings': [0.57512, 0.358512, 0.439131, 0.862369, 0.083284, 0.294493, 0.004961, 0.180082]}

অপরাধের পরে মুছে ফেলানোর জন্য উপযোগী অভিব্যক্তি `pk in [0, 1]` ভিত্তিক অনুসন্ধান -> ফলাফল: []

=== সংগ্রহ `hello_milvus` মুছে ফেলা হচ্ছে ===