LLM常见问题(RAG部分)-灵析社区

算法无限

1. 什么是 Graph RAG?

Graph RAG 是由悦数图数据提出的概念,是一种基于知识图谱的检索增强技术,通过构建图模型的知识表达,将实体和关系之间的联系用图的形式进行展示,然后利用大语言模型 LLM进行检索增强。

通过图技术构建知识图谱提升 In-Context Learning 的全面性为用户提供更多的上下文信息,能够帮助大语言模型(LLM)更好地理解实体间的关系,提升自己的表达和推理能力

2. 为什么需要 Graph RAG?

身处信息爆炸时代,如何从海量信息中获取准确全面的搜索结果,并以更直观、可读的方式呈现出来是大家期待达成的目标。传统的搜索增强技术受限于训练文本数量、质量等问题,对于复杂或多义词查询效果不佳,更无法满足 ChatGPT 等大语言模型应用带来的大规模、高并发的复杂关联查询需求。

知识图谱可以减少基于嵌入的语义搜索所导致的不准确性。

“保温大棚”与“保温杯”,尽管在语义上两者是存在相关性的,但在大多数场景下,这种通用语义(Embedding)下的相关性很高,进而作为错误的上下文而引入“幻觉”。这时候,可以利用领域知识的知识图谱来缓解这种幻觉。

3. Graph RAG 思路介绍?

Graph RAG 将知识图谱等价于一个超大规模的词汇表,而实体和关系则对应于单词。通过这种方式,Graph RAG 在检索时能够将实体和关系作为单元进行联合建模。

4. 用代码实现 Graph RAG ?

一个简单的 Graph RAG 思想在于,对用户输入的query提取实体,然后构造子图形成上下文,最后送入大模型完成生成,如下代码所示:

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)

5. Graph RAG 排序优化方式是什么?

基于知识图谱召回的方法可以和其他召回方法一起融合,但这种方式在图谱规模很大时其实是有提升空间的。

突出的缺点在于:

  • 子图召回的多条路径中可能会出现多种不相关的。
  • 实体识别阶段的精度也有限,采用关键词提取还比较暴力,方法也值得商榷。
  • 这种方式依赖于一个基础知识图谱库,如果数据量以及广度不够,有可能会引入噪声。

因此,还可以再加入路径排序环节,可参考先粗排后精排的方式,同样走过滤逻辑。

例如,在粗排阶段,根据问题 query 和候选路径 path 的特征,对候选路径进行粗排,采用 LightGBM 机器学习模型,保留 top n 条路径,在精排阶段,采用预训练语言模型,计算 query 和粗排阶段 的 path 的语义匹配度,选择得分 top2-top3 答案路径作为答案。

阅读量:2022

点赞量:0

收藏量:0