文档管理这件事,几乎每个团队都踩过同样的坑:资料越存越多,找起来越来越难,新人接手要翻半天聊天记录,老员工离职带走一堆隐性经验。传统的网盘加文件夹方案,本质上只是把纸质档案柜搬到了线上,检索靠文件名,理解靠人脑,一旦文档数量上去,整个知识体系就变成了一个只进不出的黑洞。WeKnora 这个项目瞄准的就是这个痛点,它把 RAG、Agent 和自动 Wiki 三套机制拧成一股绳,让静态文档变成能对话、能推理、能自我组织的活知识。我前后花了大概两周时间做本地部署和功能验证,中间踩了不少坑,也摸清了一些门道,这篇文章就把我的完整实践过程拆开来讲,从架构设计到参数调优到故障排查,尽量把每个环节说透。
1. 项目整体设计与核心思路拆解
1.1 为什么是 RAG + Agent + 自动 Wiki 这个组合
先说结论:单独用 RAG 做知识库,能解决"查得到"的问题,但解决不了"理得清"和"用得活"的问题。我试过不少纯 RAG 方案,典型场景是用户问一个跨文档的综合性问题,比如"我们上个季度的技术选型决策里,哪些因素导致了后来的架构调整",纯向量检索会把相关段落拼在一起丢给大模型,但段落之间的逻辑关系、时间线、因果关系全靠模型自己猜,结果经常是答得似是而非。
WeKnora 的思路不一样。它把整个知识处理流程拆成了三层:底层是 RAG 负责语义检索和召回,中间层是 Agent 负责多步推理和工具调用,上层是自动 Wiki 负责把零散知识组织成结构化的页面。这三层不是简单叠加,而是有明确的分工和协作机制。RAG 解决"从海量文档里找到相关片段",Agent 解决"拿到片段后怎么一步步推理出答案",自动 Wiki 解决"这些知识怎么沉淀成可维护的结构"。
这个设计背后的逻辑其实很朴素:人类处理知识也是这么干的。你查资料的时候先翻书找到相关章节(RAG),然后根据章节内容做推理和判断(Agent),最后把结论整理成笔记归档(Wiki)。WeKnora 就是把这套人类认知流程工程化了。
1.2 核心模块的职责边界与协作方式
拆开来看,WeKnora 的几个核心模块各有明确职责。文档解析层负责把 PDF、Word、Markdown、HTML 等各种格式统一转成结构化文本,这一步的质量直接决定了后续所有环节的上限。我实测下来,PDF 解析是最容易出问题的环节,尤其是扫描件和复杂表格,后面会专门讲怎么处理。
切块模块负责把长文档切成适合向量化的片段。这里有个关键参数是 chunk size 和 overlap,WeKnora 默认给的是 512 token 切块、128 token 重叠,但这个默认值不是万能的。技术文档和会议纪要的切块策略应该不一样,前者需要保持代码块的完整性,后者需要保持对话的上下文连贯。
向量化模块调用 embedding 模型把文本转成向量存进向量数据库。WeKnora 支持多种 embedding 模型切换,本地部署的话一般用 BGE 或者 M3E 系列,中文场景下 BGE-large-zh 的效果比较稳。
Agent 模块是整个系统的大脑,它接收用户问题后,会先判断这个问题需要几步推理、需要调用哪些工具(检索、计算、对比等),然后一步步执行。这里涉及到一个重要概念叫 Agentic RAG,就是让 Agent 自主决定检索策略,而不是每次都做一次固定检索。比如用户问"对比 A 方案和 B 方案的优劣",Agent 会分别检索 A 和 B 的相关文档,然后做对比推理,而不是一次性检索" A 方案 B 方案对比"。
自动 Wiki 模块负责把 Agent 推理过程中产生的结论、用户高频查询的问题、文档中的核心概念,自动组织成 Wiki 页面。这个机制的价值在于知识沉淀——每次问答不只是消耗知识,还在生产新的结构化知识。
1.3 与纯 RAG 方案和纯 Agent 方案的差异对比
为了说清楚 WeKnora 的定位,我列了个对比表:
| 维度 | 纯 RAG 方案 | 纯 Agent 方案 | WeKnora 组合方案 |
|---|---|---|---|
| 检索能力 | 单次向量检索 | 依赖 Agent 自主调用 | 多轮自适应检索 |
| 推理能力 | 无,直接拼接 | 强,多步推理 | 强,且检索与推理交织 |
| 知识沉淀 | 无 | 无 | 自动生成 Wiki 页面 |
| 跨文档理解 | 弱,片段拼接 | 中,依赖检索质量 | 强,Agent 主动关联 |
| 部署复杂度 | 低 | 中 | 中高 |
| 适合场景 | 简单问答 | 复杂任务执行 | 企业知识管理 |
这个对比不是说纯 RAG 或纯 Agent 不好,而是说它们各自有适用边界。如果你只是做一个 FAQ 机器人,纯 RAG 足够了;如果你要做自动化任务执行,纯 Agent 更合适;但如果你要做的是企业级知识管理,需要检索、推理、沉淀三件事都做好,那 WeKnora 这种组合方案才是正解。
2. 核心细节解析与实操要点
2.1 文档解析环节的坑与处理策略
文档解析是整条流水线的第一道关卡,也是我最想吐槽的环节。WeKnora 支持 PDF、DOCX、Markdown、HTML、TXT 等格式,但实际用下来,不同格式的解析质量差异巨大。
Markdown 和 TXT 基本没问题,解析出来就是原文。DOCX 也还行,段落和标题层级能保留。真正麻烦的是 PDF,尤其是三类 PDF:扫描件、多栏排版、含复杂表格的文档。
扫描件的问题在于没有文字层,需要走 OCR。WeKnora 本身不内置 OCR 引擎,需要你在部署时额外配置。我的做法是先用外部 OCR 工具把扫描件转成带文字层的 PDF,再喂给 WeKnora。这一步虽然多了一道工序,但比在 WeKnora 内部折腾 OCR 配置要省心得多。
多栏排版的 PDF 解析出来经常是文字顺序错乱,左栏和右栏的内容交错在一起。这个问题的根源是 PDF 本身不存储阅读顺序信息,解析器只能按坐标位置猜。我的经验是,如果文档多栏排版严重,先用 PDF 处理工具做版面分析,把多栏拆成单栏再解析。
复杂表格是最头疼的。WeKnora 默认的表格解析会把表格转成 Markdown 表格,但合并单元格、嵌套表格这些复杂结构经常解析失败。我试过一个办法是在解析前把表格截图,用多模态模型单独处理表格内容,然后把结果作为补充文本插入。这个方案虽然土,但实测效果比硬解析要好。
提示:文档解析质量决定了整个知识库的上限。如果解析出来的文本本身就是乱的,后面再怎么调 RAG 参数都是白搭。建议在正式导入前,先拿几份代表性文档做解析测试,确认解析质量达标再批量导入。
2.2 切块策略的参数选择与调优
切块这件事看起来简单,实际上参数选择直接影响检索效果。WeKnora 暴露了三个关键参数:chunk size、chunk overlap、以及切块分隔符优先级。
chunk size 决定了每个片段包含多少 token。太小了,一个完整概念被切碎,检索出来的是残缺信息;太大了,一个片段里混了多个主题,向量表示不聚焦,检索精度下降。WeKnora 默认 512 token,我的经验是这个值适合大多数场景,但有两类文档需要调整。
技术文档建议调到 768 甚至 1024,因为技术文档里一个完整的函数说明或配置示例往往比较长,切太碎会丢失上下文。会议纪要建议调到 256 到 384,因为会议纪要的每个议题相对独立,切小一点反而能让检索更精准。
chunk overlap 是相邻片段的重叠部分,目的是防止关键信息刚好落在切分边界上被切断。默认 128 token,我一般保持这个值不变。但如果你的文档里有很多长句子或长段落,可以适当加大到 200 左右。
切块分隔符优先级这个参数很多人会忽略,但它其实很重要。WeKnora 默认的分隔符优先级是:段落 > 换行 > 句号 > 逗号。意思是切块时优先在段落边界切,如果段落太长再在换行处切,以此类推。对于结构化文档,这个优先级是合理的。但对于对话记录类的文档,我建议把换行提到段落前面,因为对话记录里段落边界不明显,换行才是真正的语义边界。
2.3 Embedding 模型选型与向量维度考量
Embedding 模型的选择直接决定了检索的语义理解能力。WeKnora 支持多种模型接入,本地部署场景下常用的有 BGE 系列、M3E 系列、以及一些多语言模型。
我实测下来,中文场景下 BGE-large-zh-v1.5 的综合表现最好,检索准确率和召回率都比较均衡。M3E-base 速度更快但精度稍逊,适合对响应速度要求高、文档量不大的场景。如果你的知识库包含大量英文文档,可以考虑 BGE-M3 这种多语言模型,但代价是向量维度更高、存储和检索开销更大。
向量维度这个事值得单独说一下。BGE-large-zh 的输出维度是 1024,M3E-base 是 768。维度越高,向量能表达的语义信息越丰富,但检索时的计算量也越大。对于文档量在十万级以下的场景,1024 维完全没问题。如果文档量到了百万级,可能需要考虑降维或者换用更高效的索引结构。
还有一个容易被忽略的点是 embedding 模型的归一化。有些模型输出的是未归一化的向量,需要手动做 L2 归一化后再存入向量库,否则余弦相似度计算会出问题。WeKnora 在接入模型时会自动处理这一步,但如果你自己替换模型,记得检查这个细节。
2.4 Agent 推理链的设计与工具配置
Agent 模块是 WeKnora 区别于普通 RAG 系统的核心。它的工作流程大致是:接收用户问题 → 分析问题类型 → 制定检索计划 → 执行检索 → 评估检索结果 → 决定是否需要补充检索 → 推理生成答案 → 判断是否需要沉淀为 Wiki。
这个流程里最关键的是"评估检索结果"和"决定是否需要补充检索"这两步。我见过不少 Agentic RAG 的实现,Agent 检索一次就完事,检索结果好不好都直接丢给大模型生成答案,这其实跟普通 RAG 没区别。WeKnora 的 Agent 会对检索结果做相关性评分,如果评分低于阈值,会自动调整检索词重新检索,或者换用不同的检索策略。
工具配置方面,WeKnora 内置了几个基础工具:向量检索、关键词检索、文档摘要、实体抽取。你还可以自定义工具,比如接入计算器做数值计算、接入外部 API 做实时数据查询。我的建议是工具不要贪多,每个工具都要有明确的触发条件,否则 Agent 会在工具选择上浪费大量 token。
注意:Agent 的推理步数需要设置上限,否则遇到复杂问题可能会无限循环。WeKnora 默认最大步数是 10 步,我一般调到 6 到 8 步,既能处理大多数复杂问题,又不至于让响应时间过长。
3. 实操过程与核心环节实现
3.1 本地部署的完整流程
WeKnora 的本地部署我是在 Windows 11 环境下做的,整体流程不算复杂,但有几个环节容易卡住。下面是我整理的完整步骤。
第一步是环境准备。需要 Python 3.10 或以上版本,推荐 3.11。还需要 Docker Desktop,因为向量数据库和一些依赖服务是跑在容器里的。内存建议 32G 起步,如果文档量大或者要用本地大模型,64G 更稳妥。显卡方面,如果只用 API 调用大模型,不需要显卡;如果要本地跑 embedding 模型,一块 8G 显存的卡就够用。
第二步是拉取代码和安装依赖。从官方仓库克隆代码后,创建虚拟环境,安装 requirements.txt 里的依赖。这里有个坑是某些依赖包在 Windows 下需要编译工具链,如果报错说缺少 Visual C++ Build Tools,去微软官网下载安装即可。
第三步是配置环境变量。WeKnora 的配置文件里需要填几个关键项:向量数据库的连接地址和端口、embedding 模型的路径或 API 地址、大模型的 API key 和 base url。我建议把这些配置放在 .env 文件里,不要硬编码在代码中,方便后续切换环境。
第四步是启动服务。先启动 Docker 容器(向量数据库等),再启动 WeKnora 主服务。启动成功后访问本地端口,应该能看到 Web 界面。
第五步是导入文档和测试。先在界面上传几份测试文档,等解析和向量化完成后,试着问几个问题,看看检索和回答质量。
整个流程走下来,顺利的话半天能搞定,但如果遇到依赖冲突或配置错误,可能要折腾一两天。我的建议是严格按照官方文档的版本要求来,不要随意升级或降级依赖包。
3.2 知识库初始化与文档批量导入
知识库初始化这一步,很多人会直接批量导入所有文档,然后发现检索效果不理想。我的做法是分阶段导入。
第一阶段先导入核心文档,比如产品文档、技术架构文档、常见问题汇总,这些文档质量高、结构清晰,适合用来验证整个流水线是否正常。导入后做一轮检索测试,确认解析、切块、向量化、检索、生成这条链路都通了。
第二阶段导入补充文档,比如会议纪要、邮件记录、聊天记录。这类文档噪音大、结构松散,导入后需要观察它们对检索质量的影響。如果发现检索结果被这些低质量文档污染,可以考虑给不同来源的文档打标签,检索时做过滤。
第三阶段做增量导入。WeKnora 支持增量更新,新文档导入后只处理新增部分,不会重建整个索引。这个机制很实用,但要注意增量更新时的去重逻辑,避免同一份文档被重复导入。
批量导入时有个细节要注意:文档的元数据很重要。WeKnora 允许给每份文档打标签,比如来源、作者、时间、部门等。这些标签在检索时可以作为过滤条件,大幅提升检索精度。我一般会至少打三个标签:文档类型、所属项目、更新时间。
3.3 RAG 检索参数的实际调优记录
检索参数调优是我花时间最多的环节。WeKnora 暴露了几个关键参数:top_k、相似度阈值、检索策略权重。
top_k 是每次检索返回的片段数量。默认是 5,我试过 3、5、8、10 几个值。实测下来,对于事实型问题(比如"某个配置项默认值是多少"),top_k 设 3 就够了,多了反而引入噪音。对于综合性问题(比如"某个技术方案的演进过程"),top_k 需要设到 8 到 10,才能覆盖足够的信息。
相似度阈值是过滤低质量检索结果的。默认是 0.5,我调到 0.6 后发现检索精度明显提升,但召回率有所下降。这个值的调整需要根据你的文档质量和问题类型来权衡。如果文档质量高、问题明确,可以调高到 0.65;如果文档噪音大、问题模糊,可以降到 0.55。
检索策略权重是控制向量检索和关键词检索的混合比例。WeKnora 支持混合检索,向量检索擅长语义匹配,关键词检索擅长精确匹配。默认权重是向量 0.7、关键词 0.3。对于技术文档,我建议调到向量 0.6、关键词 0.4,因为技术术语的精确匹配很重要。对于自然语言类文档,保持默认或调到向量 0.8 都可以。
调优过程中我记录了一组对比数据:
| 参数组合 | 事实型问题准确率 | 综合型问题准确率 | 平均响应时间 |
|---|---|---|---|
| top_k=3, 阈值=0.5 | 82% | 61% | 1.2s |
| top_k=5, 阈值=0.5 | 85% | 68% | 1.5s |
| top_k=5, 阈值=0.6 | 88% | 65% | 1.4s |
| top_k=8, 阈值=0.6 | 87% | 76% | 2.1s |
| top_k=10, 阈值=0.55 | 84% | 79% | 2.8s |
最终我选择的配置是:事实型问题走 top_k=5、阈值=0.6 的快速通道,综合型问题走 top_k=8、阈值=0.6 的深度通道。WeKnora 的 Agent 会根据问题类型自动选择通道,这个机制省了不少事。
3.4 自动 Wiki 的生成规则与维护
自动 Wiki 是 WeKnora 最有意思的功能。它的工作方式是:Agent 在回答问题的过程中,如果发现某个概念被频繁提及、或者某个问题被多次问到、或者某段推理产生了新的结论,就会自动生成或更新对应的 Wiki 页面。
我观察下来,自动 Wiki 的生成触发条件主要有三个:高频查询触发、概念关联触发、结论沉淀触发。高频查询触发是指同一个问题被不同用户问了多次,系统会自动把答案整理成 Wiki 页面。概念关联触发是指某个概念在多份文档中反复出现,系统会自动抽取相关片段组织成概念页面。结论沉淀触发是指 Agent 在推理过程中产生了新的对比结论或分析结果,系统会把这些结论归档。
自动 Wiki 的维护需要注意几点。一是要定期审核自动生成的页面,因为 Agent 有时候会生成不准确或冗余的内容。二是要设置好页面的命名规则和分类体系,否则页面多了之后会乱。三是要建立人工编辑和自动生成的协作机制,人工编辑过的页面应该被标记为"已审核",后续自动更新时不要覆盖人工修改的内容。
我实际用下来,自动 Wiki 在项目初期价值最大,因为它能快速把散落的文档知识组织成结构化的页面。但随着知识库成熟,自动生成的页面会越来越多,这时候人工审核和整理的工作量就上来了。我的建议是设置一个页面质量评分机制,低分页面自动归档,高分页面优先展示。
4. 常见问题与排查技巧实录
4.1 解析失败的典型原因与解决方案
WeKnora 解析失败是我遇到最多的问题,原因五花八门,我整理了一个速查表:
| 失败现象 | 可能原因 | 解决方案 |
|---|---|---|
| PDF 解析出来是空白 | 扫描件无文字层 | 先用 OCR 工具处理 |
| 文字顺序错乱 | 多栏排版 | 先做版面分析拆栏 |
| 表格内容丢失 | 复杂表格结构 | 截图后用多模态模型处理 |
| 中文乱码 | 编码格式不匹配 | 转成 UTF-8 再导入 |
| 解析超时 | 文档过大 | 拆分后分批导入 |
| 图片内容丢失 | 纯文本解析模式 | 开启多模态解析 |
除了表里这些,还有一个隐蔽的问题是文档加密。有些 PDF 设置了权限密码,虽然能打开但解析器读不了内容。这种情况需要先用工具去除密码保护再导入。
另一个常见问题是文档版本混乱。同一份文档有多个版本,导入后检索结果里新旧版本混在一起,答案自相矛盾。我的做法是在导入前做版本清理,只保留最新版本,或者在元数据里标注版本号,检索时按版本过滤。
4.2 检索结果不准确的排查思路
检索结果不准确,排查要从后往前推。先看生成答案的环节,是不是大模型理解错了检索内容;再看检索环节,是不是召回的相关片段不够;最后看索引环节,是不是向量化质量有问题。
我遇到过一次典型情况:用户问"某个功能的配置方法",检索出来的都是功能说明文档,但没有具体的配置步骤。排查后发现是切块时把配置步骤和功能说明切到了不同的块里,检索时只召回了功能说明块。解决办法是调整切块策略,把配置步骤和功能说明放在同一个块里,或者给配置步骤单独打标签,检索时优先召回。
还有一种情况是检索结果相关性评分虚高。这通常是因为 embedding 模型对某些领域的语义理解不够,把不相关的文本也打出了高分。解决办法是换用领域适配的 embedding 模型,或者在检索后加一层重排序,用交叉编码器做精细相关性打分。
提示:排查检索问题时,建议把检索到的原始片段和最终生成的答案都打印出来对比。很多时候问题不在生成环节,而在检索环节,但表面上看像是大模型答错了。
4.3 Agent 执行异常的调试方法
Agent 执行异常的表现形式很多,常见的有:推理步数超限、工具调用失败、循环检索、答案不完整。
推理步数超限通常是因为问题太复杂或者检索质量太差,Agent 反复检索都找不到满意结果。解决办法是设置合理的步数上限,同时在达到上限时给用户一个兜底回答,而不是直接报错。
工具调用失败一般是工具配置有问题,比如 API 地址填错、认证信息过期、工具参数格式不对。排查时先把工具单独拿出来测试,确认工具本身能正常工作,再检查 Agent 调用工具时的参数传递。
循环检索是最难排查的,表现为 Agent 反复用相似的检索词检索,每次都得到相似结果,但就是不生成答案。这通常是因为相关性评分阈值设置不合理,Agent 总觉得检索结果不够好,一直重试。解决办法是调整评分阈值,或者给 Agent 加一个"检索次数达到 N 次后必须生成答案"的强制规则。
答案不完整可能是 Agent 提前终止了推理,也可能是生成时 token 限制截断了。前者需要检查 Agent 的终止条件,后者需要调整生成参数里的 max tokens。
4.4 性能优化的实操经验
性能优化主要从三个维度入手:索引速度、检索速度、生成速度。
索引速度的瓶颈通常在 embedding 计算。如果文档量大,embedding 计算会非常耗时。我的做法是用 GPU 加速 embedding 计算,同时把文档分批处理,避免一次性加载太多文档导致内存溢出。另外,embedding 结果可以缓存,同一份文档重复导入时直接复用缓存,不用重新计算。
检索速度的瓶颈在向量数据库的索引结构。WeKnora 默认用的是 HNSW 索引,这个索引在召回率和速度之间平衡得比较好。如果文档量特别大,可以考虑用 IVF 索引,速度更快但召回率稍低。另外,检索时可以先用关键词检索做粗筛,再用向量检索做精排,这样比纯向量检索要快。
生成速度的瓶颈在大模型推理。如果用 API 调用,速度取决于服务商;如果本地部署,速度取决于显卡性能。我的经验是,对于知识库问答场景,不需要用最大的模型,7B 到 13B 的模型在 RAG 场景下表现已经不错,速度还快很多。另外,生成时可以设置流式输出,让用户先看到部分答案,体验更好。
5. 知识框架的长期维护与扩展思路
5.1 知识库的版本管理与更新策略
知识库不是建好就完事了,它需要持续维护。我建议建立一套版本管理机制,每次文档更新都记录变更内容、变更时间、变更人。WeKnora 本身有增量更新功能,但增量更新只处理新增内容,不处理修改和删除。如果一份文档被修改了,需要先删除旧版本再导入新版本,否则新旧内容会同时存在。
更新策略上,我一般分定期更新和触发更新两种。定期更新是每周或每月做一次全量检查,看看有没有过期文档需要清理。触发更新是当有重要文档变更时立即更新,比如产品文档更新、流程变更等。
还有一个容易被忽略的点是知识库的冷启动问题。新建的知识库文档少,检索效果差,Agent 经常找不到相关内容。我的做法是先导入一批高质量的种子文档,把知识库的"底子"打好,再逐步扩充。
5.2 多知识库隔离与权限设计
企业场景下,不同部门、不同项目的知识需要隔离。WeKnora 支持多知识库,每个知识库有独立的文档集合和索引。我一般按项目或部门划分知识库,同时建立一个公共知识库存放跨部门共享的文档。
权限设计上,WeKnora 支持基于角色的访问控制。我建议至少设置三个角色:管理员(可以管理所有知识库和用户)、编辑者(可以导入和修改文档)、查看者(只能查询和浏览)。Agent 在检索时也会遵循权限规则,不会把用户无权访问的内容检索出来。
多知识库场景下还有一个问题是跨库检索。用户的问题可能涉及多个知识库的内容,这时候需要 Agent 能够跨库检索并整合结果。WeKnora 支持配置跨库检索策略,可以设置优先检索哪些库、每个库召回多少片段等。
5.3 与现有系统的集成方式
WeKnora 不是一个孤立的系统,它需要和现有的文档管理系统、OA 系统、IM 工具集成。WeKnora 提供了 API 接口,可以通过 API 做文档导入、查询、Wiki 页面管理等操作。
我实际集成过两种场景。一种是把 WeKnora 的查询接口集成到企业 IM 工具里,用户直接在聊天窗口里提问,后台调用 WeKnora 返回答案。这种场景下要注意响应速度,因为 IM 场景对延迟比较敏感,我一般会设置较短的超时时间,超时后返回一个兜底提示。
另一种是把 WeKnora 的文档导入接口集成到文档管理系统里,文档更新时自动同步到 WeKnora。这种场景下要注意去重和增量更新,避免重复导入和索引膨胀。
集成时还有一个安全考量是 API 认证。WeKnora 的 API 支持 token 认证,建议为每个集成方分配独立的 token,方便权限控制和审计。
5.4 后续扩展方向与个人建议
WeKnora 目前的版本已经能覆盖大多数知识管理场景,但还有一些可以扩展的方向。一是多模态知识处理,目前对图片、音频、视频的支持还比较弱,如果能把这些非文本内容也纳入知识库,覆盖面会更广。二是知识图谱融合,把实体关系抽取出来构建知识图谱,和向量检索结合使用,能提升复杂推理场景的表现。三是主动学习机制,让系统根据用户的反馈自动优化检索策略和切块参数。
我个人在实际操作中的体会是,工具本身只是基础,真正决定知识管理效果的是知识本身的质量和组织方式。再好的 RAG 系统,如果喂进去的是垃圾文档,出来的也是垃圾答案。所以在折腾工具之前,先把文档整理好,把知识结构理清楚,这一步的投入回报比调参要高得多。
另外一个小技巧是,定期做检索效果评估。我一般每个月会抽一批真实用户问题,人工评估检索和回答的准确率,记录下来做趋势分析。这样能及时发现知识库的退化,也能为后续优化提供数据支撑。评估指标不用太复杂,准确率、召回率、响应时间这三个就够了。