logo
Pinecone 向量数据库指南
AI Engineer

Pinecone 向量数据库指南

Pinecone 是云端托管的向量数据库服务,提供高性能、可扩展的向量存储和检索。

Pinecone 向量数据库指南Namespaces

Pinecone Namespaces (命名空间)

命名空间是 Pinecone 索引内部的一种逻辑隔离机制。它允许你在同一个索引中存储多组互不干扰的数据。

#1. 为什么使用命名空间?

  • 多租户 (Multi-tenancy):如果你的应用有多个用户,你可以为每个用户创建一个命名空间(user_id),确保搜索时用户只能看到自己的数据。
  • 数据分类:在同一个索引中区分“新闻”、“技术博客”、“内部文档”等不同类别。
  • 提高查询效率:查询特定命名空间时,Pinecone 只会扫描该空间内的数据,速度更快。

#2. 使用方法

#插入数据时指定

python
index.upsert( vectors=[...], namespace="user-123" )

#查询时指定

python
results = index.query( vector=[...], top_k=5, namespace="user-123" )

#3. 命名空间的管理特性

  • 默认命名空间:如果你不指定 namespace 参数,Pinecone 会使用默认的空字符串("")命名空间。
  • 动态创建:你不需要预先定义命名空间。只要在 upsert 时指定一个新名字,它就会被自动创建。
  • 批量删除:你可以一键删除整个命名空间内的所有数据。
    python
    index.delete(delete_all=True, namespace="user-123")

#4. 命名空间与过滤 (Namespace vs Metadata Filter)

维度命名空间 (Namespace)元数据过滤 (Metadata Filter)
性能极高性能(物理隔离感)较高(在大规模索引中可能略慢)
灵活性一个向量只能属于一个空间一个向量可以有多个元数据标签
管理支持一键清空需要按条件删除

建议:对于硬隔离需求(如用户数据隔离),优先使用 Namespace。对于软分类需求(如给文档打标签),使用 Metadata Filter

#5. 局限性

  • 无法跨命名空间进行一次性查询。如果你需要搜索“所有用户”的内容,你需要查询多次或将数据存入一个统一的空间。

总结:命名空间是构建安全、可扩展的多用户 AI 应用的基石。在设计 RAG 系统之初,就应该考虑好命名空间的划分逻辑。

相关路线图