Private Service Connect 允许跨属于不同群组、团队、项目或组织的 VPC 网络以不公开方式使用服务。您可以使用由您定义且位于您的 VPC 网络内部的 IP 地址发布和使用服务,以便 Vector Search 端点执行向量相似度搜索。
在 Vector Search 端点上启用 Private Service Connect 适用于以下使用场景:
- 要求低延迟,并与 Vector Search 服务后端建立安全连接。
- 专用 VPC 对等互连预留的 IP 空间有限。
- 需要从多个用户 VPC 网络访问服务后端。
如需详细了解如何设置 Private Service Connect,请参阅 Virtual Private Cloud (VPC) 文档中的 Private Service Connect 概览。
创建索引端点
如需创建启用 Private Service Connect 的端点,必须在创建端点时定义该端点。这类似于在 Vertex AI 中创建其他端点。
REST
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
如需了解如何安装或更新 Vertex AI SDK for Python,请参阅安装 Vertex AI SDK for Python。 如需了解详情,请参阅 Python API 参考文档。
索引部署选项简介
您可以通过自动或手动服务连接部署索引。
- 使用 Private Service Connect 自动化功能进行部署:设置服务连接政策并部署索引。设置服务连接政策后,您无需每次都创建计算地址和转发规则,即可部署到特定网络。
- 通过手动连接进行部署:部署索引,然后手动创建计算地址和转发规则。如果您需要使用多个 IP 地址,可以选择此选项。
使用 Private Service Connect 自动化功能进行部署
您可以设置服务连接政策,这样就不必在每次部署索引后手动创建计算地址和转发规则。
限制
Automation 仅允许每个项目每个网络使用一个 IP 地址。如果您需要使用多个 IP 地址,请参阅手动部署索引。
创建服务连接政策
您必须是网络管理员,才能创建服务连接政策以自动部署索引。
如需自动部署索引,请按以下步骤操作:
创建服务连接政策。
- PROJECT:要在其中创建 Vertex AI 资源的服务项目。
- VPC_PROJECT:您的客户端 VPC 所在的项目。对于单个 VPC 设置,这与 $PROJECT 相同。对于共享 VPC 设置,这是 VPC 宿主项目。
-
NETWORK_NAME:要部署到的网络的名称,格式为
projects/
。/global/networks/ - REGION:网络区域。
- PSC_SUBNETS:要使用的 Private Service Connect 子网。
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>
查看您的服务连接政策。
gcloud network-connectivity service-connection-policies list --project=<vpc_project> -–region=<region>
部署索引
gcloud
本示例使用 gcloud ai index-endpoints deploy-index
命令。
在使用下面的命令数据之前,请先进行以下替换:
- INDEX_ENDPOINT_ID:索引端点的 ID。
- DEPLOYED_INDEX_ID:用户指定的字符串,用于唯一标识已部署的索引。必须以字母开头,并且只包含字母、数字或下划线。如需了解格式准则,请参阅 DeployedIndex.id。
- DEPLOYED_INDEX_ENDPOINT_NAME:已部署索引端点的显示名称。
- INDEX_ID:索引的 ID。
- LOCATION:您在其中使用 Vertex AI 的区域。
- PROJECT_ID:您的 Google Cloud 项目 ID。
- NETWORK_1:此索引端点将部署到的 Compute Engine 网络的名称。
- NETWORK_2:(可选)要部署此端点的其他 Compute Engine 网络名称。
执行以下命令:
Linux、macOS 或 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
在使用任何请求数据之前,请先进行以下替换:
- INDEX_ENDPOINT_ID:索引端点的 ID。
- DEPLOYED_INDEX_ID:用户指定的字符串,用于唯一标识已部署的索引。必须以字母开头,并且只包含字母、数字或下划线。如需了解格式准则,请参阅 DeployedIndex.id。
- DEPLOYED_INDEX_ENDPOINT_NAME:已部署索引端点的显示名称。
- INDEX_ID:索引的 ID。
- LOCATION:您在其中使用 Vertex AI 的区域。
- PROJECT_ID:您的 Google Cloud 项目 ID。
- NETWORK_1:此索引端点将部署到的 Compute Engine 网络的名称。
- NETWORK_2:(可选)要部署此端点的其他 Compute Engine 网络名称。
- PROJECT_NUMBER:自动生成的项目编号。
HTTP 方法和网址:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex
请求 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" }] } }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "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
如需了解如何安装或更新 Vertex AI SDK for Python,请参阅安装 Vertex AI SDK for Python。 如需了解详情,请参阅 Python API 参考文档。
删除服务连接政策
如果您需要删除服务连接政策,请运行以下命令:
gcloud network-connectivity service-connection-policies delete --project=<vpc_project> –-region=<region> <policy_name>
通过手动连接进行部署
部署索引并在 VPC 项目中创建转发规则。
部署索引
现在索引已准备就绪,在此步骤中,您可以将索引部署到您在启用 Private Service Connect 的情况下创建的端点。
gcloud
本示例使用gcloud ai index-endpoints deploy-index
命令。
在使用下面的命令数据之前,请先进行以下替换:
- INDEX_ENDPOINT_ID:索引端点的 ID。
- DEPLOYED_INDEX_ID:用户指定的字符串,用于唯一标识已部署的索引。必须以字母开头,并且只包含字母、数字或下划线。如需了解格式准则,请参阅 DeployedIndex.id。
- DEPLOYED_INDEX_ENDPOINT_NAME:已部署索引端点的显示名称。
- INDEX_ID:索引的 ID。
- LOCATION:您在其中使用 Vertex AI 的区域。
- PROJECT_ID:您的 Google Cloud 项目 ID。
执行以下命令:
Linux、macOS 或 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
在使用任何请求数据之前,请先进行以下替换:
- INDEX_ENDPOINT_ID:索引端点的 ID。
- DEPLOYED_INDEX_ID:用户指定的字符串,用于唯一标识已部署的索引。必须以字母开头,并且只包含字母、数字或下划线。如需了解格式准则,请参阅 DeployedIndex.id。
- DEPLOYED_INDEX_ENDPOINT_NAME:已部署索引端点的显示名称。
- INDEX_ID:索引的 ID。
- LOCATION:您在其中使用 Vertex AI 的区域。
- PROJECT_ID:您的 Google Cloud 项目 ID。
- PROJECT_NUMBER:自动生成的项目编号。
HTTP 方法和网址:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex
请求 JSON 正文:
{ "deployedIndex": { "id": "DEPLOYED_INDEX_ID", "index": "projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID", "displayName": "DEPLOYED_INDEX_ENDPOINT_NAME" } }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "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
如需了解如何安装或更新 Vertex AI SDK for Python,请参阅安装 Vertex AI SDK for Python。 如需了解详情,请参阅 Python API 参考文档。
控制台
按照以下说明部署索引。
- 在 Google Cloud 控制台的 Vertex AI 部分中,前往部署和使用部分。选择 Vector Search
- 系统会显示活跃索引列表。
- 选择您要部署的索引的名称。系统会打开索引详情页面。
- 在索引详情页面中,点击 部署到端点。系统会打开索引部署面板。
- 输入显示名称,此名称充当 ID 且无法更新。
- 从端点下拉列表中,选择要将此索引部署到的端点。注意:如果索引已部署到该端点,则该端点不可用。
- 可选:在机器类型字段中,选择标准内存或高内存。
- 可选。选择启用自动扩缩功能,以根据工作负载的需求自动调整节点数量。如果停用自动扩缩,则默认副本数为 2。
- 点击部署以将索引部署到端点。注意:部署过程大约需要 30 分钟。
在 VPC 项目中创建转发规则
索引部署完成后,索引端点会返回服务连接 URI,而不是 IP 地址。您需要创建计算地址,并在针对服务附件的 VPC 项目中使用创建的计算地址创建转发规则。如需创建计算地址,请使用以下示例:
gcloud compute addresses create ${ADDRESS_NAME:?} \
--region=${REGION:?} \
--subnet=${SUBNET_NAME:?} \
--project=${VPC_PROJECT:?}
如需使用创建的计算地址创建以服务附件 URI 为目标的转发规则,请使用以下示例:
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:?}
(可选)为 IP 地址创建 DNS 记录
如果您想连接和加载而不记住实际 IP 地址,则可以创建 DNS 记录。这是可选步骤。
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:?}
将查询发送到索引端点
现在,您已使用 Private Service Connect 创建了端点并创建了索引,可以开始运行查询了。
如需查询索引,请参阅查询索引以获取最近的邻居。