Pinecone 是面向生产级 AI 应用的托管式无服务器向量数据库。本技能文档用于指导通过 Pinecone 的 Python 客户端以及 LangChain、LlamaIndex 集成来使用它。
一、适用场景 当出现以下需求时可考虑使用 Pinecone:需要托管、无服务器的向量数据库;构建生产级 RAG 应用;需要自动扩展;对低延迟有严格要求(<100ms);不想自行管理基础设施;需要混合搜索(稠密 + 稀疏向量)。
其指标为:完全托管的 SaaS;可自动扩展至数十亿向量;p95 延迟 <100ms;99.9% 可用性 SLA。
文档同时给出替代方案:Chroma(自托管、开源)、FAISS(离线、纯相似度搜索)、Weaviate(自托管、功能更多)。
二、快速开始 安装命令:pip install pinecone-client
基本用法示例(保留原始代码): from pinecone import Pinecone, ServerlessSpec
Initialize
pc = Pinecone(api_key="your-api-key")
Create index
pc.create_index( name="my-index", dimension=1536, # Must match embedding dimension metric="cosine", # or "euclidean", "dotproduct" spec=ServerlessSpec(cloud="aws", region="us-east-1") )
Connect to index
index = pc.Index("my-index")
Upsert vectors
index.upsert(vectors=[ {"id": "vec1", "values": [0.1, 0.2, ...], "metadata": {"category": "A"}}, {"id": "vec2", "values": [0.3, 0.4, ...], "metadata": {"category": "B"}} ])
Query
results = index.query( vector=[0.1, 0.2, ...], top_k=5, include_metadata=True )
print(results["matches"])
三、核心操作
-
创建索引:支持 Serverless(推荐)与 Pod-based(用于稳定性能)两种方式。Serverless 可指定 cloud(aws、gcp、azure)与 region;Pod-based 需从 pinecone 导入 PodSpec,指定 environment 与 pod_type。
-
写入向量(Upsert):支持单条写入与批量写入(推荐),批量时使用 batch_size 参数(示例为 100)。每条向量包含 id、values(1536 维)与 metadata(如 text、category、timestamp)。
-
查询向量:支持基本查询(top_k、include_metadata、include_values)、带元数据过滤的查询、按命名空间查询。结果通过 results["matches"] 访问,包含 id、score、metadata。
-
元数据过滤:支持精确匹配、比较运算符($gt、$gte、$lt、$lte、$ne)、逻辑运算符($and、$or)以及 $in 运算符。
-
命名空间:可按命名空间分区数据(如 user-123),查询时指定命名空间,并通过 describe_index_stats 列出命名空间。
-
混合搜索(稠密 + 稀疏):写入时可同时提供 values(稠密向量)与 sparse_values(indices 为 token ID,values 为 TF-IDF 分数);查询时提供 vector 与 sparse_vector,并用 alpha 控制权重(0=稀疏,1=稠密,0.5=混合)。
四、框架集成
-
LangChain:从 langchain_pinecone 导入 PineconeVectorStore,配合 OpenAIEmbeddings,可用 from_documents 创建向量存储,支持 similarity_search(含 filter)以及 as_retriever。
-
LlamaIndex:从 llama_index.vector_stores.pinecone 导入 PineconeVectorStore,连接 Pinecone 索引后创建向量存储,再配合 StorageContext 与 VectorStoreIndex 使用。
五、索引与向量管理 索引管理:list_indexes、describe_index、describe_index_stats(可查看 total_vector_count 与 namespaces)、delete_index。 向量删除:按 ID 删除、按过滤条件删除、删除命名空间内全部(delete_all=True 加 namespace)、删除整个索引(delete_all=True)。
六、最佳实践 使用 serverless(自动扩展、成本效益高);批量 upsert(每批 100-200 更高效);添加元数据以支持过滤;使用命名空间按用户/租户隔离数据;监控用量(查看 Pinecone 控制台);优化过滤(为频繁过滤字段建索引);用免费层测试(1 个索引、10 万向量免费);使用混合搜索以获得更好质量;设置合适的维度(与嵌入模型匹配);定期备份重要数据。
七、性能 写入(Upsert):约 50-100ms(每批);查询 p50:约 50ms(取决于索引大小);查询 p95:约 100ms(SLA 目标);元数据过滤:额外约 10-20ms 开销。
八、定价(截至 2025 年) Serverless:每百万读单元 $0.096;每百万写单元 $0.06;每 GB 存储每月 $0.06。免费层:1 个 serverless 索引、10 万向量(1536 维),适合原型验证。
九、资源 网站:https://www.pinecone.io 文档:https://docs.pinecone.io 控制台:https://app.pinecone.io 定价:https://www.pinecone.io/pricing
十、智能体操作流程
- 检查环境:确认语料、嵌入模型与向量存储版本,以及索引所在位置。
- 明确输入:从数据或用户处确认格式、标识符与参数;对任何会改变结果的取值应询问而非猜测。
- 先运行小规模版本:索引一小部分子集,并在已知问答对上测试检索。
- 使用上述说明与参考执行完整任务。
- 验证结果:在标注集上测量 recall@k;答案仅引用检索到的段落。
- 报告:说明运行了什么(版本、命令、参数)、检查了什么、还有哪些不确定。
异常处理:若检索返回不相关片段,先检查分块、加入 BM25/混合搜索或重排序,再考虑更换生成器;若说明中的函数、标志或端点在当前安装版本中缺失,应查阅已安装版本自身的文档(help()、--help、官方文档)并告知用户,绝不臆造 API;若必需输入、标识符或参数不明确,应询问用户或在运行前明确说明假设。
十一、完整性规则 绝不捏造结果、参数、标识符、引用或统计数据;若无法运行或验证,应如实说明。答案必须来自检索到的文本;当语料不包含答案时应说明。此处版本相关细节可能已过时,应针对已安装版本的官方文档进行确认。在涉及花钱、占用共享 GPU 或云配额、触碰个人或患者数据、或不可撤销的操作前,应先征得同意。
十二、相关技能 faiss:Facebook 用于高效相似度搜索与稠密向量聚类的库。 qdrant-vector-search:用于 RAG 与语义搜索的高性能向量相似度搜索引擎。 chroma:面向 AI 应用的开源嵌入数据库。