企业知识库落地实践

news/2025/2/26 23:49:21/文章来源:https://www.cnblogs.com/qq347061329/p/18740065

为什么企业要搭建本地知识库

在当今信息爆炸的时代,企业面临着海量数据和知识的管理挑战。搭建本地知识库已成为企业提升效率和竞争力的重要手段。以下是企业搭建本地知识库的几个核心原因:

解决碎片化问题

企业多年积累的知识比较碎片化,很多也慢慢流于形式。使用知识库可以将这些碎片化知识重新整合,并且通过大模型学习进行分类整合,充分发挥知识的价值。

提升效率和创新能力

通过知识库的整合,员工不需要在茫茫的文档中查找,可以基于统一的入口去查找需要的东西。而且随着知识越发丰富,模型也会越来越强大,可以将海量知识组合,创造出新的想法。

提高安全性

相对于将知识全部放在公网知识库中,本地知识库可以有效保护企业的核心知识和技术,防止人员流动以及公网安全性导致的知识缺失。

企业知识库的目标

不同于通用大模型,企业知识库最重要的就是,专业性和准确性。知识库应该是垂直领域的,基于企业的核心业务,结合各种内部的文档进行知识的整合,使得行业知识逻辑更加清晰完整,并且数据来源是内部文档,所以对比通用大模型会更加准确。

搭建知识库的痛点

技术难度

个人原型搭建相对简单,但企业级部署需考虑权限管理、版本控制、审计追踪等复杂需求。

回答不够准确

回答准确性问题可能是知识库构建最麻烦的地方,不同的人,不同的团队写出的文档格式千奇百怪。而且有些知识是从网上下载,没有专门做整理就作为知识文档保留下来。知识库采用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. 知识盘点阶段(1-2周):成立跨部门小组,梳理核心知识资产
  2. 规范制定阶段(2-4周):建立文档编写标准和审核流程
  3. 试点运行阶段(4-8周):选择3-5个关键业务模块进行验证
  4. 全面推广阶段(8-12周):基于试点经验完善系统后全面部署

质量评估

  1. 准确率(Accuracy):人工抽检回答正确性
  2. 召回率(Recall):测试集问题解决率

结语

希望本文的分享能帮助大家在搭建和使用本地知识库时更加得心应手,祝大家实践成功!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/890423.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IOC 和 DI 详解及其简单用法

1. IOC 详解 1.1 Bean 的声明 IOC 控制反转,就是将对象的控制权交给 Spring 的 IOC 容器,由 IOC 容器创建及管理对象。IOC 容器创建的对象称为 bean 对象。 而 Spring 框架为了更好的标识 Web 应用程序开发当中,bean 对象到底归属于哪一层,又提供了 @Component 的衍生注解:…

开源一款DDS信号发生扩展板-FreakStudio多米诺系列

信号发生扩展板通过SPI接口生成可调频率和幅度的正弦波、方波和三角波,频率小于1MHz。支持幅度调节,提供原始和6倍放大输出接口。配备5阶低通滤波器、噪声抑制功能,优化信号稳定性。原文链接: FreakStudio的博客 摘要 信号发生扩展板通过SPI接口生成可调频率和幅度的正弦波…

Windows系统更改/迁移用户目录

Windows系统更改/迁移用户目录Windows系统更改/迁移用户目录 迁移的原因C盘空间不足 不想将我的文档等放在C盘,方便重做系统 其他原因迁移有什么风险么目前没发现有什么风险迁移过程 准备工作 更改/迁移用户目录之前先自行备份当前用户的资料(下载目录、桌面文件等),以免数…

[2025.2.26 JavaWeb学习]登录校验

流程图会话技术指浏览器与服务器的一次连接,直到某一方断开,某个浏览器的一次会话可以包含多次请求和响应会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据

cmcc_simplerop

打开ida查看,可以看到是静态编译,所以无法常规用ret2libc此时可以用最简单的方法系统调用 首先ida上面的偏移量是错误的,我们手动用gdb算一下距离ebp为0x1c因为要实现execve("/bin/sh",0,0)找int 0x80,eax,ebx,ecx,edx因为程序里面没有binsh或sh,所以我们得手动…

day4复健-字符串

题目练习:反转字符串 知识学习: StringBuilder:内容可变的字符串容器StringJoiner练习: 阿拉伯数字转换为罗马数字练习2:练习3:

软件开发与创新——万年历功能新增与代码优化

一、项目名称与来源 上海海洋大学C语言期末大作业 二、原项目运行 运行环境: 系统:Windows11 24H2 cpu:i7-10750H 编译器:Dev c++ 5.11 运行结果:点击查看代码 #include <stdio.h> #include <stdlib.h>// 定义每个月的天数,第一行为平年,第二行为闰年 int d…

逆向软件设计和开发---学生信息管理程序

一、来源 源代码来自同学大一上学期C语言大作业 二、运行环境 Dev-C++ 6.3 三、源代码及运行结果 1.源代码点击查看代码 #include <stdio.h> #include <stdlib.h> #include <string.h>#define MAX_NAME_LENGTH 20 #define MAX_SCORE_COUNT 5// 学生信息结构体…

在鹅厂做java开发是什么体验

离职已有好几个月,准备写一篇关于之前在腾讯做Java开发的经历,现在来谈谈在Java领域里,在腾讯做Java开发的体验。随便写写别较真。首先,介绍一下腾讯里与Java相关的部门。主要有CDG(云与智慧产业事业群)中的腾讯广告和FIT(金融科技事业群)理财通。其他部门则包括TEG中的…

软件二次开发

软件来源:舍友期末大作业 软件运行环境:dev C++ 软件运行图: 软件伸缩代码图: 问题:菜单只会出现一次,在多次操作之后菜单会被顶走,届时用户只能依照记忆操作系统 更改的代码: 在循环执行选项的代码部分增加了菜单的输出 更改后的代码运行:

换根dp

概念 换根 \(dp\) ,又被称为二次扫描,是属于树形 \(dp\) 的一类但比一般树形dp更难。 特点通常是没有指定根结点,且根结点的变化会对一些值产生影响。通常需要两次 \(dfs\) ,第一次 \(dfs\) 预处理信息,第二次 \(dfs\) 开始换根动态规划。求解的答案通常需要结合所有相连的…

千锋教育MyBatisPlus全套课程,简单快速一套精通MyBatisPlus框架(代码生成器_引入_使用)

https://www.bilibili.com/video/BV1aa4y1A7iN?spm_id_from=333.788.videopod.episodes&vd_source=0d7b1712ce42c1a2fa54bb4e1d601d78代码生成器_引入_使用 https://github.com/godmaybelieve