索引是Pinecone中向量数据的最高级组织单位,负责接收和存储向量数据,提供查询服务,并执行其他针对包含的向量的操作。本教程介绍了与Pinecone索引相关的概念。
一、Pods、Pod类型及大小
Pods是预先配置的硬件单元,用于运行Pinecone服务。一个索引可以运行在一个或多个Pods上。通常,Pods数量越多,意味着更大的存储容量、更低的延迟和更高的吞吐量。还可以根据需求创建不同大小的Pods。
一旦使用特定的Pod类型创建了索引,将无法更改该索引的Pod类型。但是,可以从现有的集合中使用不同的Pod类型来创建新的索引。
入门计划
在入门计划中,可以创建一个Pod,其资源足以支持大约100,000个具有1536维嵌入和元数据的向量;对于其他维度,其容量会相应增加。使用入门计划时,所有create_index调用都将忽略pod_type参数。
S1 Pods
这些Pods优化了存储,提供了大容量存储和较低的总体成本,但其查询延迟略高于P1 Pods。它们非常适合有中等或宽松延迟需求的非常大的索引。每个S1 Pod能够存储约500万个768维向量。
P1 Pods
这些性能优化的Pods提供非常低的查询延迟,但每个Pod能存储的向量数量少于S1 Pods。它们非常适合对延迟要求低于100ms的应用。每个P1 Pod能够存储约100万个768维向量。
P2 Pods
P2 Pod类型提供更高的查询吞吐量和更低的延迟。对于小于128维的向量和TopK小于50的查询,P2 Pods每个副本支持高达200 QPS,并能在小于10ms的时间内返回查询结果。这意味着在查询吞吐量和延迟方面,它们比S1和P1表现得更好。每个P2 Pod的容量约为100万个768维向量,但容量可能因维度而异。
值得注意的是,P2 Pods的数据摄取速率明显慢于P1 Pods;随着维度数量的增加,这种速率会进一步降低。例如,处理128维向量的P2 Pod每秒可插入高达300个更新,而处理768维或更多向量的P2 Pod仅支持每秒插入50个更新。由于P2 Pods的查询延迟和吞吐量与P1 Pods有所不同,因此建议使用数据集测试P2 Pods的性能。P2 Pod类型不支持稀疏向量值。
二、Pod大小与性能
Pod的性能受多种因素影响。为了评估工作负载在特定Pod类型上的表现,建议使用自己的数据集进行实验。
每种Pod类型都支持四种尺寸:x1、x2、x4和x8。每次尺寸增加,索引的存储和计算容量都会翻倍。默认Pod尺寸为x1。可以在创建索引后调整Pod的大小。
三、距离度量方法
在创建向量索引时,可以选择不同的度量方法:
Euclidean
Euclidean用于计算平面上两点之间的距离,是最常使用的距离度量之一。当使用metric=’euclidean’时,最相似的结果是得分最低的结果。
Cosine
Cosine常用于确定不同文档之间的相似度,其优势在于得分被归一化到[-1,1]范围内。
Dotproduct
Dotproduct用于计算两个向量的数量积,以指示两向量在方向上的接近程度。得分越正,表示两个向量的方向越一致。