🚀 Coba Zilliz Cloud, Milvus yang sepenuhnya terkelola, secara gratis—rasakan performa 10x lebih cepat! Coba Sekarang>>

milvus-logo
LFAI
Beranda
  • Integrasi
    • Evaluasi & Keteramatan
  • Home
  • Docs
  • Integrasi

  • Evaluasi & Keteramatan

  • FiftyOne

Melakukan Pencarian Visi dengan Milvus dan FiftyOne

FiftyOne adalah alat sumber terbuka untuk membangun dataset berkualitas tinggi dan model visi komputer. Panduan ini membantu Anda mengintegrasikan kemampuan pencarian kemiripan Milvus ke FiftyOne, sehingga Anda dapat melakukan pencarian visi pada set data Anda sendiri.

FiftyOne menyediakan API untuk membuat koleksi Milvus, mengunggah vektor, dan menjalankan kueri kemiripan, baik secara terprogram di Python maupun melalui tunjuk-dan-klik di Aplikasi. Demonstrasi di halaman ini berfokus pada integrasi terprogram.

Prasyarat

Sebelum memulai, pastikan Anda memiliki yang berikut ini:

  • Server Milvus yang sedang berjalan.
  • Lingkungan Python dengan pymilvus dan fiftyone terinstal.
  • Sebuah kumpulan data gambar untuk dicari.

Persyaratan Instalasi

Untuk contoh ini, kita akan menggunakan pymilvus dan fiftyone. Anda dapat menginstalnya dengan menjalankan perintah berikut:

python3 -m pip install pymilvus fiftyone torch torchvision

Resep dasar

Alur kerja dasar untuk menggunakan Milvus untuk membuat indeks kemiripan pada dataset FiftyOne Anda dan menggunakannya untuk menanyakan data Anda adalah sebagai berikut:

  1. Muat dataset ke FiftyOne
  2. Hitung embedding vektor untuk sampel atau patch dalam dataset Anda, atau pilih model untuk menggunakan embedding yang dihasilkan.
  3. Gunakan metode compute_similarity() untuk menghasilkan indeks kemiripan Milvus untuk sampel atau tambalan objek dalam dataset dengan mengatur parameter backend="milvus" dan menentukan brain_key pilihan Anda.
  4. Gunakan indeks kemiripan Milvus ini untuk menanyakan data Anda dengan sort_by_similarity().
  5. Jika diinginkan, hapus indeks tersebut.

Prosedur

Contoh di bawah ini menunjukkan alur kerja di atas.

1. Muat set data ke FiftyOne dan hitung penyematan untuk sampel

Kode berikut ini menggunakan kumpulan gambar sampel yang disediakan oleh FiftyOne untuk mendemonstrasikan integrasi. Anda dapat menyiapkan set gambar Anda sendiri dengan merujuk ke artikel ini.

import fiftyone as fo
import fiftyone.brain as fob
import fiftyone.zoo as foz

# Step 1: Load your data into FiftyOne
dataset = foz.load_zoo_dataset("quickstart")

# Steps 2 and 3: Compute embeddings and create a similarity index
milvus_index = fob.compute_similarity(
    dataset,
    brain_key="milvus_index",
    backend="milvus",
)

2. Melakukan pencarian kemiripan penglihatan

Sekarang Anda dapat menggunakan indeks kesamaan Milvus untuk melakukan pencarian kesamaan visi pada kumpulan data Anda.

# Step 4: Query your data
query = dataset.first().id  # query by sample ID
view = dataset.sort_by_similarity(
    query,
    brain_key="milvus_index",
    k=10,  # limit to 10 most similar samples
)

# Step 5 (optional): Cleanup

# Delete the Milvus collection
milvus_index.cleanup()

# Delete run record from FiftyOne
dataset.delete_brain_run("milvus_index")

3. Menghapus indeks

Jika Anda tidak lagi memerlukan indeks kemiripan Milvus, Anda dapat menghapusnya dengan menggunakan kode berikut:

# Step 5: Delete the index
milvus_index.delete()

Menggunakan backend Milvus

Secara default, memanggil compute_similarity() atau sort_by_similarity() akan menggunakan backend sklearn.

Untuk menggunakan backend Milvus, cukup setel parameter backend opsional compute_similarity() ke "milvus":

import fiftyone.brain as fob

fob.compute_similarity(..., backend="milvus", ...)

Atau, Anda dapat mengonfigurasi FiftyOne secara permanen untuk menggunakan backend Milvus dengan mengatur variabel lingkungan berikut:

export FIFTYONE_BRAIN_DEFAULT_SIMILARITY_BACKEND=milvus

atau dengan mengatur parameter default_similarity_backend pada konfigurasi otak Anda yang terletak di ~/.fiftyone/brain_config.json:

{
    "default_similarity_backend": "milvus"
}

Otentikasi

Jika Anda menggunakan server Milvus khusus, Anda dapat memberikan kredensial Anda dengan berbagai cara.

Cara yang disarankan untuk mengonfigurasi kredensial Milvus Anda adalah dengan menyimpannya dalam variabel lingkungan yang ditunjukkan di bawah ini, yang secara otomatis diakses oleh FiftyOne setiap kali koneksi ke Milvus dibuat.

export FIFTYONE_BRAIN_SIMILARITY_MILVUS_URI=XXXXXX
export FIFTYONE_BRAIN_SIMILARITY_MILVUS_USER=XXXXXX
export FIFTYONE_BRAIN_SIMILARITY_MILVUS_PASSWORD=XXXXXX

# also available if necessary
export FIFTYONE_BRAIN_SIMILARITY_MILVUS_SECURE=true
export FIFTYONE_BRAIN_SIMILARITY_MILVUS_TOKEN=XXXXXX
export FIFTYONE_BRAIN_SIMILARITY_MILVUS_DB_NAME=XXXXXX
export FIFTYONE_BRAIN_SIMILARITY_MILVUS_CLIENT_KEY_PATH=XXXXXX
export FIFTYONE_BRAIN_SIMILARITY_MILVUS_CLIENT_PEM_PATH=XXXXXX
export FIFTYONE_BRAIN_SIMILARITY_MILVUS_CA_PEM_PATH=XXXXXX
export FIFTYONE_BRAIN_SIMILARITY_MILVUS_SERVER_PEM_PATH=XXXXXX
export FIFTYONE_BRAIN_SIMILARITY_MILVUS_SERVER_NAME=XXXXXX

Konfigurasi FiftyOne Brain

Anda juga dapat menyimpan kredensial Anda dalam konfigurasi otak Anda yang terletak di ~/.fiftyone/brain_config.json:

{
    "similarity_backends": {
        "milvus": {
            "uri": "XXXXXX",
            "user": "XXXXXX",
            "password": "XXXXXX",

            # also available if necessary
            "secure": true,
            "token": "XXXXXX",
            "db_name": "XXXXXX",
            "client_key_path": "XXXXXX",
            "client_pem_path": "XXXXXX",
            "ca_pem_path": "XXXXXX",
            "server_pem_path": "XXXXXX",
            "server_name": "XXXXXX"
        }
    }
}

Perhatikan bahwa file ini tidak akan ada sampai Anda membuatnya.

Argumen kata kunci

Anda dapat secara manual memberikan kredensial Milvus Anda sebagai argumen kata kunci setiap kali Anda memanggil metode seperti compute_similarity() yang membutuhkan koneksi ke Milvus:

import fiftyone.brain as fob

milvus_index = fob.compute_similarity(
    ...
    backend="milvus",
    brain_key="milvus_index",
    uri="XXXXXX",
    user="XXXXXX",
    password="XXXXXX",

    # also available if necessary
    secure=True,
    token="XXXXXX",
    db_name="XXXXXX",
    client_key_path="XXXXXX",
    client_pem_path="XXXXXX",
    ca_pem_path="XXXXXX",
    server_pem_path="XXXXXX",
    server_name="XXXXXX",
)

Perhatikan bahwa, ketika menggunakan strategi ini, Anda harus memberikan kredensial secara manual ketika memuat indeks nanti melalui load_brain_results():

milvus_index = dataset.load_brain_results(
    "milvus_index",
    uri="XXXXXX",
    user="XXXXXX",
    password="XXXXXX",

    # also available if necessary
    secure=True,
    token="XXXXXX",
    db_name="XXXXXX",
    client_key_path="XXXXXX",
    client_pem_path="XXXXXX",
    ca_pem_path="XXXXXX",
    server_pem_path="XXXXXX",
    server_name="XXXXXX",
)

Parameter konfigurasi Milvus

Backend Milvus mendukung berbagai parameter kueri yang dapat digunakan untuk menyesuaikan kueri kemiripan Anda. Parameter-parameter ini meliputi:

  • collection_name(Tidak ada): nama koleksi Milvus yang akan digunakan atau dibuat. Jika tidak ada yang disediakan, koleksi baru akan dibuat

  • metrik ("dotproduct"): metrik jarak sematan yang akan digunakan saat membuat indeks baru. Nilai yang didukung adalah ("dotproduct", "euclidean")

  • consistency_level ("Session"): tingkat konsistensi yang akan digunakan. Nilai yang didukung adalah ("Strong", "Session", "Bounded", "Eventually")

Untuk informasi terperinci tentang parameter ini, lihat dokumentasi otentikasi Milvus dan dokumentasi tingkat konsistensi Milvus.

Anda dapat menentukan parameter-parameter ini melalui salah satu strategi yang dijelaskan di bagian sebelumnya. Berikut ini contoh konfigurasi otak yang mencakup semua parameter yang tersedia:

{
    "similarity_backends": {
        "milvus": {
            "collection_name": "your_collection",
            "metric": "dotproduct",
            "consistency_level": "Strong"
        }
    }
}

Namun, biasanya parameter-parameter ini secara langsung diteruskan ke compute_similarity() untuk mengonfigurasi indeks baru yang spesifik:

milvus_index = fob.compute_similarity(
    ...
    backend="milvus",
    brain_key="milvus_index",
    collection_name="your_collection",
    metric="dotproduct",
    consistency_level="Strong",
)

Mengelola brain run

FiftyOne menyediakan berbagai metode yang dapat Anda gunakan untuk mengelola brain run.

Sebagai contoh, Anda dapat memanggil list_brain_runs() untuk melihat kunci otak yang tersedia pada kumpulan data:

import fiftyone.brain as fob

# List all brain runs
dataset.list_brain_runs()

# Only list similarity runs
dataset.list_brain_runs(type=fob.Similarity)

# Only list specific similarity runs
dataset.list_brain_runs(
    type=fob.Similarity,
    patches_field="ground_truth",
    supports_prompts=True,
)

Atau, Anda dapat menggunakan get_brain_info() untuk mengambil informasi tentang konfigurasi brain run:

info = dataset.get_brain_info(brain_key)
print(info)

Gunakan load_brain_results() untuk memuat SimilarityIndex untuk menjalankan brain run.

Anda dapat menggunakan rename_brain_run() untuk mengganti nama kunci otak yang terkait dengan hasil run kemiripan yang sudah ada:

dataset.rename_brain_run(brain_key, new_brain_key)

Terakhir, Anda dapat menggunakan delete_brain_run() untuk menghapus brain run:

dataset.delete_brain_run(brain_key)

Memanggil delete_brain_run() hanya akan menghapus catatan brain run dari kumpulan data FiftyOne Anda; ini tidak akan menghapus koleksi Milvus yang terkait, yang dapat Anda lakukan sebagai berikut:

# Delete the Milvus collection
milvus_index = dataset.load_brain_results(brain_key)
milvus_index.cleanup()

Untuk alur kerja pencarian vektor umum pada dataset FiftyOne menggunakan backend Milvus, lihat Contoh di sini.

Coba Milvus yang Dikelola secara Gratis

Zilliz Cloud bebas masalah, didukung oleh Milvus dan 10x lebih cepat.

Mulai
Umpan balik

Apakah halaman ini bermanfaat?