概述
知识图谱问答(KBQA)基于知识图谱存储的知识,通过对知识图谱中的实体、属性、关系等信息的抽取和关联,实现对用户问题的精准回答。
KBQA
在自定义应用中,KBQA主要由以下三个核心算法构成:
1.规则分类与NGQL模板:通过定义规则模板实现用户意图的精确匹配。每个规则模板都配备了相应的NGQL查询模板,这些模板用于执行图查询语句,以便从知识图谱中准确获取答案。
2.通用意图与NGQL模板:基于Bert模型训练出通用意图分类模型,通过此模型对用户输入进行意图分类,并将分类结果映射到指定的NGQL查询模板上。这些模板进一步用于执行图查询语句,从而从知识图谱中检索出相关答案。
3.路径相似度召回:针对现有的路径相似度算法(即认知搜索应用中的图谱问答)进行优化。优化的目标是提升算法的精度,减少计算时延,从而为用户提供更加高效、准确的服务。
算法处理流程如下:
自定义应用配置
本篇示例仅适用于AnyShare认知助手的使用场景。为完成KBQA问答所需的知识图谱配置,请优先参照《AnyShare 7.0.5.5认知助手配置手册.docx》,完成知识图谱构建和相关图谱数据写入。
自定义应用KBQA完整配置流程如下图所示,本章重点重从意图训练和自定义应用配置展开,探讨如何完成KBQA配置。
一、意图训练
1.以下操作以Concept模型意图训练文件压缩包为例,该压缩包包含四个训练文件,分别针对AS默认图谱中的专业领域(business)、地区(district)、组织(organization)和人员(person)进行训练。
2. 登录AnyDATA,进入“模型工厂”中的“意图识别”模块,点击“新建”按钮,进入意图训练界面。
3. 点击“上传数据”按钮,选择解压后的意图训练文件。请注意,每个意图池仅支持上传一个文件。
4. 文件上传后,自动解析文件中的意图和槽位。输入意图池名称,点击“提交训练”按钮。
5. 提交训练后,请耐心等待训练完成,直至训练状态显示为“训练成功”。
请注意,每次仅支持训练一个意图,需等待当前意图训练完成后,再进行下一个意图的训练。本手册提供的意图训练文件共有四个,请按照上述步骤依次完成训练。
6. 查看意图ID
在KBQA自定义中的Concept模型配置中需要使用意图ID。用户可以意图识别页面,查看意图ID。
二、添加配置
1. 进入“认知应用”模块,选择“自定义应用”,点击“新建”按钮,输入应用名称后,点击确定。
2. 进入流程1:JSON文件配置与测试。点击“模板”,选择“KBQA_For_AS”,点击“添加至配置文件”。模板内容自动填充到左侧的JSON配置文件输入框。
3.修改配置中的知识图谱ID(kg_id)。该ID在配置文件中出现三次,分别位于第49行、第165行和第315行(行号仅供参考,以实际为准)。用户可在知识网络中选择AS默认图谱,并在知识图谱概览中查看知识图谱ID。
4. 修改concept配置中的意图池ID,总共五处(图片行号仅供参考,以实际为准),如下图所示。意图池ID查看详见上文“查看意图ID”
5. 修改大模型(LLM)和向量模型(Embedding)配置,大模型和向量地址根据实际情况修改。注意共有2处大模型需要修改。
6. 点击”运行配置“按钮,右侧生成测试输入框,测试搜索效果。
KBQA支持两跳及以内的简单问题查询,因此可以根据知识图谱相关实体的属性、实体的一跳关系、实体一跳邻居的属性以及实体的两跳关系,测试问答的效果。以人员--属于--组织这一三元为例,您可以提问“产业链前端开发组有哪些人?”,问答结果如下图所示。
补充说明:输入JSON进行测试,请求中包含两个字段:
query:查询的问题,类型为字符串(String)。
kg_list:图谱ID的列表,类型为数组(Array),数组中的元素为字符串(String)。若kg_list为空,则默认在全部图谱范围内进行搜索。若kg_list包含特定的图谱ID,则搜索将仅在这些指定的图谱范围内进行。
示例输入
7. 点击下一步,进入流程2,发布应用。
注意事项
知识图谱本体
KBQA自定义应用的JSON配置文件需要用户手动输入和设置。
当知识图谱中的本体,即实体类和实体类属性发生修改、删除或添加时,用户必须手动更新自定义应用的JSON配置文件,修改、删除或添加图谱变更的实体类和实体类属性。否则,搜索操作可能无法返回正确结果,可能出现索引不存在等异常情况
示例参考:
若知识图谱中删除了”功能特性(functional_characteristic)“实体类:
用户需在自定义应用中:
1. 取消发布应用;
2. 点击编辑进入自定义应用的JSON配置,删除图谱中去除的实体类;
3. 再次发布应用。