ساختن فهرست برداری

در این راهنما توضیح داده شده است که چگونه یک فهرست برداری در Milvus ایجاد شود.

یک فهرست بردار یک واحد سازماندهی فهرست استفاده شده برای شتاب دادن به جستجوی شباهت بردار. بدون ساختن یک فهرست بر روی بردارها، Milvus جستجوی خام انجام خواهد داد.

به طور پیش‌فرض، Milvus بر روی بخش‌هایی با کمتر از 1،024 ردیف ایندکس نمی‌سازد.

مثال زیر نحوه‌ی ایجاد یک فهرست IVF_FLAT با 1024 خوشه با استفاده از فاصله اقلیدسی (L2) را نشان می‌دهد. شما می‌توانید انتخاب کنید که از نوع ایندکس و معیاری که برای سناریوی خود مناسب است، استفاده کنید.

آماده‌سازی پارامترهای ایندکس

برای آماده‌سازی پارامترهای ایندکس، مراحل زیر را دنبال کنید:

index_params = {
  "metric_type":"L2",
  "index_type":"IVF_FLAT",
  "params":{"nlist":1024}
}
پارامتر توضیحات گزینه‌ها
metric_type نوع معیار استفاده شده برای اندازه‌گیری شباهت بردار. برای بردارهای اعشاری:- L2 (فاصله اقلیدسی)- IP (ضرب داخلی)- COSINE (شباهت کسینوسی)برای بردارهای دودویی:- JACCARD (فاصله جاکارد)- HAMMING (فاصله همینگ)
index_type نوع ایندکس استفاده شده برای شتاب دادن به جستجوی بردار. برای بردارهای اعشاری:- FLAT (FLAT)- IVF_FLAT (IVF_FLAT)- IVF_SQ8 (IVF_SQ8)- IVF_PQ (IVF_PQ)- GPU_IVF_FLAT* (GPU_IVF_FLAT)- GPU_IVF_PQ*> (GPU_IVF_PQ)- HNSW (HNSW)- DISKANN* (DISKANN)برای بردارهای دودویی:- BIN_FLAT (BIN_FLAT)- BIN_IVF_FLAT (BIN_IVF_FLAT)
params پارامترهای خاص ساخت برای ایندکس. برای اطلاعات بیشتر، به موارد فهرست‌بندی در حافظه و روی دیسک مراجعه کنید.
  • DISKANN شرایط خاصی دارد. برای اطلاعات بیشتر به موارد فهرست‌بندی روی دیسک مراجعه کنید.
  • GPU_IVF_FLAT و GPU_IVF_PQ تنها در نصب‌های Milvus با پشتیبانی از GPU در دسترس است.

ساختن ایندکس

ایندکس را با مشخص کردن نام فیلد بردار و پارامترهای ایندکس ساخته شده است.

from pymilvus import Collection, utility
collection = Collection("book")
collection.create_index(
  field_name="book_intro",
  index_params=index_params
)

utility.index_building_progress("book")

پارامتر توضیحات
field_name نام فیلد بردار بر روی که ایندکس باید ساخته شود.
index_params پارامترهای ایندکس برای ساخت.

ساختن ایندکس اسکالار

بر خلاف بردارها، اسکالارها فقط شامل مقدار مطلق هستند و جهت ندارند. Milvus اعداد و رشته‌های فردی را به عنوان اسکالارها در نظر می‌گیرد. در زیر لیستی از انواع داده‌های موجود برای فیلدهای اسکالار در Milvus آمده است.

از نسخه 2.1.0 Milvus به بعد، برای شتاب دادن به فیلتر کردن ویژگی در جستجوهای ترکیبی، شما می‌توانید یک ایندکس روی فیلدهای اسکالار بسازید. شما می‌توانید اطلاعات بیشتر درباره فهرست‌بندی فیلد اسکالار را اینجا بخوانید.

توجه: لینک "اینجا" باید با لینک واقعی مشخص شده در مستند اصلی جایگزین شود.

ساختن ایندکس

هنگام ساخت ایندکس روی یک فیلد اسکالار، نیازی به تنظیم هیچ پارامتر ایندکسی نیست. مقدار پیش‌فرض نام ایندکس فیلد اسکالار default_idx است که به دنبال آن نام فیلد درجه‌بندی شده است. شما می‌توانید این مقدار را به مقادیر مناسب دیگری تغییر دهید اگر مایل هستید.

کد زیر فرض می‌کند که یک مجموعه با نام book از پیش وجود دارد و نیاز به ایجاد یک ایندکس بر روی فیلد رشته‌ای book_name است.

from pymilvus import Collection

collection = Collection("book")   
collection.create_index(
  field_name="book_name", 
  index_name="scalar_index",
)
collection.load()

هنگامی که ایندکس ایجاد شود، می‌توانید عبارت منطقی برای این فیلد رشته‌ای را در جستجوی شباهت بردار در نظر بگیرید، همانطور که در زیر نشان داده شده است:

search_param = {
  "data": [[0.1, 0.2]],
  "anns_field": "book_intro",
  "param": {"metric_type": "L2", "params": {"nprobe": 10}},
  "limit": 2,
  "expr": "book_name like \"Hello%\"", 
}
res = collection.search(**search_param)

حذف کردن ایندکس

from pymilvus import Collection
collection = Collection("book")      # یک مجموعه موجود گرفته شود.
collection.drop_index()