AI Agent多租户:一个Agent服务多个客户,数据不串

📘 AI教程 💬 🔥 Trending

🩺 摘要

公司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都支持按元数据过滤。不支持的数据库不适合做多租户。