SuperAPI AI 工具集

pinecone

数据与分析

查看项目

更新于 10-21 16:18

技能介绍

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"])

三、核心操作

  1. 创建索引:支持 Serverless(推荐)与 Pod-based(用于稳定性能)两种方式。Serverless 可指定 cloud(aws、gcp、azure)与 region;Pod-based 需从 pinecone 导入 PodSpec,指定 environment 与 pod_type。

  2. 写入向量(Upsert):支持单条写入与批量写入(推荐),批量时使用 batch_size 参数(示例为 100)。每条向量包含 id、values(1536 维)与 metadata(如 text、category、timestamp)。

  3. 查询向量:支持基本查询(top_k、include_metadata、include_values)、带元数据过滤的查询、按命名空间查询。结果通过 results["matches"] 访问,包含 id、score、metadata。

  4. 元数据过滤:支持精确匹配、比较运算符($gt、$gte、$lt、$lte、$ne)、逻辑运算符($and、$or)以及 $in 运算符。

  5. 命名空间:可按命名空间分区数据(如 user-123),查询时指定命名空间,并通过 describe_index_stats 列出命名空间。

  6. 混合搜索(稠密 + 稀疏):写入时可同时提供 values(稠密向量)与 sparse_values(indices 为 token ID,values 为 TF-IDF 分数);查询时提供 vector 与 sparse_vector,并用 alpha 控制权重(0=稀疏,1=稠密,0.5=混合)。

四、框架集成

  1. LangChain:从 langchain_pinecone 导入 PineconeVectorStore,配合 OpenAIEmbeddings,可用 from_documents 创建向量存储,支持 similarity_search(含 filter)以及 as_retriever。

  2. 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

十、智能体操作流程

  1. 检查环境:确认语料、嵌入模型与向量存储版本,以及索引所在位置。
  2. 明确输入:从数据或用户处确认格式、标识符与参数;对任何会改变结果的取值应询问而非猜测。
  3. 先运行小规模版本:索引一小部分子集,并在已知问答对上测试检索。
  4. 使用上述说明与参考执行完整任务。
  5. 验证结果:在标注集上测量 recall@k;答案仅引用检索到的段落。
  6. 报告:说明运行了什么(版本、命令、参数)、检查了什么、还有哪些不确定。

异常处理:若检索返回不相关片段,先检查分块、加入 BM25/混合搜索或重排序,再考虑更换生成器;若说明中的函数、标志或端点在当前安装版本中缺失,应查阅已安装版本自身的文档(help()、--help、官方文档)并告知用户,绝不臆造 API;若必需输入、标识符或参数不明确,应询问用户或在运行前明确说明假设。

十一、完整性规则 绝不捏造结果、参数、标识符、引用或统计数据;若无法运行或验证,应如实说明。答案必须来自检索到的文本;当语料不包含答案时应说明。此处版本相关细节可能已过时,应针对已安装版本的官方文档进行确认。在涉及花钱、占用共享 GPU 或云配额、触碰个人或患者数据、或不可撤销的操作前,应先征得同意。

十二、相关技能 faiss:Facebook 用于高效相似度搜索与稠密向量聚类的库。 qdrant-vector-search:用于 RAG 与语义搜索的高性能向量相似度搜索引擎。 chroma:面向 AI 应用的开源嵌入数据库。