通义灵码能够结合企业知识库的私域数据,生成贴合企业特点的回答。充分发挥检索增强技术的优势,构建高质量的企业知识数据以及合理的知识库权限管理是必不可少的。本文将为您详细介绍如何构造与管理一个高质量的企业知识库。
前提条件
Cloud Native
通义灵码开通参考链接:https://www.cloudallonline.com/yunyouhui/?zxwsh54
场景介绍
Cloud Native
通义灵码虽然具备广泛的通用知识,但缺乏企业独有的专业知识和数据。通过引入企业知识库,可以帮助模型更精准地理解私域知识,以便生成更加贴合企业特色的个性化回答。通义灵码能够基于知识库进行自由问答,代码优化与生成,广泛应用于企业规范检查、技术支持等多个场景。
例如:
1)智能自由问答场景:企业技术新人入职问答、企业安全合规规范问答、产品运维故障排查咨询、企业内部平台、API 使用问答等。
2)代码优化与生成场景:根据企业编码规范,确保代码风格的一致性与规范性;根据安全规范文档检查代码漏洞,并提出修复建议等。
为了最大程度发挥生成的效果,需要从两个方面进行实践。一方面是构建高质量的知识库,确保知识数据的质量;另一方面是清晰的知识库权限分配,确保知识库的可见范围符合预期。为此知识库管理员需要:
构建高质量知识库
Cloud Native
通义灵码的企业知识库问答功能,目前已支持通过文档上传的形式,将其转化为检索增强的知识数据,本章节将重点介绍文档类知识数据的准备原则和方法。如需了解代码类请参见《企业代码补全增强使用实践》[1]。
文档格式要求
单个文档规范
单个文档需要从名称、标题、格式、内容方面检查是否符合文档规范。
详细说明与示例如下:
文档类型与命名
反例:《编码规范》、《安全规范1》、《安全规范2》、《SR3》这些命名缺乏具体性,不易区分,且可能造成混淆。
正例:
《Java语言编程规范》:明确指出了编程语言和文档性质。
《API数据安全管理规范》:指出了文档内容和目的。
《云账号安全使用管理规范》:清晰地表达了文档的主题和适用范围。
文档结构
反例:
《AK安全使用规范》【目录】关键词:AK、安全规范、Access Key一、 定义Access Key(简称AK),是用于身份验证的一种密钥对,由Access Key ID 和 Access Key Secret 组成。它允许用户通过API调用安全地访问系统服务。本规范旨在明确AK的使用规则,确保系统的安全性与稳定性。Access Key ID是代表用于标识用户的身份。Access Key Secret是代表用于加密签名,保证请求的唯一性和不可抵赖性。二、 使用原则确保Access Key Secret的保密性,不得泄露给任何未经授权的第三方。遵循最小权限原则授予API调用权限,仅授予完成任务所必需的权限。定期每90天更换Access Key Secret。记录AK的使用情况,并定期审查使用日志,确保没有异常行为,以及在不需要时及时撤销其权限。三、 安全实践为确保访问密钥(AK)的安全,我们实施了以下简化的安全实践:在生产环境中,我们优先使用环境变量存储AK,避免硬编码;通过配置管理系统统一管理AK,防止其在代码中的直接暴露。同时,我们对日志进行过滤,确保AK的Secret信息不会被记录。我们还定期进行权限审查,确保AK仅拥有执行必要操作所需的最低权限。此外,建立了异常检测机制,以便快速识别并响应任何可疑的AK使用活动。这些措施共同保障了AK的安全和合理使用。四、 API调用示例● 示例1Node.js中使用AK/SK进行API调用:在Node.js中,可以使用axios库来发送API请求,并在请求头中包含AK和SK。例如,使用AK和SK进行签名认证的API请求可能如下所示:【示例代码块】● 示例2Python中使用AK/SK调用API:在Python中,可以使用requests库来发送带有AK和SK的API请求。以下是一个示例代码,展示了如何构建请求并添加签名:【示例代码块】
正例(注释为优化说明):
《AK安全使用规范》/*去除干扰元素:文章开头的目录、关键词等无需召回的内容可以删除,以减少干扰。专业名词解释:专业名词及其解释应以条目形式列出,以便于模型更好地查找和理解。 */一、 定义● Access Key(简称AK):是用于身份验证的一种密钥对,由Access Key ID 和 Access Key Secret 组成,它允许用户通过API调用安全地访问系统服务。● Access Key ID:用于标识用户的身份。● Access Key Secret:用于加密签名,保证请求的唯一性和不可抵赖性。/*避免使用大段落陈述,建议采用分点陈述的方式,以便模型更容易理解 */二、 使用原则● 保密性:Access Key Secret 必须严格保密,不得泄露给任何未经授权的第三方。● 最小权限:授予API调用的权限应遵循最小权限原则,仅授予完成任务所必需的权限。● 定期轮换:定期更换Access Key Secret,推荐每90天更换一次。● 监控与审计:记录AK的使用情况,并定期审查使用日志,确保没有异常行为。● 及时撤销:当不再需要使用某个AK时,应及时撤销其权限。三、 安全实践● 环境变量:在生产环境中,使用环境变量而非硬编码的方式存储AK。● 配置管理:使用配置管理系统来管理AK,避免直接在代码中出现。● 日志过滤:确保日志记录中不会出现Access Key Secret。● 权限审查:定期检查AK的权限设置,确保符合最小权限原则。● 异常检测:建立异常检测机制,及时发现并处理可疑活动。/*关于API调用示例部分,示例层级的名字不清晰,其中“示例1”和“示例2”,需要修改为某个示例的具体名字*/四、API调用示例● Node.js中使用AK/SK进行API调用示例 在Node.js中,可以使用axios库来发送API请求,并在请求头中包含AK和SK。例如,使用AK和SK进行签名认证的API请求可能如下所示:【示例代码块】● Python中使用AK/SK调用API示例在Python中,可以使用requests库来发送带有AK和SK的API请求。以下是一个示例代码,展示了如何构建请求并添加签名:【示例代码块】
文档章节和段落
反例:1)无意义的空行
6.3 方法的接收器推荐以类名第一个英文首字母的小写作为接收器的命名。
接收器的命名在函数超过`20行`的时候不要用单字符。
命名不能采用 `me`,`this`,`self` 这类易混淆名称。
2)使用省略描述或指代描述
4.6 Go语言的接口命名规则命名规则和结构体命名规则一致。或同3.2章《命名规则和结构体命名规则》
正例:1)去掉无意义的空行
6.3 方法的接收器● 推荐以类名第一个英文首字母的小写作为接收器的命名。● 接收器的命名在函数超过`20行`的时候不要用单字符。● 命名不能采用 `me`,`this`,`self` 这类易混淆名称。
2)需要详细阐述具体内容,避免使用同上、缩写或指代词
4.6 Go语言的接口命名规则● 采用驼峰命名方式,首字母根据访问控制采用大写或者小写。● 结构体名应该是名词或名词短语,如 Customer、WikiPage、Account、AddressParser,它不应是动词。● 避免使用 Data、Info 这类意义太宽泛的结构体名。
特殊内容与媒体处理
当文档段落中出现图片、表格时,应该对应注意以下几点:
文档中关于表格的处理:
文档中关于图片的处理:
其他通用注意事项:
不同类型文档的处理准则:
Markdown:建议优先使用 Markdown 格式。
Word:
PDF:
CSV:
多文档规范
在编写文档时,确保多个文档之间做到知识独立、知识聚合、规范统一以及覆盖全面,这样做能够显著提高知识的召回准确度,从而提升整体效果。你可以参考以下准则来进行多文档组织与整理:
知识独立:每个文档应包含独特且非冗余的信息。
知识聚合:尽量将与同一主题相关的所有信息整合到一起。
尽量将同一主题的相关知识聚类在一起,避免相关知识过于分散,尽量实现文档内高内聚。
规范统一:确保同类信息在不同文档间保持一致性和标准化。
覆盖全面:确保文档的完整性、及时性、准确性。
遵循上述原则,不仅能帮助企业知识库管理员创建高质量的产品文档,还能提升用户的满意度和体验。通过系统化的方法来组织和维护文档,确保了信息的准确性、易用性和完整性,为用户提供了一个更加可靠的知识资源库。