如何设计一个支持多租户和多知识库的 AI 问答平台?
如何设计一个支持多租户和多知识库的 AI 问答平台?

这道题考的是多租户隔离体系设计、存储模型选择、RAG架构实现和计费计量体系。本质是让你设计一个能服务多个客户、每个客户有独立知识库、还能算清楚账的平台。这类题目在B2B AI产品面试中非常常见,比如企业级问答机器人、客服系统、知识库搜索都会涉及。
板块1:多租户隔离体系——像公寓楼的物业管理系统
想象你管理一栋公寓楼,里面住着很多租户(公司),每家公司有自己的员工(用户)、自己的办公用品(数据)、自己的账单。多租户系统的核心就是:让租户感觉自己在用独立系统,但底层其实是共享基础设施。
隔离要从三个维度来做:
权限隔离——用RBAC模型扩展,加入tenant_id字段。每个角色不仅关联权限,还关联到具体租户。员工A是A公司的管理员,员工B是B公司的普通用户,他们的操作权限完全不同。
数据隔离——这是最关键的。所有数据表都带tenant_id字段,查询时必须强制携带。比如一个用户查知识库,系统自动加上WHERE tenant_id = 'A公司',确保他永远看不到B公司的内容。
计费隔离——每个租户独立核算用量。用了多少Token、调用多少次、创建多少文档,都按租户维度汇总,出独立账单。
有个重要原则:身份信息必须贯穿整个请求链路。从用户登录那一刻,系统就要记住他属于哪个租户,这个信息一路传到数据库层。不能在中途"重置"或"遗忘",否则就会产生数据泄露漏洞。

板块2:存储隔离模型——买房还是租房?
存储模型决定了你怎么给租户分配物理资源。这里有两种典型思路:
方案一:每租户独立存储
每个租户有自己独立的数据库实例或存储空间。这种方式隔离性最强,一个租户出问题不影响其他人。但管理成本高——你要维护几十上百套独立的存储系统。
适合场景:数据量大、对隔离性要求极高、租户数量相对少(比如大型企业客户)。
方案二:多租户共享存储
所有租户共用一套存储,通过tenant_id字段在逻辑上隔离。管理成本低,但要做严格的访问控制,确保数据不会串门。
适合场景:租户数量多、单租户数据量不大、追求资源利用率。
你可能发现这是个经典的trade-off——隔离性强则成本高,成本低则管理复杂。实际项目中,B2B大客户通常倾向独立存储,SaaS小客户多用共享模式。面试时不要说死哪种好,要说"根据租户规模、预算、安全要求来选择"。
核心底线是:数据隔离是不可妥协的安全红线。不管选哪种模型,应用层的tenant_id过滤必须严格做到位。

板块3:知识库检索与RAG架构——精准找到答案的流水线
多租户+RAG是这道题的核心考点。RAG(检索增强生成)让AI回答问题时先去知识库找相关资料,再结合资料生成答案。多租户场景下,RAG要解决的关键问题是:只检索当前租户有权访问的内容。
完整流程是这样的:
用户发起查询 → 系统识别当前租户 → 只在当前租户的知识库里检索 → 把检索到的内容作为上下文喂给LLM → LLM生成答案
这里有个细节:检索时必须强制携带tenant_id条件。比如用户问"我们的退货政策是什么",系统在知识库里搜相关文档时,要加上WHERE tenant_id = '当前租户' AND 内容包含'退货政策'。不能存在"租户A的用户偶然搜到租户B的文档"这种漏洞。
另一个容易忽略的点:Prompt模板和应用配置也是租户级别的资源。每家公司可能有自己的问答风格、术语定义、业务流程,这些Prompt模板存在数据库里,也要有tenant_id字段。这样A公司用自己的"专业客服风格",B公司用自己的"亲切朋友风格"。
有个值得关注的行业趋势:微软Azure的On Your Data功能在某些场景下被停用,用户被迁移到Azure AI Search。这背后反映的是企业级客户对数据隔离的严格要求。如果你在面试中提到这个案例,面试官会觉得你对行业动态有了解。

板块4:计费与计量体系——让每个租户清楚自己的账单
B2B平台必须能算清楚账。每个租户用了多少资源、花了多少钱,要能追溯到每个维度。
四级计量维度:
第一层是租户级汇总——给客户出月账单,告诉他这个月总共花了多少。
第二层是应用级拆分——一个大客户可能有多个AI应用,比如客服机器人、培训问答、内部知识库。每个应用的消耗要单独统计,方便客户了解资源分配。
第三层是模型级成本——不同LLM模型价格差异很大。GPT-4贵但能力强,GPT-3.5便宜但效果一般。客户需要知道自己用了多少GPT-4、多少GPT-3.5,分别花了多少钱。
第四层是用户级统计——大客户内部可能有多个部门、多个员工在使用。追踪到个人级别的用量,帮助客户做内部成本分摊。
计费模式选择:
按Token计费适合用量稳定的企业客户,可预测成本。
按调用次数计费适合输入输出差异大的场景。
套餐+超额是主流做法——给一个基础配额,用超了按量付费。
还有个关键细节:API Key必须绑定租户ID。每个客户拿到自己的Key,通过Key就能知道是谁在调用。API Key丢了可以禁用,调用异常可以追查。

面试怎么答
基础版(能过的回答):
这道题的核心是设计一个能服务多租户、每个租户有独立知识库的AI问答系统。我从四个维度来设计:
第一,多租户隔离。从权限、数据、计费三个维度做隔离。权限用RBAC+tenant_id,数据用行级tenant_id过滤,计费独立核算。
第二,存储模型选择。数据量大、租户少用独立存储;租户多、数据量小用共享存储加元数据隔离。安全底线是tenant_id过滤必须严格执行。
第三,RAG检索隔离。检索时强制携带tenant_id条件,确保用户只能搜到本公司知识库的内容。Prompt模板也要按租户隔离。
第四,计费体系。四级计量:租户级汇总、应用级拆分、模型级成本、用户级统计。按Token或按调用次数计费都可以。
加分版(让面试官眼前一亮):
除了基本设计,我想强调一个原则:身份信息必须贯穿整个请求链路。从用户登录到数据存储,tenant_id不能中途丢失或重置,这是防止数据泄露的关键。
另外,存储模型选择要看业务场景。B2B大客户通常要求独立存储,满足合规要求;SaaS小客户多用共享模式,控制成本。
RAG架构里,检索时的租户过滤要做得更细致。向量数据库可以按租户建立独立索引,也可以在元数据里加tenant_id过滤。前者检索效率高但管理复杂,后者实现简单但大数据量下性能可能下降,需要权衡。
计费体系还要考虑API Key的管理。Key绑定租户ID,支持禁用和追溯,这对企业客户的安全管控很重要。

一句话总结
设计多租户AI问答平台的核心是:在共享基础设施上实现严格的租户隔离,通过tenant_id贯穿整个数据链路,配合RAG检索隔离和四级计量体系,让每个租户感觉拥有独立系统,同时平台能高效管理和计费。
