Fact-Finder是一个基于知识图谱的智能问答系统,利用LLM和 Neo4j数据库实现自动化查询与回答,实现了从用户问题到自然语言答案的自动化转换过程。

Fact-Finder:一个基于知识图谱的智能问答系统(图1)

Fact-Finder特点:

1、基于知识图谱:使用Neo4j 数据库存储和管理知识图谱,并利用它来回答问题

2、利用语言模型:使用语言模型将问题转化为Cypher查询语句,并根据查询结果生成自然语言答案

3、自动化查询与回答:将问题到自然语言答案的整个过程自动化,无需手动编写查询语句。

Fact-Finder流程说明:

采取以下步骤从用户问题得到自然语言答案和提供的证据:

第一步:使用语言模型调用生成对知识图谱的密码查询。为了实现这一点,提示模板包含图形的模式,即有关所有节点及其属性的信息。此外,提示模板可以通过对图中(某些)关系的自然语言描述来丰富,从而可以更好地理解它们对语言模型的含义。如果模型确定用户问题无法通过具有给定架构的图形来回答,则指示模型返回以标记字符串“SCHEMA_ERROR”开头的错误消息。然后检测到这一点并将错误消息直接转发给用户。

第二步:使用正则表达式对生成的密码查询进行预处理。

  • 首先,应用格式化以使后续正则表达式更易于设计。例如,这包括删除不必要的空格以及对所有字符串使用双引号。

  • 接下来,所有属性值都转换为小写。这假设已对图中的属性值进行了类似的预处理,并使查询能够防止大小写不匹配。

  • 最后,对于某些节点类型,查询中使用的任何名称都将替换为图中实际使用的同义词。例如,这是通过查找名称的同义词并检查图中实际存在的同义词来完成的。

第三步:使用密码预处理的最终结果查询图。图形答案和密码查询是界面中呈现的证据的一部分,为用户提供了透明度。

第四步:通过另一个语言模型调用,最终的自然语言答案是根据查询图的结果生成的。

第五步:此外,还会根据图查询和结果生成子图。这作为用户的视觉证据。子图可以通过基于规则的方法生成,也可以在语言模型的帮助下生成。

Fact-Finder Github 代码库:

https://github.com/chrschy/fact-finder