یہ فصل ملاقات کراتی ہے کہ کیسے آپ پائتھان کا ڈویلپمنٹ شروع کر سکتے ہیں اور پائتھان کا استعمال کرکے ہمیں ملوس کی کارروائیوں کا پہلے سے جاننا ہوتا ہے۔
۔ ورژن کی ضرورت:
- ملوس 2.3.0
- پائتھان 3 (3.7.1 یا اس سے زیادہ)
- PyMilvus 2.3.x
ملوس پائتھان ایس ڈی کا انسٹال کریں
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 is the simplest demo example, used to introduce the API")
hello_milvus = Collection("hello_milvus", schema)
- کلیکشن میں ویکٹر ڈالیں:
import random
entities = [
[i for i in range(3000)], # field pk
[float(random.randrange(-20, -10)) for _ in range(3000)], # field random
[[random.random() for _ in range(8)] for _ in range(3000)], # field embeddings
]
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
نیچے واپسی نتائج اور سوال کی لیٹنسی دکھائی گئی ہیں:
=== ملوس کے ساتھ منسلک ہو رہا ہے ===
کیا سلیکشن جو hello_milvus نام کی ہے ملوس میں موجود ہے: غلط
=== کلیکشن `hello_milvus` بنانا ===
=== انٹیٹیز داخل کرنا ===
ملوس میں انٹیٹیز کی تعداد: 3000
=== IVF_FLAT انڈیکس بنانا ===
=== لوڈ کرنا ===
=== برابر برابر برابرات سے تلاش کرنا ===
میچ: (فاصلہ: 0.0، شناخت: 2998)، رینڈم فیلڈ: -11.0
میچ: (فاصلہ: 0.4694891378879547، شناخت: 1262)، رینڈم فیلڈ: -17.0
میچ: (فاصلہ: 0.46560767221450806، شناخت: 1685)، رینڈم فیلڈ: -18.0
میچ: (فاصلہ: 0.0، شناخت: 2999)، رینڈم فیلڈ: -11.0
میچ: (فاصلہ: 0.37130862498283386، شناخت: 1760)، رینڈم فیلڈ: -17.0
میچ: (فاصلہ: 0.47116813، شناخت: 106)، رینڈم فیلڈ: -15.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.17413942575454712، شناخت: 1289)، رینڈم فیلڈ: -18.0
میچ: (فاصلہ: 0.15453216469287872، شناخت: 677)، رینڈم فیلڈ: -17.0
میچ: (فاصلہ: 0.0، شناخت: 2999)، رینڈم فیلڈ: -11.0
میچ: (فاصلہ: 0.16946256196594238، شناخت: 640)، رینڈم فیلڈ: -17.0
میچ: (فاصلہ: 0.23995159554481506، شناخت: 1890)، رینڈم فیلڈ: -15.0
تلاش کی لیٹنسی = 0.3028 سیکنڈ
=== `pk in [0, 1]` کی روشنی میں حذف کرنا ===
حذف کرنے کے لئے کوئیری کرتے ہوئے پوچھنا کہ کیا `pk in [0, 1]` کے بنیاد پر ڈیلیٹ میں پہلے سے سوالی ہے -> نتیجہ:
- {'pk': 0، 'random': -10.0، 'embeddings': [0.249356، 0.75377، 0.1495325، 0.5611126، 0.1480831، 0.9754792، 0.7326457، 0.6718869]}
- {'pk': 1، 'random': -19.0، 'embeddings': [0.8562291، 0.5082093، 0.2537944، 0.3673589، 0.69892، 0.916102، 0.4716004، 0.4637171]}
`pk in [0، 1]` کی روشنی میں حذف کرنے کے بعد کوئیری کرنا -> نتیجہ: []
=== کلیکشن `hello_milvus` کا حذف کرنا ===