GraphRAG 1 – 使用deepseek和embedding-2进行长文档问答

1. 为什么使用 RAG

大语言模型 (LLM) 虽然在海量数据上训练,但并不包含我们的私有数据。为了让 LLM 能够回答与我们特定领域相关的问题,我们可以使用检索增强生成(RAG)技术。RAG 的核心原理是将信息检索与语言生成相结合,其工作流程如下:

  1. 文档处理:将私有文档分割成小片段(chunks)。
    • 分割方法:基于 Token 数量、字符数量、语义或层次结构
  2. 嵌入生成:为每个 chunk 生成向量表示(embedding)。
    • 目的:将文本转换为可计算的数值向量
  3. 向量索引:将 embeddings 存储到高维向量数据库中并建立索引。
    • 优势:支持快速相似度检索
  4. 查询处理:将用户的查询转换为 embedding。
    • 关键点:保持查询与文档片段在相同的向量空间
  5. 相似度搜索:在向量数据库中找出与查询最相似的 Top K 个 chunks。
    • 技术:利用向量相似度计算(如余弦相似度)
  6. 上下文融合:将相关 chunks 及其上下文发送给 LLM。
    • 重要性:为 LLM 提供回答问题所需的背景信息
  7. 回答生成:LLM 基于提供的上下文生成自然、流畅的回答。
    • 结果:结合了私有知识的精确答案
GraphRAG 1 - 使用 deepseek 和 embedding- 2 进行长文档问答

RAG 技术的主要优势包括:✧ 提高 LLM 在特定领域的适应性 ✧ 实现知识的实时更新 ✧ 增强答案的可解释性 ✧ 保护私有数据安全。通过 RAG,我们可以充分发挥大语言模型的潜力,同时保持对特定领域知识的精确把控,为各种应用场景提供强大而灵活的解决方案。

2. GraphRAG 和传统 RAG 的区别

在探讨大语言模型 (LLM) 应用于私有数据集的过程中,我们之前介绍了检索增强生成(RAG)技术。然而,当面对 “ 数据集中的核心主题是什么?” 这类需要全局理解的问题时,传统 RAG 系统可能力不从心。这就是 GraphRAG 最大优势。

GraphRAG 巧妙地结合了 知识图谱、RAG 和查询聚焦摘要(QFS)的优势,使其能够根据问题的普遍性和索引文本量进行灵活扩展。

让我们深入了解 GraphRAG 的工作流程:

GraphRAG 1 - 使用 deepseek 和 embedding- 2 进行长文档问答
  1. 源文档到文本块 📄
    • 关键决策:确定从源文档中提取文本的粒度
    • 目的:为后续处理准备合适大小的文本单元
  2. 文本块到元素实例 🔍
    • 使用 LLM 识别实体、类型、描述和关系
    • 重点:提取图节点(实体)和边(关系)的实例
  3. 元素实例到元素摘要 📝
    • LLM 将实例级摘要转换为描述性文本块
    • 优势:可能包含文本暗示但未明确陈述的概念
  4. 元素摘要到图社区 🕸️
    • 使用 Leiden 算法将图划分为模块化社区
    • 特点:高效恢复大规模图的层次社区结构
  5. 图社区到社区摘要 📊
    • 为每个社区创建报告式摘要
    • 价值:提供理解数据集全局结构和语义的方法
  6. 社区摘要到社区回答 🤔
    • 将社区摘要随机打乱并分块
    • 并行生成中间答案并评分(0-100 分)
    • 策略:过滤掉得分为 0 的答案
  7. 社区回答到全局回答 🎯
    • 按有用性得分降序排列中间答案
    • 迭代添加到新的上下文窗口,直到达到 token 限制
    • 最终:生成返回给用户的全局答案

GraphRAG 的优势
✧ 处理需要全局理解的复杂查询
✧ 可扩展性强,适应不同规模的数据集
✧ 结合知识图谱,提供更深入的语义理解
✧ 通过多阶段处理,提高答案的准确性和相关性

3. poetry 源码安装 graphrag

先安装 poetry,然后安装 graphrag

#1. 下载安装 poetry
curl -sSL https://install.python-poetry.org | python3 -

#2. 写入环境变量
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

#验证
poetry --version
#Poetry (version 1.8.4)

从源码安装 graphrag

git clone https://github.com/microsoft/graphrag.git
cd graphrag
#安装
poetry install

4. 初始化项目并开始建立索引

我们已经切换到 graphrag 目录下,可按照下面命令来初始化命令

mkdir xiyou
poetry run poe index --init --root xiyou
GraphRAG 1 - 使用 deepseek 和 embedding- 2 进行长文档问答

现在应该有 prompts 文件夹,再加一个 input 放进要查询的文档 txt 或者 csv。然后配置settings.yaml,这里只需要设置 llm 和 embeddings 即可。

llm:
  api_key: sk-xxx
  type: openai_chat # or azure_openai_chat
  model: deepseek-chat
  model_supports_json: false # 一定要设置 false
  max_tokens: 4096
  api_base: https://api.deepseek.com/v1

embeddings:
  ## parallelization: override the global parallelization settings for embeddings
  async_mode: threaded # or asyncio
  llm:
    api_key: xxx
    type: openai_embedding
    model: embedding-2
    api_base: https://open.bigmodel.cn/api/paas/v4

设置完毕后就可以进行图谱生成了,时间会比较长要等各个 final 文档生成完毕,大概是这样的。

GraphRAG 1 - 使用 deepseek 和 embedding- 2 进行长文档问答

如果有 All workflows completed successfully。就可以进行 local 和 global 查询。具体效果如下面图片所示。

#--data 加上 data 目录能使用上次抽取的数据继续查询这样能极大的节省开销
poetry run poe query --root xiyou --method local "黄眉老祖有哪些宝物和神通?"
python -m graphrag.query --root xiyou --data /root/aprojects/graphrags/graphrag/xiyou/output/ --method local '大鹏鸟为什么能打过孙悟空?'
poetry run poe query --root xiyou --method global  "黄眉老祖有哪些宝物和神通?"
GraphRAG 1 - 使用 deepseek 和 embedding- 2 进行长文档问答
GraphRAG 1 - 使用 deepseek 和 embedding- 2 进行长文档问答
GraphRAG 1 - 使用 deepseek 和 embedding- 2 进行长文档问答
GraphRAG 1 - 使用 deepseek 和 embedding- 2 进行长文档问答
### 灵吉菩萨的经历

灵吉菩萨是佛教中的一位重要菩萨,以其飞龙宝杖和定风丹闻名。他的主要职责包括镇押黄风怪,并在关键时刻帮助行者解决困境。以下是灵吉菩萨的主要经历:#### 1. 道场与职责
灵吉菩萨的道场位于小须弥山,这是一个地理位置特殊的地方,同时也是他的修行和居住之地。灵吉菩萨的主要职责之一是镇押黄风怪,这是一个重要的任务,显示出他在佛教中的重要地位。#### 2. 帮助行者
灵吉菩萨曾多次帮助行者(孙悟空)解决困境。行者在小须弥山曾多次请求灵吉菩萨的帮助,包括得到灵吉菩萨的支持以及请求灵吉菩萨协助捉拿妖怪。灵吉菩萨不仅提供了精神上的支持,还赠予行者定风丹和飞龙杖,这些法宝在行者的冒险中起到了关键作用。#### 3. 降服黄风怪
灵吉菩萨曾与孙悟空一起降服黄风怪,这是一个重要的任务,显示出他的法力和智慧。黄风怪是一个强大的妖怪,灵吉菩萨使用飞龙杖成功将其降服并镇押。#### 4. 定风丹与飞龙杖
灵吉菩萨赠予行者定风丹和飞龙杖,这些法宝在行者的冒险中起到了关键作用。定风丹能够定住风势,而飞龙杖则是灵吉菩萨的法器,用于捉拿妖怪。#### 5. 与其他菩萨的关系
灵吉菩萨与其他菩萨如观音菩萨、普贤菩萨等有着密切的关系。他们共同参与如来的讲法和召唤,显示出他们在佛教中的重要地位和相互支持的关系。### 总结
灵吉菩萨是佛教中的一位重要菩萨,以其飞龙宝杖和定风丹闻名。他的主要职责包括镇押黄风怪,并在关键时刻帮助行者解决困境。灵吉菩萨的道场位于小须弥山,他曾多次帮助行者,包括赠予定风丹和飞龙杖。灵吉菩萨与其他菩萨如观音菩萨、普贤菩萨等有着密切的关系,共同参与如来的讲法和召唤。** 数据参考:**
- 灵吉菩萨的道场与职责 [Data: Entities (1456, 1457); Relationships (6797, 6616)]
- 帮助行者 [Data: Entities (1456); Relationships (4784, 4935, 6800, 6799)]
- 降服黄风怪 [Data: Entities (1456); Relationships (6616, 6618)]
- 定风丹与飞龙杖 [Data: Entities (1456); Relationships (6800, 6799)]
- 与其他菩萨的关系 [Data: Entities (1456, 3016, 405, 1556); Relationships (2927, 2942, 3254)]

5. Inference

[1] microsoft graphrag blog

[2] graph paper

[3] 实战微软新一代 RAG:GraphRAG 强大的全局理解能力,碾压朴素 RAG?

正文完
 
admin
版权声明:本站原创文章,由 admin 2024-10-17发表,共计3548字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请联系tensortimes@gmail.com。
评论(没有评论)
验证码