在规划Pinecone部署时,需要充分了解向量的存储需求以便于选择合适的Pod类型和数量。本文主要介绍Pinecone响亮数据库的类型和数量,包括向量数量、维度和Pod大小等等。每个因素均对索引的大小、Pod的类型及其复制策略有所影响。
一、Pinecone向量数量
确定索引大小时,最重要的因素是计划使用的向量数量。一般单个p1 Pod可以存储约1M个向量,而s1 Pod则可存储5M个向量。但此估计会受到其他因素如维度和元数据的影响。
二、Pinecone向量维度
向量的维度会影响其在给定pod中的存储容量。假定每个向量的典型配置为768个维度,这影响了上述关于向量数量的经验法则。每个维度消耗4字节内存,因此如果预计每个向量有768个维度,那么1M个向量大约需要3GB的存储空间(不考虑元数据或其他开销)。下表提供了根据维度预计每1M向量所需的pod数量的一些示例。
Pod type | top_k 10 | top_k< 250 | top_k 1000 |
---|---|---|---|
p1 | 30 | 25 | 20 |
p2 | 150 | 50 | 20 |
s1 | 10 | 10 | 10 |
二、每秒查询数
每秒查询数(QPS)受索引的Pod类型、副本数以及查询的top_k值的共同影响。Pod类型是主要影响因素,因为不同类型的Pod针对不同的优化目标进行了优化。
P1 pods优化了性能,提供低延迟查询,但每个pod能容纳的向量较少,更适合延迟要求较低的应用。S1 pods针对大容量存储进行了优化,适合具有中等或宽松延迟要求的大型索引。
三、元数据基数与大小
计划索引时的另一个重要考虑因素是元数据的基数与大小。虽然对于少量向量,元数据的大小增加可能微不足道,但随着向量数量增至数亿或数十亿,其影响变得显著。
插入向量和元数据时,具有高基数的索引可能需要更多内存,这会降低pod中可以容纳的向量数量。此外,若每个向量的元数据较大,索引将需要更多存储空间。使用选择性元数据索引有助于减少内存使用。
四、Pod规模调整
可以从较大的Pod开始,例如 p1.x2,其中每个Pod规模的提升都会使可用于向量的空间加倍。建议从较小的Pod开始,随着需求的增长逐步扩展,以避免一开始就使用过大的Pod,导致后期无法升级而需要提前迁移到新的索引。
五、实例应用
以下例子说明了如何根据上述指南选择适当的Pod类型、规模和数量来服务于索引。
1、新闻文章的语义搜索
在此示例中,处理204,135个向量,每个向量使用300个维度,远低于一般的768维标准。依据经验法则,一个p1 Pod最多可存储1M个向量,因此单个p1.x1 Pod足以满足需求。
2、面部识别系统
假设为安全银行应用构建一个客户面部识别系统,计划支持1亿客户,每个向量使用2048个维度。根据经验法则,一个p1 Pod可存储1M个768维向量,通过计算得知需要大约267个p1.x1 Pods。若改用s1 Pods,考虑到它们的存储容量是p1.x1的五倍,所需Pod数量可减至约54个s1.x1 Pods。
100M / 1M = 100 base p1 pods 2048 / 768 = 2.667 vector ratio 2.667 * 100 = 267 rounding up
267 / 5 = 54 rounding up