如何设计一个企业知识库问答系统?

如果让你设计一个企业知识库问答系统,你会怎么设计?
这道题考的是RAG(检索增强生成)技术的完整理解,从检索到生成的全链路设计。面试官想看你能不能把"大模型 + 知识库"这件事讲清楚。
一、先理解RAG——让AI"有据可依"地回答
RAG就是检索增强生成,三个词对应三个动作:先检索,再把结果拼给大模型,最后让大模型生成答案。
为什么要这么做?因为大模型有两个毛病:知识有截止日期、企业私有知识它根本不知道。RAG就是来治这个的——给它接一个"随叫随到的资料员",问什么先查资料,再回答。
整个流程分三步:
第一步,用户提问。用户问"年假怎么计算",系统把这个问句转成向量。
第二步,向量检索。在知识库的几万条文档里,找出跟这个问题最相关的几个片段。
第三步,LLM生成。把检索到的片段和用户问题一起塞给大模型,大模型根据这些真实资料回答。

类比一下:大模型像个"知识面广但容易胡编的学霸",RAG就是给他配的资料员——问啥事先查档案,确认了再开口。
二、检索是核心——选对方式事半功倍
检索方式有三种:关键词检索、语义检索、混合检索。
关键词检索用TF-IDF或者BM25,在文档里找用户问话中的关键词出现次数多的文档。这招对专有名词特别管用——比如查"Q3财报",关键词检索一把就定位到。
语义检索用向量相似度来找。用户说"我领导不批假怎么办",语义检索能理解这是在问请假政策,而关键词检索可能找半天找不着。
两种方式各有利弊。关键词精确但死板,同义词、表达方式一变就抓瞎。语义检索灵活但可能跑偏——用户打错字或者问得太模糊,结果就不太准。
所以混合检索是文本场景的首选方案。把两种方式的得分加权求和,关键词权重和语义权重怎么分配,根据业务场景调。

简单记:关键词像"查字典",语义像"问百度"——前者准但笨,后者灵但可能偏。
三、向量数据库——让检索又快又准
语义检索靠的是向量数据库。文档和问句都转成向量,在向量空间里找"距离最近"的文档。
向量维度是个trade-off。维度越高,语义表达越精细,但存储大、算得慢;维度越低,速度快但精度可能不够。实际用的时候,768维或1024维是比较常见的配置。
重点是索引方式的选择。数据量小的时候,直接暴力遍历所有向量算相似度也行;数据量大了必须上索引。
IVF_FLAT用的是KMeans聚类,把向量分成N个簇,检索时先定位到最近的几个簇,再在簇内精确搜索。就像图书馆先把书按类别分区,你知道要查技术类的,就不用挨个书架翻了。
HNSW是图索引,建一个多层近邻图,从上层粗略定位,一层层往下钻。适合对延迟要求特别高的场景。
选型建议:数据量百万级以下IVF_FLAT够用,要极致低延迟再考虑HNSW。

向量数据库就像图书馆的智能书架——不用一本本翻,喊出关键词就知道去哪几排找。
四、生成答案——Prompt决定上限
检索到的内容质量再好,Prompt写砸了也白搭。Prompt就是给大模型写的"任务卡"。
Prompt设计有几个关键点:
保留Top 3-5条相关文档。太少上下文不够,太多会把模型淹没。取前几条最相关的就够了。
给模型设定身份。比如"你是一个企业HR助手,专门回答员工福利问题"。身份一设定,回答风格和范围就收住了。
明确要求引用来源。加一句"在你的回答中,请引用你参考了哪篇文档",既提高答案可信度,也方便用户溯源。
检索不到时主动声明。加个兜底逻辑——如果检索结果相似度都低于阈值,告诉用户"这个问题超出了我的知识范围,建议联系人工客服"。

Prompt就像给AI写任务卡,写清楚"你是谁、干什么、怎么答",比让他自由发挥强10倍。
五、系统整体架构
整个企业知识库问答系统,数据流是这么走的:
数据准备阶段:先把企业文档做清洗、分块、向量化,存进向量数据库。
检索阶段:用户提问进来,先做混合检索,取Top K相关片段。
生成阶段:把检索结果和Prompt拼在一起,扔给大模型,返回最终答案。

实际落地时还要考虑:知识库怎么更新(增量还是全量)、答案质量怎么评估、bad case怎么收集优化。
面试怎么答
基础版(能讲清楚就能过):
我会用RAG架构来做企业知识库问答。流程分三步:先把企业文档向量化存到向量数据库;用户提问时做混合检索,兼顾关键词精准度和语义理解能力;最后把检索到的相关片段和用户问题拼给大模型生成答案。检索这块一般用混合检索,关键词检索保准确、语义检索保理解能力。Prompt要设定角色身份、要求引用来源、做好兜底。
加分版(能拉开差距):
在基础方案上,我会针对检索做权重调优——FAQ类用关键词权重高,长文档问答用语义权重高。向量索引选型上,百万级数据用IVF_FLAT,更大规模的场景考虑HNSW。另外,知识库要设计增量更新机制,新文档入库后实时向量化。还有个细节:检索结果去重和重排序,用MMR算法避免答案太重复。
一句话总结
企业知识库问答系统的核心是RAG三步走——检索相关片段、拼入上下文、让大模型有据可依地回答,选对检索方式和向量索引是成败关键。
