知识库如何构建?

考查重点:知识入库、更新与可用性验证。从可信资料接入,解析清洗切分并保留来源权限,构建索引;增量更新后用带证据的问题集检验可用性

本题目录

参考答案

核心回答

构建知识库,是把业务资料变成可检索、可追溯、能持续更新且按权限使用的知识资产。我会按五步设计:

  1. 确定知识范围与来源:从用户要解决的问题出发,接入可信的制度、手册、FAQ 等材料,明确负责人、版本和更新方式。
  2. 解析、清洗和切分:按文件类型提取内容,保留标题、表格与原文位置;抽样检查解析质量,再按语义结构和长度预算切块。
  3. 保存正文、元数据并建索引:每块关联文档、版本、位置和权限,生成向量,并按需要建立全文索引。向量帮助召回,正文和元数据支撑回答、引用与维护。
  4. 处理新增、修改、删除和撤权:跟踪处理状态,失败可重试;新版本验证后再启用,旧内容及相关缓存及时失效。
  5. 用真实问题验收:检查证据能否召回、引用是否正确、答案是否忠实,以及无答案和无权限时的行为,同时看耗时和更新延迟。

例如搭建运维知识库,不只是把 PDF 丢进向量库;还要确认故障处理步骤有没有被拆散、旧版操作是否已停用,以及当前用户能否访问对应系统的资料。

展开说明

1. 先明确要收什么,而不是先选择向量库

先整理用户常问的问题和可接受的回答依据,确定资料来源、适用业务和更新责任人。优先接入经过维护的原始文档,避免把重复转载、草稿和已废止制度混成同等有效的知识。业务知识的编写宜保留明确的问题、结论、适用条件和例外,不能为了便于检索删掉限定条件。

采集方式可以是人工上传、业务系统连接器或定时同步。上传后可提交异步入库任务,分别记录已接收、解析中、索引中、可用和失败等状态;文件上传成功不代表已经能够检索。原始文件应保留,便于重新解析和核对引用。已有可靠的文档或业务查询系统时,也可以通过接口连接,不必复制一份再全部向量化。

2. Markdown、TXT、PDF 不能只用同一个切分规则

Markdown 可以先按标题层级组织段落,保留标题路径,表格和代码围栏尽量保持完整;过长章节再按长度预算递归拆分。TXT 通常缺少显式结构,可以结合段落、中文句末标点和长度限制切分,并记录位置。

PDF 则先区分可直接提取文本的文件与扫描件。需要检查阅读顺序、双栏、页眉页脚、表格和跨页内容;扫描件可能需要 OCR,复杂版面需要相应解析器。解析错了不能靠调大切块长度修好。表格应保留表头、单位及所属章节,避免只召回一个数字却不知道它对应什么。

切块目标是让片段足以支持常见问题,同时不过度混入无关主题。大小要注明按字符还是 Token 计算,适度重叠可以缓解边界截断;并非所有块都需要重叠,也不是越多越好。对于必须阅读较完整段落的问题,可以用小块召回,再补同一文档、同一版本且有权限的父段或邻块。

3. 存储设计要支持引用和维护

我会区分原始文件、文档记录和知识块。文档记录保存来源、标题、业务归属、活动版本、处理状态和访问规则;块记录保存 doc_id、chunk_id、正文、版本、标题路径、页码或行号,以及内容哈希和索引配置版本。向量与全文索引都应能关联回这些记录,不要求它们一定放在不同数据库。

索引端和查询端要使用兼容的 Embedding 空间,不能只看维度相同就混用不同模型。若业务中存在精确术语、编号或错误码,可以在向量召回之外加入全文检索;是否需要混合检索和重排,应由问题集验证。

权限来自可信的身份与业务授权系统。检索、重排、父段展开和答案缓存都要保持相应范围,未授权正文不能先交给模型再靠提示词隐藏。文档权限存入索引以后还需随源系统变化同步,不能把入库时的 ACL 永久当作当前权限。

4. 更新要让各份数据保持一致

以一份操作手册修改为例,可以根据源版本或内容哈希发现变化,为新版本重新解析、切块和建索引。新版本准备期间不参与在线回答,校验正文、块和索引后再切换活动版本,旧版按保留策略停用或清理。若多个存储系统参与,必须明确切换和失败补偿方式,不能假定它们天然处于同一个事务中。

重复处理同一版本不应生成重复块;过期更新也不能覆盖较新版本。删除资料时,正文、向量、全文索引和相关缓存都要处理。撤销访问权限则应尽快使相关内容不可见,不必为了仅修改 ACL 就重新计算所有向量,但必须验证实际检索和缓存已遵循新权限。

日常变化可增量处理;更换 Embedding 模型、解析或切分方案时,要评估哪些内容需要重建。重建结果验证后再切换,保留必要的回滚信息,而不是直接覆盖正在服务的索引。

5. 验收要从原文一直查到答案

先抽样对照原文件和解析结果,检查表格、数字、否定词和限定条件;再建立包含标准证据位置的问题集,检查证据 Recall@K、重复候选和引用定位。最后评估答案是否忠实、是否漏掉条件,无资料或资料冲突时能否明确说明。

还应验证修改后不再引用旧版、删除后不再召回、不同权限用户得到的内容符合范围。性能则分别看入库耗时、资料变更到可查询的延迟,以及查询的平均和 P95 耗时;不能只用“成功写入多少向量”代表知识库质量。

常见追问

用 RAGFlow 或 Dify 后,还做了什么?

可以围绕实际负责的环节展开:资料怎样接入,复杂 PDF 怎样解析,切分规则如何确定,权限和版本怎样映射,以及文档更新后如何触发处理。再举一个具体问题,例如表格解析错位导致召回缺少单位,说明自己怎样调整解析配置、核对知识块并通过问题集验证改进。平台提供基础能力,项目工作的价值体现在把它接入业务并持续维护好。

知识库要保存模型生成的回答吗?

可以作为待整理材料,但不能自动当成经过验证的事实。应核对来源、适用条件和时效,确认后作为新版本知识发布;原始证据及其引用仍需保留,避免错误答案循环进入知识库。

文档改了一个标点,也需要全部重新向量化吗?

不一定。可以通过版本和内容比较判断受影响的文档或块;未变化且配置兼容的块可复用。若改动影响标题路径、切分边界或上下文,则可能需要重处理更大范围。关键是更新后引用与当前正文一致,不能只追求少算几个向量。

对应教程

  • RAG 检索增强生成:回看文档加载、切分和综合案例,理解资料怎样进入检索;本文进一步展开版本、权限、更新和入库验收的设计。

参考资料

相关面经

16 篇

科大讯飞

后端开发
秋招一面、二面、三面
查看原面经 →
AI-ready 项目知识库:是否 0-1 搭建,多类型文档处理、入库与质量保障方案

滴滴

大模型算法岗
查看原面经 →
为什么在推荐系统中引入RAG?知识库的数据来源和构建流程是怎样的?

快手

Agent 开发工程师
二面
查看原面经 →
如果要为 Agent 建设知识库,你会怎样处理数据接入、切分、检索、更新和效果评估?

快手

AI全栈开发
实习一面、二面
查看原面经 →
知识库怎么做的

字节跳动

后端开发工程师
秋招二面
查看原面经 →
如何搭建知识库
展开剩余 11 篇面经

字节跳动

Agent 开发工程师
一面、二面
查看原面经 →
拿到一批格式杂乱、缺少统一结构的外部文档,怎么把它们整理成可检索的知识?从

科大讯飞

测试开发
二面
查看原面经 →
做知识库的思路

字节跳动

Agent 开发后端实习生
日常实习一面
查看原面经 →
知识库如何构建?Markdown、TXT、PDF 分别怎么切块?

蚂蚁集团

面经合集
查看原面经 →
项目追问
项目背后的知识库是怎么构建的?
追问
知识库是怎么采集的?怎么更新的?
追问
请设计这套知识库系统的框架。

美团

后端开发工程师(AI / Agent 方向)
秋招一面
查看原面经 →
提到了有设计大模型和agent,这部分是怎么设计的,知识是如何编写的,如何存储。以及怎么检验agent回答的质量

阿里巴巴

AI 全栈开发工程师
一面
查看原面经 →
上传文档以后到检索之前,应该有一个切分或者向量的过程,这个过程是上传后自动触发的?是基于 Dify 的 RAG flow 做了二开?

汇川技术

全栈开发
秋招一面
查看原面经 →
项目追问
在xxx构建运维知识库,大概说一下你是怎么做的;

超参数

Agent 开发工程师
社招一面
查看原面经 →
知识库方案

阿里巴巴

AI 应用算法工程师
实习
查看原面经 →
知识库如何构建?

阿里巴巴

AI 应用开发工程师
二面
查看原面经 →
如何搭建知识库的,你们做了哪些操作来优化性能

联想

AI 产品经理
查看原面经 →
如何搭建RAG知识库

收录题集

5 个来源,共7 份题集

阿里巴巴问答汇编

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

AI 超级智能体项目面试题

编程导航 · 个人整理 · 1 条原题

查看题集 →

AI 智能体与大模型应用开发面试题库

didilili · ai-agents-from-zero · 1 条原题

查看题集 →

检索与知识工程问答

Guide · JavaGuide · 1 条原题

查看题集 →

RAG 面试题

Guide · JavaGuide · 1 条原题

查看题集 →
展开剩余 2 份题集

简历项目拷打:面试官追着你的 Agent 项目问到底

Onefly · zero2Agent · 1 条原题

查看题集 →

RAG 与检索系统:从 chunk 设计到多路召回

Onefly · zero2Agent · 1 条原题

查看题集 →

相关题目

4 题