
很多团队刚开始做内部 AI 知识库,很容易走入误区。大家以为买几张高规格显卡、拉一个开源大模型跑微调,就能做出好用的问答系统。结果算力花出去了,员工一用还是各种胡说八道。在工程实践中,超过 70% 的知识库回答错误并不是大模型本身不够聪明,而是检索环节递交了错误的内容。
做知识库本质上是一门数据工程,而不是单纯的算力竞赛。如果底层数据和检索链路没打通,堆再多显卡也只是让模型更流畅地胡扯。下面这 5 个典型的坑,基本每一个我都见团队踩过。
第一个坑:一上来就租显卡搞模型微调
很多团队只要发现模型回答不准确,第一反应就是:“模型不够懂我们的业务,必须拿公司文档做微调。”
这是成本最高、效果最差的做法。
你要明白大模型微调和知识库检索的分工。微调主要改变的是模型的语言风格、输出格式或特定任务的执行逻辑,而不是用来给模型强行注入海量、易变的事实性知识。如果你把 500 篇公司制度和产品手册做成微调数据集喂进去,模型依然会出现事实性幻觉。而且企业的数据每周都在变动,难道文档每改动一次,团队就要重新租显卡跑一遍训练?这完全是在烧钱。
更合理的步骤是:
1.先做标准 RAG(检索增强生成)流程,把外部文档存放在数据库里。
2.保持基座模型不动,只把精力放在如何精确找到匹配的段落上。
3.只有当模型在拿到准确参考资料后,依然无法按照你要求的业务格式输出,或者听不懂特定的行业缩写时,再考虑微调一个轻量级的小模型。
第二个坑:原始文档不清洗,一股脑全切块入库
“垃圾进,垃圾出”这句话在 AI 知识库里体现得非常残酷。很多团队直接把公司的扫描版 PDF、复杂的 Excel 财务报表、以及包含大量废话的内部会议纪要原封不动地切片,直接塞进向量数据库。
结果就是系统被严重污染。PDF 里的页眉、页脚、免责声明、页码,都会变成文本块。当用户提问“差旅报销限额是多少”时,检索系统召回的前三条内容里,可能两条都是各页底部的“本文件机密,未经许可严禁外传”。这直接挤占了真正有用的上下文窗口。
另外,没有经过处理的表格一旦被切断,单元格就会脱离表头。模型看到的只是一串孤立的数字,根本不知道这些数字代表哪个季度、哪项支出。
清洗文档的正确步骤是:
1.剔除无用元数据:在解析 PDF 和 Word 时,先编写规则或使用提取工具,把所有重复出现的页眉、页脚、版本记录、水印彻底剥离。
2.结构化重构表格:严禁直接按字数横切表格。先将多行多列的表格转换为标准的 Markdown 格式或 HTML 格式,保证每一行数据都带上完整的表头上下文。
3.清洗扫描件噪音:对于扫描版文档,先过一遍高精度的光学字符识别(OCR)工具,剔除乱码和无意义的符号,然后再进入文本管道。
第三个坑:盲目使用固定长度切块
新手最容易照搬教程里的默认配置:把分块大小设为 500 个字符,重叠设为 50 个字符。
这种机械切块完全忽略了语言本身的结构。一段严谨的业务规则往往由前置条件、操作细节和例外条款组成,机械地按 500 字一刀切下去,很可能把条件切在上一块,把例外条款切在下一块。大模型无论拿到哪一块,都只能看到残缺的信息,导致给出的结论直接相反。
在实际对比中,采用符合文档层次的切块方式,检索准确率会显著改善。为了方便选型,不同切块方案的特点对比如下:
| 切块方案 | 推荐分块大小参数 | 核心优点 | 常见弊端 | 推荐适用场景 |
|---|---|---|---|---|
| 固定长度切块 | 300 – 500 字符,重叠 10% | 处理速度快,逻辑极其简单 | 容易在句子中间切断语义,上下文断裂 | 结构松散的长文本、小说、粗略检索 |
| Markdown 结构切块 | 按三级/四级标题与自然段切分 | 完整保留章节层级和语义独立性 | 段落长度不均匀,超长段落需要二次处理 | 技术 API 文档、企业规章制度、Wiki |
| 父子分块(Hierarchical) | 子块 150-200 字符,父块 800-1200 字符 | 检索精确定位,生成获得完整上下文 | 存储体积翻倍,索引设计较繁琐 | 复杂合同条款、深度行业研究报告 |
| 句子窗口切块 | 核心单句约 100 字符,扩展前后 3 句 | 语义点极细,避免不相干噪音 | 召回文本片段零散,拼接成本高 | 法律法规、FAQ 知识库、细粒度问答 |
强烈建议:对于逻辑严密的专业文档,优先采用父子分块策略。 检索阶段用较小的子块去匹配用户的提问,命中后把包含完整上下文的父块递交给大模型。数据显示,这种方式在复杂长文档问答中的准确度远高于简单的固定长度切断。
第四个坑:只迷信纯向量检索,拒绝混合检索
很多团队以为向量数据库(Vector DB)加 Embedding 模型就能搞定一切搜索。但实际上,纯向量检索在工业场景下非常容易掉链子。
向量检索依靠的是语义相似度。如果你提问“如何解决错误代码 ERR_9021”,或者输入具体的产品型号如“H100-80G”,纯向量检索往往会召回一堆关于“错误排查通用指南”或者“GPU 服务器简介”的内容,因为它们在语义概念上相近,但根本没有包含“ERR_9021”这个精确字符串。
在涉及型号、特定人名、工单编号、专业术语的场景下,传统的文本关键词匹配比向量模型更靠谱。
解决这个问题的标准做法是:混合检索(Hybrid Search)加上重排模型(Reranker)。
具体落地步骤:
1.双路并行检索:用户提问发起后,同时调用 BM25 算法做稀疏关键词检索,以及向量模型做稠密语义检索。
2.合并候选集:使用倒数排名融合(RRF)算法,将两路检索各自召回的前 20 条结果合并去重,得到约 30 条候选文本。
3.引入重排打分:把这 30 条候选文本和用户的问题一起送进 Cross-Encoder 架构的重排模型(例如 bge-reranker-large)。
4.截断送入模型:重排模型会逐字对比问题与文本的相关度并打分,最终只截取得分最高的前 3 到 5 条结果作为提示词上下文。
这一套流程虽然会增加约 100 毫秒的检索延迟,但能将核心答案的命中率拉高 25% 以上,彻底杜绝关键词被忽略的问题。
第五个坑:凭感觉测几道题就宣布上线
开发人员把链路调通后,往往在网页界面上随手测三五个问题:“公司年假怎么算?”、“CEO 是谁?”。看到模型回答得头头是道,就觉得大功告成,直接向全公司推广。
结果正式开放后,业务人员提的问题稍微带点限定条件(例如“入职不满半年的销售转正后有几天带薪病假?”),系统立刻原形毕露,甚至张冠李戴。
不做客观量化评测,你根本不知道每一次调整参数(改分块大小、换 Embedding 模型)到底是变好了还是变差了。全凭感觉优化,就像闭着眼睛开车。
搭建客观评测闭环的步骤是:
1.沉淀黄金测试集:不要让工程师自己编问题。找业务一线人员,收集至少 100 个真实的业务提问,并由人工给出标准答案,同时标明答案到底位于哪份文档的哪一个段落。
2.拆解评测指标:不要只看最终的一句话回答。评测必须分为两段:
•检索段指标:看 Hit Rate @ K(正确段落是否在前 K 个召回结果中)和 MRR(正确结果的排名倒数)。如果检索阶段都没拿到正确段落,生成阶段百分之百会出错。
•生成段指标:使用自动化评测工具检查忠实度(Faithfulness)与答案相关度(Answer Relevance)。忠实度用来判定模型的回答是不是全部来自于给定的文档,杜绝凭空捏造。
3.设立上线门禁:在持续集成流程中跑测试集。一旦核心业务场景的忠实度指标低于 0.85,或者检索召回率低于 0.80,坚决不允许部署上线。
把 AI 知识库做扎实,核心不在于买多贵的硬件,而在于把脏活累活干好:把文档洗干净、把切块逻辑理顺、把混合检索和重排配齐,最后用真实的测试集严格卡住质量底线。把这些环节理顺了,即使运行在成本很低的开源小模型上,知识库的效果也能满足绝大部分企业的实际需求。
原创文章,作者:七点互动,如若转载,请注明出处:https://ai.qidianhudong.com/aikonw/3648.html