表格型知识库与数据库:课程信息检索
1.整体概述
本篇最佳实践讲述了如何利用知识库以及数据库功能,构建一个表格查询类的应用。这次实践将以中学信息及课程信息查询场景为例,目标是构建一个RAG应用,用户可以使用该应用查询中学信息与课程信息。我们将通过创建包含表格型知识数据的知识库、上传数据表创建数据库,实现表格中信息的精确查询。
表格型知识数据的知识库:支持根据表格中的文本信息,按行构建知识切片。更适用于含有长文的表格(表格单元格中存储了较长的文本内容;可按列索引返回整行内容作为切片)。创建知识库会对文本构建索引。RAG应用会根据用户问题,检索召回切片信息,作为参考信息输入给大模型。
数据库:支持上传本地表格数据或连接业务数据库构建数据库。更适用于用户询问数值类问题时,应用能够查询、计算和分析数据并答复。创建数据库会构建数据表。RAG应用会通过思考模型选择数据表,生成Python代码并执行。从而搜索到所需的数值,作为参考信息输入给大模型。
2.构建过程
2.1使用知识库中添加表格型知识数据
2.1.1导入表格型知识数据
当希望查询的表格中包含较多文字类型信息时,应选择知识库作为知识来源。
点击“创建知识库”,选择“表格型知识数据”上传至知识库。
请注意,为保证解析的效果,上传的表格需要遵循一定模板。可以点击“模板下载”,下载对应格式的表格模板。
注意:开启知识增强,会调用大模型,依据检索列内容生成更加丰富的知识点(如下图红框所示)。从而增加切片的召回率。但会增加文档的处理时长和资源消耗。
点击“确认创建”,这样就完成了表格的上传。
2.1.2配置数据索引
对于表格类数据,创建知识库后需要进行配置数据。点击“配置数据”进行配置。
开启想要作为索引的字段。可在“是否参与索引”选项中开启对应列的字段。开启后,对应字段内容会被添加到知识点中,可被检索。未开启的字段,其内容不参与检索,仍是切片内容的一部分。选择需要参与检索的字段,关闭无关字段,可提高切片召回率,精准召回表格整行内容。
点击“确定”,等待队列中的数据解析完成,这样就完成了表格类型数据知识库的配置。之后可以在应用配置页面对该知识库进行调用和调优。
2.2使用数据库中添加数据表
2.2.1上传数据表
对于包含较多数值(key-value对)的表格,如果想要实现对划定范围内数值项的召回、数值大小的比较等,就需要使用“数据库”功能。
点击“创建数据库”,选择“上传数据表”。
点击“上传数据表”,将表格上传至数据库。
请注意,为保证解析的效果,上传的表格需要遵循一定模板。可以点击“模板下载”,下载对应格式的表格模板。确认格式正确后,点击“下一步”。
2.2.2配置列描述
对与数据库中的表格,我们需要填写数据配置,以便对表格中的信息进行更准确的检索。其中,“数据表描述”是模型判断是否使用此数据表进行回答的依据,请尽可能准确填写。
特别注意,“列描述”字段是模型检索和召回所依据的字段,为了提高回答准确率,请尽量准确地填写对每一列数据的描述。 填写完数据配置后,点击“完成上传”。
2.3在应用中调用已添加的知识库和数据库
2.3.1撰写角色指令
角色指令是大模型回答问题时遵循的人设,可以根据需要进行修改和调试。
以下是这个场景下一份角色指令的样例。
#角色设定
你是一位教育领域的信息专家,拥有广泛的北京中学教育资源和课程体系知识,能够提供准确、及时的信息查询服务。
#角色能力
- 你可以提供准确的中学信息和课程信息查询服务。
- 具备良好的沟通技巧,能够清晰地向用户传达复杂信息。
- 有教育心理学背景,能够理解学生的学习需求和教师的教学方法。
- 掌握多语言能力,能够为用户提供多种语言的信息查询服务。
#要求与限制
1.专业准确:提供的信息应该准确无误,避免使用模糊不清的表述,确保用户能够得到清晰的答案。
2.简洁明了:尽量使用简单直白的语言,避免冗长和复杂的句子。
3.积极正面:即使在面对用户的不满或投诉时,也应保持积极正面的态度,寻求解决问题的方法。
4.亲切友好:使用礼貌用语,如“您好”、“请问”、“谢谢”等,让用户感受到被尊重和重视。
2.3.2应用调试
在“预览与调试”界面,可以查询相关问题并进行调试。
可以看到,当我们提问“北京是第九十六中学地址”的时候,模型根据上传的表格内容,准确返回了“北京市东城区崇文门西小街3号”这个地址。
当我们提问“课容量大于50的课程有几门?分别是哪些?”时,模型自动生成了python语句并执行,准确回答了“课容量大于50的课程共有596门”,并列出了符合要求的课程名称。
以上就是利用知识库以及数据库功能,构建一个表格查询类的应用的全过程。我们通过创建包含表格型知识数据的知识库、上传数据表创建数据库,实现了表格中信息的精确查询。