AI Agent多租户:一个Agent服务多个客户,数据不串
🩺 摘要
公司A和公司B都用你的Agent服务——A的数据不能让B看到。多租户架构让一个Agent实例安全服务多个客户。
📝 详情
做Agent即服务(Agent as a Service)时最核心的问题:多租户数据隔离。
三种隔离方案
1. 数据库隔离(最简单) 所有客户用同一个Agent,但查询数据时按tenant_id过滤。
def search_knowledge_base(query, tenant_id):
results = vector_store.similarity_search(
query,
filter={"tenant_id": tenant_id} # 只查这个客户的数据
)
2. 向量空间隔离 每个客户独立的向量数据库集合。
3. 完全隔离 每个客户独立的Agent实例。最安全但最贵。
选型建议
| 规模 | 方案 | 成本 |
|---|---|---|
| 10个客户以内 | 完全隔离 | 高 |
| 100个客户 | 数据库隔离 | 中 |
| 1000+客户 | 向量空间隔离 | 低 |
总结
多租户的核心是数据隔离。不管用什么方案,原则是一样的——一个客户永远看不到另一个客户的数据。
数据库隔离最佳实践
class TenantAwareAgent:
def __init__(self, tenant_id):
self.tenant_id = tenant_id
def search_knowledge(self, query):
# 所有查询都带上tenant_id过滤
results = vector_store.similarity_search(
query,
filter={"tenant_id": self.tenant_id}
)
return results
向量数据库的filter功能是关键。Chroma、Qdrant、Pinecone都支持按元数据过滤。不支持的数据库不适合做多租户。
💬 评论 (0)