为什么企业要搭建本地知识库
在当今信息爆炸的时代,企业面临着海量数据和知识的管理挑战。搭建本地知识库已成为企业提升效率和竞争力的重要手段。以下是企业搭建本地知识库的几个核心原因:
解决碎片化问题
企业多年积累的知识比较碎片化,很多也慢慢流于形式。使用知识库可以将这些碎片化知识重新整合,并且通过大模型学习进行分类整合,充分发挥知识的价值。
提升效率和创新能力
通过知识库的整合,员工不需要在茫茫的文档中查找,可以基于统一的入口去查找需要的东西。而且随着知识越发丰富,模型也会越来越强大,可以将海量知识组合,创造出新的想法。
提高安全性
相对于将知识全部放在公网知识库中,本地知识库可以有效保护企业的核心知识和技术,防止人员流动以及公网安全性导致的知识缺失。
企业知识库的目标
不同于通用大模型,企业知识库最重要的就是,专业性和准确性。知识库应该是垂直领域的,基于企业的核心业务,结合各种内部的文档进行知识的整合,使得行业知识逻辑更加清晰完整,并且数据来源是内部文档,所以对比通用大模型会更加准确。
搭建知识库的痛点
技术难度
个人原型搭建相对简单,但企业级部署需考虑权限管理、版本控制、审计追踪等复杂需求。
回答不够准确
回答准确性问题可能是知识库构建最麻烦的地方,不同的人,不同的团队写出的文档格式千奇百怪。而且有些知识是从网上下载,没有专门做整理就作为知识文档保留下来。知识库采用RAG(检索增强生成)技术,通过语义检索获取相关文档片段,再结合生成模型输出答案,不同分块的方式,大小都会导致知识库的回答不一定准确。下面以用户使用手册为例,来解决这些问题。
合理文档格式的重要性及模板参考
一般网上搜到知识库的搭建都是给你搞个embedding模型,或者根据什么换行之类的东西直接分块,但是这种方式对于企业知识库没什么用,因为文档真的太乱了。可能你换行的、用模型处理后的内容语义本身就不连续,有的段落内容多,有的少,有的可能多个分段是一个语义环境。目前只是专业的人才能够去理解真正哪些内容是一个语义环境。所以目前我的想法是可以通过人工干预,将文档按照格式整理,在通过程序增加分割符,然后在文档分块时,通过分割符号来处理,保证语义的完整性。下边给出一个简单的操作手册片段:
** 功能1:[功能名称]*** 功能描述
简要描述功能1的主要用途和实现目标。*** 菜单路径
- 主菜单:[具体菜单路径]
- 快捷方式:[快捷键或图标]*** 操作步骤
1. 打开软件,进入主界面。[[file:功能1_步骤1.png]]
2. 点击“[菜单名称]”,选择“[子菜单名称]”。[[file:功能1_步骤2.png]]
3. 在弹出的窗口中,输入相关信息(如用户名、密码等)。[[file:功能1_步骤3.png]]
4. 点击“确定”按钮,完成操作。[[file:功能1_步骤4.png]]*** 注意事项
- 确保输入的信息准确无误。
- 如果遇到错误提示,请参考“常见问题”部分。---** 功能2:[功能名称]*** 功能描述
简要描述功能2的主要用途和实现目标。*** 菜单路径
- 主菜单:[具体菜单路径]
- 快捷方式:[快捷键或图标]*** 操作步骤
1. 打开软件,进入主界面。[[file:功能2_步骤1.png]]
2. 点击“[菜单名称]”,选择“[子菜单名称]”。[[file:功能2_步骤2.png]]
3. 在弹出的窗口中,选择所需选项(如文件类型、格式等)。[[file:功能2_步骤3.png]]
4. 点击“保存”按钮,完成操作。[[file:功能2_步骤4.png]]*** 注意事项
- 在保存文件时,建议选择合适的文件格式。
- 如果文件过大,可能会导致保存时间较长。
对于上述文档,我们可以按照层次结构添加分隔符,比如按照的个数,两个作为二级标题,然后在功能2前增加==split=作为分隔符,效果如下。
** 功能1:[功能名称]
内容同上
---
=====split=====
** 功能2:[功能名称]
内容同上
=====split=====
** 功能3:[功能名称]
内容同上
此时将上述内容按照=split=分隔传入知识库,会将相同语义的内容放到单独的块中。在中知识搜索时,通过向量匹配的内容就会相对完整准确。
如何让知识库模型不乱说
其实光是知识库内容完整还不够,将知识库搜索结果作为提问的上下文仍然无法阻止模型自己的"发明创造",这种结果是企业知识库无法接受的。这时候就需要对模型增加一些约束,此时就是prompt大显身手了。
你是xx企业业务专家。你的回答应基于以下规则:
1. 使用提供的上下文(<context></context>)作为你的知识来源。
2. 如果上下文中有相关信息,请直接根据上下文回答。
3. 如果上下文中没有相关信息,请直接说“我不知道”或请求用户提供更多信息。
4. 当且仅当上下文包含相关信息时,用自然对话方式输出答案;否则明确告知'该问题不在知识库覆盖范围内。
5. 根据用户提问的语言(如中文或英文)来回答。
必需行为:
- 知识库存在的内容必须全部包含,并且不能改变上下文语义
禁止行为:
- 禁止任何形式的内容编造
- 禁止使用"根据我的知识"等模糊表述
- 禁止扩展知识库外的信息
- 禁止引入聊天上下文中无关内容,优先使用context中内容Context: <context>
{{#context#}}
</context>
仔细看下上述prompt就知道它是怎么工作了,其它限制可以按照企业需要继续扩展,按照知识库返回结果逐步优化。
实施计划
分阶段实施建议
- 知识盘点阶段(1-2周):成立跨部门小组,梳理核心知识资产
- 规范制定阶段(2-4周):建立文档编写标准和审核流程
- 试点运行阶段(4-8周):选择3-5个关键业务模块进行验证
- 全面推广阶段(8-12周):基于试点经验完善系统后全面部署
质量评估
- 准确率(Accuracy):人工抽检回答正确性
- 召回率(Recall):测试集问题解决率
结语
希望本文的分享能帮助大家在搭建和使用本地知识库时更加得心应手,祝大家实践成功!