Menyiapkan Vector Search dengan Private Service Connect

Private Service Connect memungkinkan penggunaan layanan secara pribadi di seluruh jaringan VPC yang menjadi bagian dari grup, tim, project, atau organisasi yang berbeda. Anda dapat memublikasikan dan menggunakan layanan menggunakan alamat IP yang Anda tentukan dan yang bersifat internal untuk jaringan VPC Anda, serta untuk endpoint Vector Search guna melakukan penelusuran kesamaan vektor.

Private Service Connect sebaiknya diaktifkan di endpoint Vector Search untuk kasus penggunaan yang:

  1. Memerlukan latensi rendah dan koneksi aman ke backend penyaluran Vector Search.
  2. Memiliki ruang IP terbatas untuk pemesanan peering VPC eksklusif.
  3. Perlu mengakses backend penyaluran dari beberapa jaringan VPC pengguna.

Untuk mempelajari cara menyiapkan Private Service Connect lebih lanjut, lihat Ringkasan Private Service Connect dari dokumentasi Virtual Private Cloud (VPC).

Membuat endpoint indeks

Untuk membuat endpoint dengan Private Service Connect yang diaktifkan, Anda harus menentukannya saat membuat endpoint. Hal ini mirip seperti membuat endpoint lain di Vertex AI.

REST

  • PROJECT: Project layanan tempat Anda membuat resource Vertex AI.
  • VPC_PROJECT: Project tempat VPC klien Anda berada. Untuk penyiapan VPC mandiri, ini sama dengan $PROJECT. Untuk penyiapan VPC Bersama, ini adalah project host VPC.
  • PROJECT=<your-service-project>
    VPC_PROJECT=<your-vpc-project>
    REGION=us-central1
    VERTEX_ENDPOINT=$REGION-aiplatform.googleapis.com
    curl -H "Content-Type: application/json" \
      -H "Authorization: Bearer `gcloud auth print-access-token`" \
      https://$VERTEX_ENDPOINT/v1/projects/$PROJECT/locations/$REGION/indexEndpoints \
      -d '{displayName: "<your-index-endpoint-name>", privateServiceConnectConfig:
      { enablePrivateServiceConnect: true, projectAllowlist: ["'$VPC_PROJECT'", "'$PROJECT'"] }}'
    

    Python

    Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Python API.

    def vector_search_create_index_endpoint_private_service_connect(
        project: str, location: str, display_name: str, project_allowlist: list[str]
    ) -> aiplatform.MatchingEngineIndexEndpoint:
        """Create a vector search index endpoint with Private Service Connect enabled.
    
        Args:
            project (str): Required. Project ID
            location (str): Required. The region name
            display_name (str): Required. The index endpoint display name
            project_allowlist (list[str]): Required. A list of projects from which
                the forwarding rule will be able to target the service attachment.
    
        Returns:
            aiplatform.MatchingEngineIndexEndpoint - The created index endpoint.
        """
        # Initialize the Vertex AI client
        aiplatform.init(project=project, location=location)
    
        # Create Index Endpoint
        index_endpoint = aiplatform.MatchingEngineIndexEndpoint.create(
            display_name=display_name,
            description="Matching Engine VPC Index Endpoint",
            enable_private_service_connect=True,
            project_allowlist=project_allowlist,
        )
    
        return index_endpoint
    
    

    Tentang opsi deployment indeks

    Anda dapat men-deploy indeks dengan konektivitas layanan otomatis atau manual.

    • Men-deploy dengan otomatisasi Private Service Connect: Siapkan kebijakan koneksi layanan dan deploy indeks Anda. Dengan menyiapkan kebijakan koneksi layanan, Anda dapat men-deploy ke jaringan tertentu tanpa membuat alamat komputasi dan aturan penerusan setiap kali.
    • Men-deploy dengan koneksi manual: Men-deploy indeks dan membuat alamat komputasi dan aturan penerusan secara manual. Anda dapat memilih opsi ini jika perlu menggunakan beberapa alamat IP.

    Men-deploy dengan otomatisasi Private Service Connect

    Anda dapat menyiapkan kebijakan koneksi layanan sehingga tidak perlu membuat alamat komputasi dan aturan penerusan secara manual setelah setiap deployment indeks.

    1. Pertama, buat kebijakan koneksi layanan yang menentukan jaringan, class layanan, dan region tempat indeks akan di-deploy. Ini adalah penyiapan satu kali. Jika Anda sudah melakukannya, lanjutkan ke prosedur berikutnya.
    2. Deploy indeks.

    Batasan

    Otomatisasi hanya mengizinkan satu alamat IP per project per jaringan. Jika Anda perlu menggunakan beberapa alamat IP, lihat Men-deploy indeks secara manual.

    Membuat kebijakan koneksi layanan

    Anda harus menjadi administrator jaringan untuk membuat kebijakan koneksi layanan guna mengotomatiskan deployment indeks.

    Untuk mengotomatiskan deployment indeks, ikuti langkah-langkah berikut:

    1. Buat kebijakan koneksi layanan Anda.

      • PROJECT: Project layanan tempat Anda membuat resource Vertex AI.
      • VPC_PROJECT: Project tempat VPC klien Anda berada. Untuk penyiapan VPC tunggal, ini akan sama dengan $PROJECT. Untuk penyiapan VPC Bersama, ini adalah project host VPC.
      • NETWORK_NAME: Nama jaringan tempat deployment akan dilakukan, dalam format projects//global/networks/.
      • REGION: Region jaringan.
      • PSC_SUBNETS: Subnet Private Service Connect yang akan digunakan.
      gcloud network-connectivity service-connection-policies create <policy_name> \
      --project=<vpc_project> --network=<network_name> # in the format projects/<project_id>/global/networks/<network_name> \
      --service-class=gcp-vertexai --region=<region> --subnets=<psc subnets>
      
    2. Lihat kebijakan koneksi layanan Anda.

      gcloud network-connectivity service-connection-policies list --project=<vpc_project> -–region=<region>
      

    Men-deploy indeks

    gcloud

    Contoh ini menggunakan perintah gcloud ai index-endpoints deploy-index.

    Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

    • INDEX_ENDPOINT_ID: ID endpoint indeks.
    • DEPLOYED_INDEX_ID: String yang ditentukan pengguna untuk mengidentifikasi indeks yang di-deploy secara unik. Nama ini harus diawali dengan huruf dan hanya berisi huruf, angka, atau garis bawah. Lihat DeployedIndex.id untuk panduan format.
    • DEPLOYED_INDEX_ENDPOINT_NAME: Nama tampilan endpoint indeks yang di-deploy.
    • INDEX_ID: ID indeks.
    • LOCATION: Region tempat Anda menggunakan Vertex AI.
    • PROJECT_ID: project ID Google Cloud Anda.
    • NETWORK_1: Nama jaringan Compute Engine tempat endpoint indeks ini akan di-deploy.
    • NETWORK_2: (Opsional) Nama jaringan Compute Engine tambahan untuk men-deploy endpoint ini.

    Jalankan perintah berikut:

    Linux, macOS, atau Cloud Shell

    gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID \
        --deployed-index-id=DEPLOYED_INDEX_ID \
        --display-name=DEPLOYED_INDEX_ENDPOINT_NAME \
        --index=INDEX_ID \
        --region=LOCATION \
        --project=PROJECT_ID \
        --psc-automation-configs=project-id=PROJECT_ID,network=NETWORK_1 \
        --psc-automation-configs=project-id=PROJECT_ID,network=NETWORK_2

    Windows (PowerShell)

    gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID `
        --deployed-index-id=DEPLOYED_INDEX_ID `
        --display-name=DEPLOYED_INDEX_ENDPOINT_NAME `
        --index=INDEX_ID `
        --region=LOCATION `
        --project=PROJECT_ID `
        --psc-automation-configs=project-id=PROJECT_ID,network=NETWORK_1 `
        --psc-automation-configs=project-id=PROJECT_ID,network=NETWORK_2

    Windows (cmd.exe)

    gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID ^
        --deployed-index-id=DEPLOYED_INDEX_ID ^
        --display-name=DEPLOYED_INDEX_ENDPOINT_NAME ^
        --index=INDEX_ID ^
        --region=LOCATION ^
        --project=PROJECT_ID ^
        --psc-automation-configs=project-id=PROJECT_ID,network=NETWORK_1 ^
        --psc-automation-configs=project-id=PROJECT_ID,network=NETWORK_2

    REST

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • INDEX_ENDPOINT_ID: ID endpoint indeks.
    • DEPLOYED_INDEX_ID: String yang ditentukan pengguna untuk mengidentifikasi indeks yang di-deploy secara unik. Nama ini harus diawali dengan huruf dan hanya berisi huruf, angka, atau garis bawah. Lihat DeployedIndex.id untuk panduan format.
    • DEPLOYED_INDEX_ENDPOINT_NAME: Nama tampilan endpoint indeks yang di-deploy.
    • INDEX_ID: ID indeks.
    • LOCATION: Region tempat Anda menggunakan Vertex AI.
    • PROJECT_ID: project ID Google Cloud Anda.
    • NETWORK_1: Nama jaringan Compute Engine tempat endpoint indeks ini akan di-deploy.
    • NETWORK_2: (Opsional) Nama jaringan Compute Engine tambahan untuk men-deploy endpoint ini.
    • PROJECT_NUMBER: Nomor project yang dibuat secara otomatis untuk project Anda.

    Metode HTTP dan URL:

    POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex

    Meminta isi JSON:

    {
     "deployedIndex": {
       "id": "DEPLOYED_INDEX_ID",
       "index": "projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID",
       "displayName": "DEPLOYED_INDEX_ENDPOINT_NAME"
       "psc_automation_configs": [
              {"project_id": "PROJECT_ID", "network": "NETWORK_1"},
              {"project_id": "PROJECT_ID", "network": "NETWORK_2" }]
     }
    }
    

    Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
     "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID/operations/OPERATION_ID",
     "metadata": {
       "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeployIndexOperationMetadata",
       "genericMetadata": {
         "createTime": "2022-10-19T17:53:16.502088Z",
         "updateTime": "2022-10-19T17:53:16.502088Z"
       },
       "deployedIndexId": "DEPLOYED_INDEX_ID"
     }
    }
    

    Python

    Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Python API.

    def vector_search_deploy_psc_automation_index(
        project: str,
        location: str,
        index_name: str,
        index_endpoint_name: str,
        deployed_index_id: str,
        psc_automation_configs: Sequence[Tuple[str, str]],
    ) -> None:
        """Deploy a vector search index to an index endpoint using PSC automation.
    
        Args:
            project (str): Required. Project ID
            location (str): Required. The region name
            index_name (str): Required. The index to update. A fully-qualified index
              resource name or a index ID.  Example:
              "projects/123/locations/us-central1/indexes/my_index_id" or
              "my_index_id".
            index_endpoint_name (str): Required. Index endpoint to deploy the index
              to.
            deployed_index_id (str): Required. The user specified ID of the
              DeployedIndex.
            psc_automation_config (Sequence[Tuple[str, str]]): Required. A list of
              (project_id, network) pairs where PSC endpoints will be setup for the
              deployed index. Example:
              [("123", "{projects/123/global/networks/my-network1"),
              ("123", "{projects/123/global/networks/my-network2")]
        """
        # Initialize the Vertex AI client
        aiplatform.init(project=project, location=location)
    
        # Create the index instance from an existing index
        index = aiplatform.MatchingEngineIndex(index_name=index_name)
    
        # Create the index endpoint instance from an existing endpoint.
        index_endpoint = aiplatform.MatchingEngineIndexEndpoint(
            index_endpoint_name=index_endpoint_name
        )
    
        # Deploy Index to Endpoint with PSC automation enabled.
        index_endpoint.deploy_index(
            index=index,
            deployed_index_id=deployed_index_id,
            psc_automation_configs=psc_automation_configs,
        )
    
    

    Menghapus kebijakan koneksi layanan

    Jika Anda perlu menghapus kebijakan koneksi layanan, jalankan perintah berikut:

    gcloud network-connectivity service-connection-policies delete --project=<vpc_project> –-region=<region> <policy_name>
    

    Men-deploy dengan koneksi manual

    Deploy indeks dan buat aturan penerusan di project VPC Anda.

    Men-deploy indeks

    Setelah indeks siap, pada langkah ini, Anda akan men-deploy indeks ke endpoint yang dibuat dengan Private Service Connect yang diaktifkan.

    gcloud

    Contoh ini menggunakan perintah gcloud ai index-endpoints deploy-index.

    Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

    • INDEX_ENDPOINT_ID: ID endpoint indeks.
    • DEPLOYED_INDEX_ID: String yang ditentukan pengguna untuk mengidentifikasi indeks yang di-deploy secara unik. Nama ini harus diawali dengan huruf dan hanya berisi huruf, angka, atau garis bawah. Lihat DeployedIndex.id untuk panduan format.
    • DEPLOYED_INDEX_ENDPOINT_NAME: Nama tampilan endpoint indeks yang di-deploy.
    • INDEX_ID: ID indeks.
    • LOCATION: Region tempat Anda menggunakan Vertex AI.
    • PROJECT_ID: project ID Google Cloud Anda.

    Jalankan perintah berikut:

    Linux, macOS, atau Cloud Shell

    gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID \
        --deployed-index-id=DEPLOYED_INDEX_ID \
        --display-name=DEPLOYED_INDEX_ENDPOINT_NAME \
        --index=INDEX_ID \
        --region=LOCATION \
        --project=PROJECT_ID

    Windows (PowerShell)

    gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID `
        --deployed-index-id=DEPLOYED_INDEX_ID `
        --display-name=DEPLOYED_INDEX_ENDPOINT_NAME `
        --index=INDEX_ID `
        --region=LOCATION `
        --project=PROJECT_ID

    Windows (cmd.exe)

    gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID ^
        --deployed-index-id=DEPLOYED_INDEX_ID ^
        --display-name=DEPLOYED_INDEX_ENDPOINT_NAME ^
        --index=INDEX_ID ^
        --region=LOCATION ^
        --project=PROJECT_ID

    REST

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • INDEX_ENDPOINT_ID: ID endpoint indeks.
    • DEPLOYED_INDEX_ID: String yang ditentukan pengguna untuk mengidentifikasi indeks yang di-deploy secara unik. Nama ini harus diawali dengan huruf dan hanya berisi huruf, angka, atau garis bawah. Lihat DeployedIndex.id untuk panduan format.
    • DEPLOYED_INDEX_ENDPOINT_NAME: Nama tampilan endpoint indeks yang di-deploy.
    • INDEX_ID: ID indeks.
    • LOCATION: Region tempat Anda menggunakan Vertex AI.
    • PROJECT_ID: project ID Google Cloud Anda.
    • PROJECT_NUMBER: Nomor project yang dibuat secara otomatis untuk project Anda.

    Metode HTTP dan URL:

    POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex

    Meminta isi JSON:

    {
     "deployedIndex": {
       "id": "DEPLOYED_INDEX_ID",
       "index": "projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID",
       "displayName": "DEPLOYED_INDEX_ENDPOINT_NAME"
     }
    }
    

    Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
     "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID/operations/OPERATION_ID",
     "metadata": {
       "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeployIndexOperationMetadata",
       "genericMetadata": {
         "createTime": "2022-10-19T17:53:16.502088Z",
         "updateTime": "2022-10-19T17:53:16.502088Z"
       },
       "deployedIndexId": "DEPLOYED_INDEX_ID"
     }
    }
    

    Python

    Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Python API.

    def vector_search_deploy_index(
        project: str,
        location: str,
        index_name: str,
        index_endpoint_name: str,
        deployed_index_id: str,
    ) -> None:
        """Deploy a vector search index to a vector search index endpoint.
    
        Args:
            project (str): Required. Project ID
            location (str): Required. The region name
            index_name (str): Required. The index to update. A fully-qualified index
              resource name or a index ID.  Example:
              "projects/123/locations/us-central1/indexes/my_index_id" or
              "my_index_id".
            index_endpoint_name (str): Required. Index endpoint to deploy the index
              to.
            deployed_index_id (str): Required. The user specified ID of the
              DeployedIndex.
        """
        # Initialize the Vertex AI client
        aiplatform.init(project=project, location=location)
    
        # Create the index instance from an existing index
        index = aiplatform.MatchingEngineIndex(index_name=index_name)
    
        # Create the index endpoint instance from an existing endpoint.
        index_endpoint = aiplatform.MatchingEngineIndexEndpoint(
            index_endpoint_name=index_endpoint_name
        )
    
        # Deploy Index to Endpoint
        index_endpoint = index_endpoint.deploy_index(
            index=index, deployed_index_id=deployed_index_id
        )
    
        print(index_endpoint.deployed_indexes)
    
    

    Konsol

    Gunakan petunjuk ini untuk men-deploy indeks Anda.

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

      Buka Cari Vektor

    2. Daftar indeks aktif Anda akan ditampilkan.
    3. Pilih nama indeks yang ingin Anda deploy. Halaman detail indeks akan terbuka.
    4. Dari halaman detail indeks, klik Deploy ke endpoint. Panel deployment indeks akan terbuka.
    5. Masukkan nama tampilan - nama ini berfungsi sebagai ID dan tidak dapat diperbarui.
    6. Dari drop-down Endpoint, pilih endpoint tempat Anda ingin men-deploy indeks ini. Catatan: Endpoint tidak tersedia jika indeks sudah di-deploy ke endpoint tersebut.
    7. Opsional: Di kolom Jenis mesin, pilih memori standar atau memori tinggi.
    8. Opsional. Pilih Aktifkan penskalaan otomatis untuk mengubah ukuran jumlah node secara otomatis berdasarkan permintaan workload Anda. Jumlah default replika adalah 2 jika penskalaan otomatis dinonaktifkan.
    9. Klik Deploy untuk men-deploy indeks ke endpoint. Catatan: Perlu waktu sekitar 30 menit untuk di-deploy.

    Membuat aturan penerusan di project VPC

    Setelah deployment indeks selesai, endpoint indeks akan menampilkan URI lampiran layanan, bukan alamat IP. Anda perlu membuat alamat komputasi, serta aturan penerusan dalam project VPC yang menargetkan lampiran layanan menggunakan alamat komputasi yang dibuat. Untuk membuat alamat komputasi, gunakan contoh berikut:

    gcloud compute addresses create ${ADDRESS_NAME:?} \
        --region=${REGION:?} \
        --subnet=${SUBNET_NAME:?} \
        --project=${VPC_PROJECT:?}
    

    Untuk membuat aturan penerusan yang menargetkan URI lampiran layanan menggunakan alamat komputasi yang dibuat, gunakan contoh berikut:

    SERVICE_ATTACHMENT_URI=`gcloud ai index-endpoints describe {INDEX_ENDPOINT_ID}
    --format="value(deployedIndexes.privateEndpoints.serviceAttachment)"`
    
    gcloud compute forwarding-rules create ${ENDPOINT_NAME:?} \
        --network=${NETWORK_NAME:?} \
        --address=${ADDRESS_NAME:?} \
        --target-service-attachment=${SERVICE_ATTACHMENT_URI:?} \
        --project=${VPC_PROJECT:?} \
        --region=${REGION:?}
    

    (Opsional) Membuat data DNS untuk alamat IP

    Jika ingin menghubungkan dan memuat tanpa mengingat alamat IP yang sebenarnya, Anda dapat membuat data DNS. Langkah ini opsional.

    DNS_NAME_SUFFIX=matchingengine.vertexai.goog. # Don't forget the "." in the end.
    DNS_NAME=${INDEX_ENDPOINT_ID:?}.${REGION:?}.${DNS_NAME_SUFFIX:?}
    
    gcloud dns managed-zones create ${DNS_ZONE_NAME:?} \
        --dns-name=${DNS_NAME_SUFFIX:?} \
        --visibility=private \
        --project=${VPC_PROJECT:?} \
        --region=${REGION:?}
    
    gcloud dns record-sets create ${DNS_NAME:?} \
        --rrdatas=${IP_ADDRESS:?} \
        --type=A --ttl=60 \
        --zone=${DNS_ZONE_NAME:?} \
        --project=${VPC_PROJECT:?} \
        --region=${REGION:?}
    

    Mengirim kueri ke endpoint indeks

    Setelah membuat endpoint dengan Private Service Connect dan membuat indeks, Anda dapat mulai menjalankan kueri.

    Untuk membuat kueri indeks Anda, lihat Indeks kueri guna mendapatkan nearest neighbor.

    Langkah berikutnya