Google Cloud 使用配额来帮助确保公平性、缓解资源用量激增,并避免可用性问题。配额用于限制您的 Google Cloud 项目可使用多少Google Cloud 资源。配额适用于一系列资源类型,包括硬件、软件和网络组件。例如,配额可以限制对某项服务的 API 调用次数、您的项目并发使用的负载均衡器数量或者您可以创建的项目数量。配额可以防止服务过载,从而保护Google Cloud 用户社区。配额还可以帮助您管理自己的 Google Cloud 资源。
Cloud 配额系统执行以下操作:
在大多数情况下,当您尝试消耗的资源超出其配额允许的范围时,系统会阻止对资源的访问,并且您尝试执行的任务会失败。
配额通常在 Google Cloud 项目级别应用。您在一个项目中使用资源不会影响您在另一个项目中的可用配额。在 Google Cloud 项目中,配额在所有应用和 IP 地址间共享。
如需了解详情,请参阅 Cloud 配额概览。
在智能体检索(以前称为 Vector Search 2.0)中,系统会强制执行配额,以保护服务、确保项目之间公平共享容量,并为您提供更可预测的性能和费用。配额按区域独立跟踪。例如,us-central 中的用量不会影响您在 europe-west4 中的配额。
指标
所有指标名称都以 vectorsearch.googleapis.com/ 为前缀。
速率配额(请求数/分钟和字节数/分钟)
对于数据速率配额,配额按每分钟进行评估,并按项目和按区域(或多区域)应用,还可以选择按集合应用。
每次接受的 API 调用都会使计数器递增一个请求(对于字节配额,则为 N 个字节)。计数器按日历分钟计算,并使用滑动窗口评估(在 :00 时不会进行硬重置)。
您可以持续以限额运行,而不会看到“重新填充”效果。
当计数器超出其限制时,其他请求会返回 RESOURCE_EXHAUSTED (HTTP 429),其中包含 reason="RATE_LIMIT_EXCEEDED" 和 quota_metric 字段中的确切指标名称。
控制平面速率配额
以下配额适用于给定项目和区域的资源生命周期以及对集合和索引的读取和列出操作。
范围:每个项目、每个区域
单位:1/min
限制:每分钟请求数。
| 指标 | 计数 |
|---|---|
collection_management_requests
|
collections.createcollections.updatecollections.delete |
collection_read_requests |
collections.get |
collection_list_requests |
collections.list |
index_management_requests
|
indexes.createindexes.updateindexes.delete |
index_read_requests |
indexes.get |
index_list_requests |
indexes.list |
长时间运行的操作 (LRO) 请求
以下配额适用于给定项目和区域的长时间运行的读取、列出、取消和删除操作。
范围:每个项目、每个区域
单位:1/min
限制:每分钟请求数。
| 指标 | 计数 |
|---|---|
lro_requests
|
operations.getoperations.listoperations.canceloperations.delete |
数据平面速率配额
以下配额适用于给定项目、区域和集合的数据对象、查询和搜索流量。
注意:文本搜索和语义搜索会消耗搜索请求配额 (search_requests)。
范围:每个项目、每个区域、每个集合
单位:1/min
限制:每个集合每分钟的请求数
| 指标 | 计数 |
|---|---|
data_object_writes
|
dataObjects.createdataObjects.updatedataObjects.delete\ batchCreate中包含的每个数据对象 batchUpdatebatchDelete |
data_object_reads |
dataObjects.get |
query_requests |
dataObjects.query(仅限元数据的过滤条件查询) |
search_requests |
dataObjects.search(运行密集或稀疏 ANN 时)。 |
knn_search_requests |
dataObjects.search。 |
batch_search_requests |
dataObjects.batchSearch(无论子搜索数量如何,均计为 1 次请求) |
数据平面吞吐量配额
以下配额适用于给定项目、区域和集合每分钟写入的字节数。
范围:每个项目、每个区域、每个集合
单位:1/min
限制:每个集合每分钟的请求数
| 指标 | 计数 |
|---|---|
data_object_write_bytes
|
所有 create、update、delete、batchCreate、batchUpdate 和 batchDelete 调用为集合、数据对象和索引写入的序列化数据和向量字节的总和。 |
批量操作
batchCreate, batchUpdate, batchDelete dataObjects:请求中的每个数据对象都算作对data_object_writes的一次写入,并将其序列化大小(以字节为单位)计入data_object_write_bytes。batchSearch dataObjects:无论捆绑了多少个子搜索,都算作针对batch_search_requests的一个请求。批量搜索会导致子搜索配额也被计算在内。
分配配额(当前数量)
分配配额是当前计数。
计数器是项目拥有的资源或正在进行的操作的实时计数。
计数会在资源创建或操作开始时增加,在删除或操作完成时减少。
达到上限后,下一次创建调用会返回 RESOURCE_EXHAUSTED。请删除现有资源或等待 LRO 完成以释放配额。
控制平面分配配额
以下配额适用于项目在给定项目和区域中可能持有的资源或运行中操作的数量,包括:
- 集合
- 索引
- 对集合、数据对象和索引执行的并发创建、导入和导出操作
范围:每个项目、每个区域
单位:1
限制:绝对计数(精确配额)
| 指标 | 计数 |
|---|---|
collections |
项目/区域中存在的集合数量。 |
indexes |
项目/区域中的索引数量(所有集合的总和)。 |
concurrent_index_operations |
运行中的索引 LRO(创建/更新/删除)。 |
concurrent_collection_operations |
正在进行的集合 LRO(创建/更新/删除)。 |
concurrent_data_object_imports |
正在进行的 dataObjects.import LRO。 |
concurrent_data_object_exports |
正在进行的 dataObjects.export LRO。 |
自动嵌入
自动嵌入使用 Vertex AI 中的 Gemini API (aiplatform.googleapis.com)。每个 API 请求都会计入 search_requests 或 data_object_writes,并且嵌入调用会计入预测配额。确保两个 API 都有余量。
用法示例
以下部分介绍了不同的使用场景对配额的影响。
持续写入工作负载
您正在将文档(数据加上 768 维密集向量,约 4 KB)注入 us-central1 中的单个集合。同时适用以下两项配额:
data_object_writes (requests per minute, per collection)
data_object_write_bytes (bytes per minute, per collection)
您会受到最先达到的上限的限制。对于小型对象,请求速率配额通常会绑定。对于大型对象,字节数配额会受到限制。
在 Google Cloud 控制台中查看这两个指标,了解哪个指标最接近其上限。
搜索密集型工作负载
向单个集合发送 ANN 查询的服务工作负载会消耗 search_requests。如果您的每秒查询次数 (QPS) 峰值接近每个集合的上限,请申请提高上限,或将流量分散到同一区域中的多个集合。
许多小型集合
如果您计划创建的集合数量超过项目的 collections 限制,请在开始创建之前申请增加配额。否则,超出限制的创建调用将失败,并显示 RESOURCE_EXHAUSTED。
批量搜索
包含 10 个子搜索的 batchSearch 正好消耗一个 batch_search_requests,但每个子搜索仍仅在外部批处理级别计入其各自的每个子搜索指标。请相应地规划批量扇出。
查看配额
如需查看配额,请执行以下操作:
- 在 Google Cloud 控制台中打开 IAM 和管理 > 配额页面。
- 过滤
Vector Search API服务。 - 使用维度(例如位置)列按区域和集合过滤数据平面配额。
每个指标的当前有效限制会显示在 Google Cloud 控制台“配额”页面中指标名称旁边,按区域和数据平面配额(集合)进行过滤。
设置配额提醒
我们建议您为工作负载所依赖的配额设置利用率达到 80% 时触发的提醒。如需了解详情,请参阅设置配额提醒和在提醒政策中使用配额指标。
失败
因超出配额而被拒绝的请求不会计入配额本身。
因其他原因(INVALID_ARGUMENT, NOT_FOUND 等)而失败的请求会计入速率配额,因为服务仍需对其进行评估。
vector_schema 验证失败次数会计入统计。在进行速率配额检查后,它们会在 API 层被拒绝。
超出配额
当请求受到限制时,API 会返回:
gRPC: RESOURCE_EXHAUSTED (8)
HTTP: 429 Too Many Requests
出错提示中包含超出的确切指标。
例如:
Quota exceeded for quota metric 'vectorsearch.googleapis.com/search_requests'
and limit 'SearchRequestsPerMinutePerProjectPerRegionPerCollection' of service
'vectorsearch.googleapis.com' for consumer 'project_number:123456789012'.
发生这种情况时,您可以申请增加配额。
推荐的客户端行为
客户应:
- 对于暂时性速率限制错误,使用指数退避算法和抖动进行重试。从大约 1 秒开始,最多退避大约 32 秒。
- 不重试由分配配额(例如
"too many collections")导致的错误。请改为删除资源或申请增加配额。 - 如果单个集合的热点达到其
data_object_writes或data_object_write_bytes配额,请在集合或区域之间分散写入。 - 预热。如果您知道某次发布会超出当前限制,请至少提前几个工作日申请提高限制。
配额增加申请 (QIR)
若要申请增加配额,请执行以下操作:
- 在 Google Cloud 控制台中打开 IAM 和管理 > 配额页面。
- 选择要增加的行。
- 点击修改配额,输入新值和简要的业务理由,然后提交。包含:
- 指标名称(例如
vectorsearch.googleapis.com/search_requests)。 - 区域和(对于数据平面)集合 ID。
- 您的目标吞吐量和工作负载的简短说明(稳定与峰值、预期峰值 QPS、预期数据集大小等)。
- 指标名称(例如
请求会转送给代理检索团队进行审核。大多数不超过默认值 2 倍的增加请求都会自动获得批准。大幅增加配额可能需要额外审核。