Milvus
Zilliz
Beranda
  • Panduan Pengguna
  • Home
  • Docs
  • Panduan Pengguna

  • Pencarian

  • Pencarian Kunci Utama

Pencarian Kunci UtamaCompatible with Milvus 2.6.9+

Ketika melakukan pencarian kemiripan, Anda selalu diminta untuk menyediakan satu atau lebih vektor kueri, bahkan jika vektor kueri sudah ada di koleksi target. Untuk menghindari pengambilan vektor sebelum pencarian, Anda dapat menggunakan kunci primer sebagai gantinya.

Gambaran umum

Pada platform e-commerce, pengguna dapat memasukkan kata kunci untuk mengambil produk yang cocok dengannya. Setelah pengguna melihat halaman detail produk, platform juga akan menampilkan daftar produk serupa di bagian bawah halaman untuk pengguna yang ingin membandingkannya.

Rekomendasi diurutkan berdasarkan kemiripannya dengan kata kunci atau produk saat ini. Untuk mencapai hal ini, pengembang platform perlu mengambil representasi vektor dari kata kunci atau produk saat ini dari Milvus sebelum pencarian kemiripan yang sebenarnya, yang meningkatkan perjalanan bolak-balik antara platform dan Milvus dan menghasilkan sejumlah besar pelampung berdimensi tinggi yang dikirimkan melalui jaringan.

Untuk menyederhanakan logika interaksi antara aplikasi Anda dan Milvus, mengurangi jumlah perjalanan bolak-balik, dan menghindari pengiriman sejumlah besar nilai floating-point berdimensi tinggi di seluruh jaringan, pertimbangkan untuk menggunakan pencarian kunci utama.

Dalam pencarian kunci utama, Anda tidak perlu memberikan vektor kueri apa pun. Sebaliknya, Anda diminta untuk memberikan kunci utama (ids) dari entitas yang berisi vektor kueri.

Batasan & larangan

  • Pencarian menggunakan kunci primer berlaku untuk semua tipe data vektor, kecuali bidang vektor jarang yang berasal dari bidang VarChar, seperti pada fungsi BM25.

  • Anda dapat menggunakan kunci primer sebagai pengganti vektor kueri dalam pencarian yang difilter, rentang, dan pengelompokan, secara opsional dengan pagination yang diaktifkan. Namun, fitur ini tidak berlaku untuk pencarian hibrida dan iterator pencarian.

  • Untuk pencarian kemiripan yang melibatkan daftar sematan, Anda masih perlu mengambil vektor kueri, mengaturnya ke dalam daftar sematan, dan menjalankan pencarian.

  • Anda tidak dapat menggunakan kunci primer sebagai pengganti vektor kueri di API RESTful.

  • Untuk primary key yang tidak ada atau dalam format yang salah, Milvus akan memunculkan kesalahan.

  • Kunci primer dan vektor kueri tidak saling terpisah. Menyediakan keduanya juga akan mengakibatkan kesalahan.

Contoh-contoh

Contoh-contoh berikut ini mengasumsikan bahwa semua ID Int64 yang disediakan tersedia dalam koleksi target.

Kunci utama tidak digunakan untuk penyaringan; kunci utama hanya digunakan untuk pengambilan vektor.

Untuk melakukan pencarian kunci-primer dasar, cukup ganti vektor kueri dengan kunci primer.

from pymilvus import MilvusClient

client = MilvusClient(
    uri="http://localhost:19530",
    token="root:Milvus"
)

res = client.search(
    collection_name="quick_setup",
    anns_field="vector",
    ids=[551, 296, 43], # a list of primary keys
    limit=3,
    search_params={"metric_type": "IP"}
)

for hits in res:
    for hit in hits:
        print(hit)
// java
// node.js
// go
# restful

Contoh 2: Pencarian yang difilter menggunakan kunci utama

Contoh berikut ini mengasumsikan bahwa warna dan suka adalah dua bidang yang ditentukan skema dalam koleksi target.

res = client.search(
    collection_name="my_collection",
    ids=[551, 296, 43], #
    filter='color like "red%" and likes > 50',
    output_fields=["color", "likes"],
    limit=3,
)
// java
// node.js
// go
# restful

Contoh 3: Pencarian rentang menggunakan kunci primer

res = client.search(
    collection_name="my_collection",
    ids=[551, 296, 43],
    limit=3,
    search_params={
        "params": {
            "radius": 0.4,
            "range_filter": 0.6
        }
    }
)
// java
// node.js
// go
# restful

Contoh 4: Pencarian pengelompokan menggunakan kunci primer

Contoh berikut ini mengasumsikan docId adalah bidang yang ditentukan skema dalam koleksi target.

res = client.search(
    collection_name="my_collection",
    ids=[551, 296, 43],
    limit=3,
    group_by_field="docId",
    output_fields=["docId"]
)
// java
// node.js
// go
# restful

Coba Milvus yang Dikelola secara Gratis

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

Mulai
Umpan balik

Apakah halaman ini bermanfaat?