高可用性部署
在 us 多区域中使用智能体检索服务时,您将受益于更强大的服务可用性 SLA,即使在区域级服务中断的情况下也能持续正常运行。
us 多区域提供与 Agent Retrieval 的其余部分相同的 API,但有一些限制。us 多区域位置中的数据会复制到美国大陆各区域,并且 us 多区域中的所有活跃索引都会在每个区域中预配冗余服务器。在正常运行条件下,系统会从网络客户端延迟时间最短的区域传送查询。如果发生服务中断或服务容量不足,Google 的负载均衡器会将您的查询重定向到最近的可用区域。负载均衡和复制的设置和维护完全由 Agent Retrieval 管理。
注意:鉴于支持高可用性智能体检索所需的硬件和工程资源投入,客户项目可能需要经过专门审核并列入许可名单后,才能加入高可用性多区域。如需申请高可用性多区域的访问权限,请填写链接的申请表单。
初始配置
您必须申请加入许可名单,才能访问高可用性多区域。
收到确认您的项目已列入访问高可用性多区域的许可名单后,您可以在 us 多区域位置中创建新的集合、数据对象和索引。按照标准 Agent Retrieval API 文档中的说明操作,在通常指定单个区域(例如 us-central1 或 europe-central2)的位置替换为 us。
在 us 多区域中上传的所有数据和执行的所有操作都受益于增强的复制、冗余和更高的可用性。
结算
多区域位置的结算费率高于标准单区域,这反映了复制成本的增加和更高的运营优先级。
如需了解详情,请参阅价格。
限制
未实现存储优化。只有性能优化层级索引可以部署在多区域位置。
在多区域位置,对非标准化嵌入向量的索引进行 SearchDataObjects 调用可能会报告意外的距离指标。从这些索引中检索和排名数据点将是正确的(在近似最近邻索引的限制范围内)。我们建议您始终提供归一化嵌入向量,或依赖自动嵌入生成。
在多区域位置,仅支持 DOT_PRODUCT_DISTANCE。
多区域位置不支持稀疏嵌入。对于特定令牌必须存在于特定字段中的向量搜索请求,可以在请求的过滤表达式中使用 $search 运算符。
在多区域位置中,CreateIndex 和 UpdateIndex 请求中的 Index.dedicated_infrastructure.autoscaling_spec 字段不会被使用。
在多区域位置中,SearchDataObjectsRequests 中的 SearchHint.IndexHint.dense_scann_params 字段不会被使用。多区域 ANN 索引经过调整,可提供大约 95% 的召回率,但召回率可能会因数据的具体情况而异。
从区域部署迁移
如果您的数据位于区域级智能体检索集合中,则可以使用以下简要工作流将这些数据克隆到 us 位置:
- 将集合数据导出到托管该集合的区域中的存储桶,并移除 etag;
- 从存储桶导入到托管在
us位置的集合中。
前期准备
请确保做好以下准备:
- 源区域中的存储桶,用作导出暂存区域。
- 已安装
gcloudCLI。 - 对源集合的 IAM 读取权限、对目标集合的 IAM 写入权限,以及对存储桶的 IAM 读取和写入权限。
- 已在
us中创建的目标集合,其架构与来源相同。
PROJECT_ID:包含要迁移的集合的项目。以下命令假定来源项目和目标项目相同。
SOURCE_LOCATION:来源集合的位置,例如 us-central1。
SOURCE_COLLECTION:要迁移的集合的名称。
STAGING_BUCKET:存储桶中要将集合数据导出到的目录的路径,例如 gs://your-bucket-id。
步骤
每个代码段都可以复制粘贴。将每个代码块顶部的占位符替换为特定于您的项目、来源位置、集合和存储桶的值。
1. 从来源区域导出
cat > request.json <<EOF
{
"gcsDestination": {
"exportUri": "STAGING_BUCKET/export/",
"format": "JSONL"
},
"field_filter": {
"excluded_fields": {
"fields": ["etag"]
}
}
}
EOF
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://vectorsearch.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_LOCATION/collections/SOURCE_COLLECTION:exportDataObjects"
响应包含操作名称,例如 projects/.../locations/us-central1/operations/operation-...。轮询该操作,直到 "done": true。
EXPORT_OPERATION_NAME
gcloud vector-search operations describe "EXPORT_OPERATION_NAME" \
--location="SOURCE_LOCATION"
2. 导入到美国
DEST_COLLECTION:迁移后的集合名称(可以与原始名称相同)。
gcloud vector-search collections import-data-objects "DEST_COLLECTION" \
--location="us" \
--project="PROJECT_ID" \
--gcs-import-contents-uri="STAGING_BUCKET/export/" \
--gcs-import-error-uri="STAGING_BUCKET/import-errors/" \
--gcs-import-output-uri="STAGING_BUCKET/import-output/" \
--async
以与导出相同的方式轮询返回的操作:
IMPORT_OPERATION_NAME
gcloud vector-search operations describe "IMPORT_OPERATION_NAME" \
--location="us"
3. 验证导入
- 检查
gs://your-bucket-uscentral1/import-errors/中是否有任何被拒绝的记录。 - 比较来源和目标之间的记录数。
- 对两者运行一些已知查询并比较结果。