专栏名称: GitHubStore
分享有意思的开源项目
目录
相关文章推荐
顽主杯实盘大赛  ·  大娃封神一战 ·  2 天前  
顽主杯实盘大赛  ·  大娃封神一战 ·  2 天前  
51好读  ›  专栏  ›  GitHubStore

基于知识图谱的智能问答系统

GitHubStore  · 公众号  ·  · 2024-08-20 09:38

正文

项目简介

基于知识图谱的智能问答系统,利用语言模型和Neo4j数据库实现自动化查询与回答,提供用户问题到自然语言答案的转换及证据支持




开始入门

设置 PrimeKG Neo4j 实例,点击这里

安装依赖项:

pip install -e .

一些 FactFinder 的功能基于外部 API。虽然运行 FactFinder 需要一个 openai API 密钥,但 Semantic Scholar 以及拜耳的 linnaeusannotate 实体检测是可选的。设置环境变量:

export LLM="gpt-4o"                 # "gpt-4-turbo" as an alternativeexport SEMANTIC_SCHOLAR_KEY=""      # fill API key for semantic scholarexport OPENAI_API_KEY=""            # fill opanAI api keyexport SYNONYM_API_KEY=""           # Bayer internal linnaeusannotate synonym API keyexport SYNONYM_API_URL=""           # Bayer internal linnaeusannotate synonym API url

运行 UI:

streamlit run src/fact_finder/app.py --browser.serverAddress localhost

使用额外的参数运行(例如激活规范化图同义词):

streamlit run src/fact_finder/app.py --browser.serverAddress localhost -- [args]streamlit run src/fact_finder/app.py --browser.serverAddress localhost -- --normalized_graph --use_entity_detection_preprocessing

以下参数可供使用:

--normalized_graph  =  Apply synonym replacement based on the normalized graph to the cypher queries before applying them to the graph.--use_entity_detection_preprocessing  =  Apply entity detection to the user question before generating the cypher query. The found entities will be replaced by their preferred terms and a string describing their category (e.g. "Psoriasis is a disease.") will be added to the query. This requires the corresponding api key ($SYNONYM_API_KEY) to be set. Also, the normalized graph should be used.--use_subgraph_expansion  =  The evidence graph gets expanded through the surrounding neighborhoods.

过程描述

以下步骤用于将用户问题转换为自然语言答案和提供的证据:

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

  2. 在第二步中,生成的加密查询使用正则表达式进行预处理。

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

  • 接下来,所有属性值都转换为小写。这假定图中的属性值已经进行了类似的预处理,使得查询对大小写不匹配具有抵抗力。

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

  • 第三步,使用 Cypher 预处理的最终结果查询图。图答案与 Cypher 查询一起作 为界面中提供的证据的一部分,为用户提供透明度。

  • 通过另一个语言模型调用,最终的自然语言答案从查询图的结果中生成。

  • 此外,从图形查询和结果生成子图。这为用户提供了视觉证据。子图可以通过基于规则的方法生成,也可以借助语言模型生成。


  • 用户界面







    请到「今天看啥」查看全文


    推荐文章
    顽主杯实盘大赛  ·  大娃封神一战
    2 天前
    顽主杯实盘大赛  ·  大娃封神一战
    2 天前