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 中创建其他端点。
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'"] }}'
部署索引
现在索引已准备就绪,在此步骤中,您可以将索引部署到您在启用 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" } }
控制台
按照以下说明部署索引。
- 在 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:?}
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 创建了端点并创建了索引,可以开始运行查询了。
如需查询索引,请参阅查询索引以获取最近的邻居。