Pinecone Index 索引管理
索引是 Pinecone 的最高层容器。与传统的表不同,Pinecone 的索引决定了底层硬件的分配方式。
1. 索引类型:Serverless vs Pod-based
Serverless (推荐)
- 按量计费:只需为存储和读取的数据量付费。
- 自动扩容:无需关心底层资源。
- 场景:绝大多数现代 AI 应用。
Pod-based (传统模式)
- 固定成本:你购买特定的虚拟机资源。
- 可预测延迟:适合对性能有极高且稳定要求的场景。
这里有个很关键的时效性变化:
Pinecone 官方当前文档写得很清楚,2025-08-18 之后注册的 Standard 或 Enterprise 新客户已经不能再创建 pod-based indexes。默认主线就是 serverless。
2. 核心配置参数
在创建索引时,以下三个参数至关重要:
- Dimension (维度):向量的长度。必须与你的 Embedding 模型产出一致(如 OpenAI 是 1536)。
- Metric (度量标准):
cosine(余弦相似度): 推荐用于 NLP。euclidean(欧氏距离)。dotproduct(点积)。
- Spec (规格):定义部署的云平台和地域。
另外,当前官方还支持创建 integrated embedding index。
这种场景下,除了 dimension / metric,还要考虑:
embed.modelembed.field_map
这会直接影响你是“自己嵌入再写入”,还是“直接 upsert source text”。
3. 索引的生命周期操作
# 列出所有索引
print(pc.list_indexes())
# 查看索引详细状态
desc = pc.describe_index("my-index")
print(desc.status['ready']) # 是否已就绪
# 配置索引
pc.configure_index("my-index", deletion_protection="enabled")
# 删除索引 (数据会立即清空且不可恢复)
pc.delete_index("my-index")
4. 统计信息查看
你可以查看索引中有多少向量,以及各个命名空间的数据分布:
index = pc.Index("my-index")
stats = index.describe_index_stats()
print(stats.total_vector_count)
5. 最佳实践
- 同地域部署:尽可能让你的应用程序(如 Lambda 或 EC2)与 Pinecone 索引处于同一个云服务商地域(如均为
aws/us-east-1),以降低网络延迟。 - 合理使用元数据:不要在元数据中存储超大的文本块,这会增加索引的大小和查询成本。只存储 ID、URL 或关键过滤字段。
- 提前规划 metadata schema:Pinecone 当前已经支持预声明哪些字段要被索引用于过滤,这对生产系统很有帮助。
下一步:学习如何通过 Namespaces 命名空间 实现多租户或多类别管理。