暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GraphRAG:知识图谱+大模型

AI技术研习社 2024-07-10
109

OpenAI的CEO Sam Altman最近分享了一些关于备受期待的GPT-5的有趣见解。在乐观与谨慎之间,他透露了对GPT-5的信心,并表示这个新模型将在GPT-4的基础上有显著提升,不会遇到无法解决的问题。

Altman强调,GPT-5预计将是一个巨大的飞跃,将解决许多GPT-4目前面临的问题。他指出:“GPT-4常犯的错误,比如在推理能力上的不足,有时候完全跑偏,犯一些连六岁小孩都不会犯的错误,这些问题在GPT-5中都能得到解决。”

接下来,我们开始今天的内容。

在大数据和人工智能时代,信息检索技术不断演进。RAG(Retrieval Argumented Generation)是一种结合检索技术和生成技术的方法,通过增强生成过程来提高搜索结果的准确性、相关性和多样性。本文将详细介绍一种新兴技术——Graph RAG。

什么是Graph RAG?

Graph RAG是一种基于知识图谱的检索增强技术。通过构建图模型的知识表达,将实体和关系之间的联系用图的形式展示出来,然后利用大语言模型(LLM)进行检索增强。这种方法将知识图谱视为一个超大规模的词汇表,实体和关系则对应于单词,从而在检索时能够将实体和关系作为单元进行联合建模。

Graph RAG 的工作原理

  1. 提取实体:从用户输入的查询中提取关键实体。

  2. 构建子图:根据提取的实体构建相关的子图,形成上下文。

  3. 生成答案:将构建好的子图输入大语言模型,生成答案。

代码示例

以下是一个简单的Graph RAG代码示例:


    def simple_graph_rag(query_str, nebulagraph_store, llm):    
    entities = _get_key_entities(query_str, llm)
    graph_rag_context = _retrieve_subgraph_context(entities)
    return _synthesize_answer(query_str, graph_rag_context, llm)


    def _get_key_entities(query_str, llm=None ,with_llm=True):
    ...
    return _expand_synonyms(entities)


    def _retrieve_subgraph_context(entities, depth=2, limit=30):
    ...
    return nebulagraph_store.get_relations(entities, depth, limit)


    def _synthesize_answer(query_str, graph_rag_context, llm):
        return llm.predict(PROMPT_SYNTHESIZE_AND_REFINE,
        query_str, graph_rag_context)
    文章转载自AI技术研习社,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论