Mengkueri indeks publik untuk mendapatkan tetangga terdekat

Setelah membuat dan men-deploy indeks, Anda dapat menjalankan kueri untuk mendapatkan tetangga terdekat.

Berikut adalah beberapa contoh kueri pencocokan untuk menemukan tetangga terdekat teratas menggunakan algoritma k-nearest neighbors (k-NN).

Contoh kueri untuk endpoint publik

Python

Python

def vector_search_find_neighbors(
    project: str,
    location: str,
    index_endpoint_name: str,
    deployed_index_id: str,
    queries: List[List[float]],
    num_neighbors: int,
) -> None:
    """Query the vector search index.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name
        index_endpoint_name (str): Required. Index endpoint to run the query
        against.
        deployed_index_id (str): Required. The ID of the DeployedIndex to run
        the queries against.
        queries (List[List[float]]): Required. A list of queries. Each query is
        a list of floats, representing a single embedding.
        num_neighbors (int): Required. The number of neighbors to return.
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location)

    # Create the index endpoint instance from an existing endpoint.
    my_index_endpoint = aiplatform.MatchingEngineIndexEndpoint(
        index_endpoint_name=index_endpoint_name
    )

    # Query the index endpoint for the nearest neighbors.
    resp = my_index_endpoint.find_neighbors(
        deployed_index_id=deployed_index_id,
        queries=queries,
        num_neighbors=num_neighbors,
    )
    print(resp)

Curl

publicEndpointDomainName yang tercantum di bawah ini dapat ditemukan di Deploy.


  $ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://1957880287.us-central1-181224308459.vdb.vertexai.goog/v1/projects/181224308459/locations/us-central1/indexEndpoints/3370566089086861312:findNeighbors -d '{deployed_index_id: "test_index_public1", queries: [{datapoint: {datapoint_id: "0", feature_vector: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}, neighbor_count: 5}]}'
  

Contoh curl ini menunjukkan cara memanggil dari klien http(s), meskipun endpoint publik mendukung protokol ganda untuk restful dan grpc_cli.


  $ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://1957880287.us-central1-181224308459.vdb.vertexai.goog/v1/projects/${PROJECT_ID}/locations/us-central1/indexEndpoints/${INDEX_ENDPOINT_ID}:readIndexDatapoints -d '{deployed_index_id:"test_index_public1", ids: ["606431", "896688"]}'
  

Konsol

Gunakan petunjuk ini untuk membuat kueri indeks yang di-deploy ke endpoint publik dari konsol.

  1. Di bagian Vertex AI pada Konsol Google Cloud, buka bagian Deploy and Use. Pilih Cari Vektor

    Buka Vector Search

  2. Pilih indeks yang ingin Anda kueri. Halaman Info indeks akan terbuka.
  3. Scroll ke bawah ke bagian Indeks yang di-deploy, lalu pilih indeks yang di-deploy yang ingin Anda kueri. Halaman Info indeks yang di-deploy akan terbuka.
  4. Dari bagian Indeks kueri, pilih parameter kueri Anda. Anda dapat memilih untuk membuat kueri berdasarkan vektor, atau titik data tertentu.
  5. Jalankan kueri menggunakan perintah curl yang disediakan, atau dengan menjalankan menggunakan Cloud Shell.
  6. Jika menggunakan Cloud Shell, pilih Run in Cloud Shell.
  7. Jalankan di Cloud Shell.
  8. Hasilnya menampilkan tetangga terdekat.

Untuk melihat contoh menyeluruh tentang cara membuat indeks, cara men-deploy-nya ke endpoint publik, dan cara membuat kueri, lihat notebook resmi: Menggunakan Vector Search dan Vertex AI Embeddings untuk Teks untuk StackOverflow Questions.

Setelan waktu kueri yang memengaruhi performa

Parameter waktu kueri berikut dapat memengaruhi latensi, ketersediaan, dan biaya saat menggunakan Vector Search. Panduan ini berlaku untuk sebagian besar kasus. Namun, selalu bereksperimenlah dengan konfigurasi Anda untuk memastikan konfigurasi tersebut berfungsi untuk kasus penggunaan Anda.

Untuk definisi parameter, lihat Parameter konfigurasi indeks.

Parameter Tentang Dampak performa
approximateNeighborsCount

Memberi tahu algoritme jumlah hasil perkiraan yang akan diambil dari setiap shard.

Nilai approximateNeighborsCount harus selalu lebih besar dari nilai setNeighborsCount. Jika nilai setNeighborsCount kecil, 10 kali nilai tersebut direkomendasikan untuk approximateNeighborsCount. Untuk nilai setNeighborsCount yang lebih besar, pengganda yang lebih kecil dapat digunakan.

Meningkatkan nilai approximateNeighborsCount dapat memengaruhi performa dengan cara berikut:

  • Recall: Meningkat
  • Latensi: Berpotensi meningkat
  • Ketersediaan: Tidak ada dampak
  • Biaya: Dapat meningkat karena lebih banyak data yang diproses selama penelusuran

Menurunkan nilai approximateNeighborsCount dapat memengaruhi performa dengan cara berikut:

  • Ingatan: Menurun
  • Latensi: Berpotensi menurun
  • Ketersediaan: Tidak ada dampak
  • Biaya: Dapat menurunkan biaya karena lebih sedikit data yang diproses selama penelusuran
setNeighborCount Menentukan jumlah hasil yang Anda inginkan untuk ditampilkan oleh kueri.

Nilai kurang dari atau sama dengan 300 tetap berperforma tinggi pada sebagian besar kasus penggunaan. Untuk nilai yang lebih besar, uji kasus penggunaan spesifik Anda.

fractionLeafNodesToSearch Mengontrol persentase node daun yang akan dikunjungi saat mencari tetangga terdekat. Hal ini terkait dengan leafNodeEmbeddingCount karena makin banyak embedding per node daun, makin banyak data yang diperiksa per daun.

Meningkatkan nilai fractionLeafNodesToSearch dapat memengaruhi performa dengan cara berikut:

  • Recall: Meningkat
  • Latensi: Meningkat
  • Ketersediaan: Tidak ada dampak
  • Biaya: Dapat meningkat karena latensi yang lebih tinggi memerlukan resource mesin yang lebih banyak

Menurunkan nilai fractionLeafNodesToSearch dapat memengaruhi performa dengan cara berikut:

  • Ingatan: Menurun
  • Latensi: Berkurang
  • Ketersediaan: Tidak ada dampak
  • Biaya: Dapat menurun karena latensi yang lebih rendah menggunakan resource mesin yang lebih sedikit

Langkah selanjutnya