跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

利用 GraphRAG + GLM-4 构建《红楼梦》全文的中文增强检索系统

综述由AI生成基于 graphrag-practice-chinese 项目,结合 GLM-4 大语言模型,实现了针对《红楼梦》全文的 GraphRAG 中文增强检索系统。通过优化文本切分策略、替换英文提示词为中文以及适配国内大模型接口,解决了原生 GraphRAG 对中文支持不足的问题。文章详细阐述了环境搭建、配置文件修改、索引构建及全局与本地查询测试的全过程,并对比了两种查询模式的差异与适用场景,为中文语境下的知识图谱检索应用提供了实践参考。

宁静发布于 2025/2/7更新于 2026/6/731 浏览
利用 GraphRAG + GLM-4 构建《红楼梦》全文的中文增强检索系统

利用 GraphRAG + GLM-4 构建《红楼梦》全文的中文增强检索系统

引言

检索增强生成(Retrieval-Augmented Generation, RAG)技术通过结合外部知识库与大语言模型,有效缓解了模型幻觉问题。而图检索增强生成(GraphRAG)在此基础上引入了知识图谱结构,通过实体关系网络提升了对复杂问题的理解与推理能力。

原生 GraphRAG 项目主要面向英文环境优化,在处理中文长文本时存在分块乱码、提示词不匹配及模型支持不足等问题。本文基于 graphrag-practice-chinese 开源项目,结合智谱 AI 的 GLM-4 大模型,详细演示了如何构建针对《红楼梦》全文的中文增强检索系统,涵盖环境搭建、配置优化、索引构建及查询测试全流程。

核心优势与技术选型

1. 为什么选择 GraphRAG?

传统向量检索(Vector Search)擅长语义相似度匹配,但在处理多跳推理(Multi-hop Reasoning)和全局概览(Global Overview)时表现有限。GraphRAG 通过构建实体节点和关系边,能够:

  • 揭示隐藏关系:发现文本中未直接陈述但隐含的人物或事件关联。
  • 全局摘要:生成社区级别的摘要,便于回答宏观主题问题。
  • 上下文保持:在长文档检索中更好地维持上下文连贯性。

2. 模型选择:GLM-4

原生 GraphRAG 默认调用 OpenAI API,对中文支持较弱且成本较高。本项目选用智谱 AI 提供的 GLM-4 系列模型(如 glm-4-flash 或 glm-4-plus),原因如下:

  • 中文原生能力强:对中文语境、成语及文化背景理解更精准。
  • 成本可控:相比 GPT-4 系列,Token 消耗成本更低,适合大规模全文索引构建。
  • API 兼容:通过适配层可无缝替换 OpenAI 接口调用逻辑。

环境搭建

1. 克隆项目

首先从 GitHub 获取项目代码:

git clone https://github.com/zhaoyingjun/graphrag-practice-chinese.git
cd ./graphrag-practice-chinese

2. 安装依赖

确保 Python 版本为 3.9 或以上,并安装项目所需依赖:

pip install -r ./requirements.txt

3. 初始化配置

运行初始化命令以创建必要的配置文件目录:

python -m graphrag.index --init --root ./

此命令将在当前目录下生成 .env 和 settings.yaml 文件。

4. 准备数据

创建输入目录用于存放待索引的文本文件:

mkdir ./input

将《红楼梦》原文保存为 UTF-8 编码的 .txt 文件放入该目录。注意 GraphRAG 仅支持 txt 或 csv 格式。

配置优化策略

1. 环境变量配置 (.env)

.env 文件用于存储敏感信息,如 API Key。需修改如下内容:

GRAPHRAG_API_KEY=your_zhipu_api_key_here

请确保使用智谱 AI 控制台生成的有效密钥。

2. 主配置文件 (settings.yaml)

settings.yaml 定义了 Pipeline 的核心参数。以下是关键部分的配置说明:

输入设置

指定数据源路径及编码格式:

input:
  type: file
  file_type: text
  base_dir: "input/hongloumeng"
  file_encoding: utf-8
  file_pattern: ".*\\.txt$"
分块策略优化 (Text Splitting)

官方默认按 Token 数切分,易导致中文句子被截断。建议采用自定义中文切分器:

chunks:
  size: 2500
  overlap: 300
  group_by_columns: [id]

splitter:
  type: custom
  module: splitter.chinese_text_splitter
  class: ChineseTextSplitter
  params:
    pdf: false
    sentence_size: 250

此配置使用字符数而非 Token 数进行切分,保留句子完整性,避免乱码。

模型调用配置

将默认 OpenAI 模型替换为 GLM-4。需在代码层面修改模型适配器,或在配置中指定对应的 API 端点。推荐在 settings.yaml 中明确指定模型名称:

llm:
  api_base: "https://open.bigmodel.cn/api/paas/v4/"
  model: "glm-4-plus"
  max_tokens: 4096
  temperature: 0.7

3. 提示词工程 (Prompt Engineering)

GraphRAG 包含四个核心 Prompt 文件(位于 prompts/ 目录)。原文件均为英文并要求英文输出。为提升中文效果:

  1. 将四个 Prompt 文件翻译为中文。
  2. 强制 LLM 在输出时使用中文。
  3. 保留原有的关键字段结构(如 JSON Schema 定义),确保解析器能正常提取结果。

索引构建流程

执行以下命令启动索引构建任务:

python -m graphrag.index --root ./

构建过程说明

  • Entity Extraction: 识别文本中的实体(人物、地点、物品)。
  • Community Detection: 基于实体关系聚类形成社区。
  • Summary Generation: 为每个社区生成自然语言摘要。
  • Index Saving: 将图谱数据保存至 output 目录,缓存数据存于 cache 目录。

注意:构建完整《红楼梦》全文索引可能消耗约 700W Tokens,耗时较长。若无 GPU 加速,建议使用 CPU 模式耐心等待进度条完成。成功标志为控制台输出 All workflows completed successfully。

查询测试与分析

索引构建完成后,可通过命令行进行查询测试。

1. 全局查询 (Global Search)

适用于宏观主题性问题,基于预计算的社区摘要进行回答。

python -m graphrag.query --root ./ --method global "故事的主旨是什么?"

典型响应: 系统会综合贾、王、史、薛四大家族的兴衰描写,分析封建社会的矛盾冲突及人性主题。由于基于社区摘要,回答通常具有较高的概括性和深度。

2. 本地查询 (Local Search)

适用于特定实体的精确查询,基于图遍历和向量搜索。

python -m graphrag.query --root ./ --method local "贾母对宝玉的态度怎么样?"

典型响应: 系统会定位到'贾母'和'宝玉'实体,遍历其关系边,总结出具体的互动细节(如探望、教育、宽容等),并提供具体的数据来源引用。

3. 两种查询模式对比

特征本地查询 (Local Search)全局查询 (Global Search)
查询范围以特定实体为入口点基于预先计算的实体社区摘要
查询方法使用实体嵌入和图遍历向每个社区提问并汇总答案
适用场景针对特定实体的精确查询广泛的主题性问题
性能对简单直接任务更高效适合处理复杂的多步骤查询
复杂度相对较低较高,需要更多计算资源
洞察深度适中更深入,能更全面理解上下文和关系
Token 使用量较低较高,因多次 LLM 调用

常见问题与调优建议

1. 内存溢出 (OOM)

若构建过程中出现内存错误,可尝试减小 chunks.size 参数,或增加系统交换空间。对于大型数据集,建议分批处理。

2. 中文乱码

确保所有输入文件均为 UTF-8 编码。若仍出现乱码,检查 settings.yaml 中的 file_encoding 是否设置为 utf-8,并确认使用了 ChineseTextSplitter。

3. 响应质量不佳

  • 调整温度 (Temperature):降低 temperature 值(如 0.1~0.3)可使回答更稳定。
  • 优化 Prompt:检查中文 Prompt 是否保留了必要的指令约束,避免模型自由发挥过多。
  • 模型升级:若资源允许,可尝试使用更强的 GLM-4-Plus 或 GLM-4-Flash 版本。

结语

通过上述实践,我们成功构建了基于 GraphRAG 架构的中文文学检索系统。该系统不仅实现了对《红楼梦》全文的结构化理解,还展示了图神经网络在大模型应用中的潜力。未来可进一步探索多模态数据融合、动态知识更新以及垂直领域的微调训练,以提升系统的智能化水平。

对于开发者而言,掌握 GraphRAG 的配置与优化技巧,是构建高质量企业级知识库的关键一步。建议在正式部署前充分测试不同分块策略与模型组合,以达到最佳的性能与成本平衡。

目录

  1. 利用 GraphRAG + GLM-4 构建《红楼梦》全文的中文增强检索系统
  2. 引言
  3. 核心优势与技术选型
  4. 1. 为什么选择 GraphRAG?
  5. 2. 模型选择:GLM-4
  6. 环境搭建
  7. 1. 克隆项目
  8. 2. 安装依赖
  9. 3. 初始化配置
  10. 4. 准备数据
  11. 配置优化策略
  12. 1. 环境变量配置 (.env)
  13. 2. 主配置文件 (settings.yaml)
  14. 输入设置
  15. 分块策略优化 (Text Splitting)
  16. 模型调用配置
  17. 3. 提示词工程 (Prompt Engineering)
  18. 索引构建流程
  19. 构建过程说明
  20. 查询测试与分析
  21. 1. 全局查询 (Global Search)
  22. 2. 本地查询 (Local Search)
  23. 3. 两种查询模式对比
  24. 常见问题与调优建议
  25. 1. 内存溢出 (OOM)
  26. 2. 中文乱码
  27. 3. 响应质量不佳
  28. 结语
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Nginx 安全加固与 HTTPS 部署实战
  • VS Code Remote WSL 中 Copilot 代理设置与网络问题排查
  • Llama-3.2-3B Ollama 实战:小模型实现高质量响应方案
  • Linux 基础操作与 Java 项目部署实战
  • Git 在 Windows 系统下的安装与基础配置
  • 相干伊辛机在医疗与医疗 AI 领域的应用前景
  • 垂直领域大模型构建:RAG 与微调的权衡与实践
  • JavaScript 中 var、let、const 的核心区别与实战应用
  • 2026 年最新机器人系统架构与核心算法解析
  • DDPM 扩散概率模型详细解析及公式推导
  • 无人机光伏缺陷检测数据集:红外与可见光双模态配对数据
  • Flutter 三方库 webrtc_interface 的鸿蒙化适配指南
  • ComfyUI Photoshop 插件配置与 AI 绘画工作流实战
  • Qt 与 Web 混合编程:CEF 与 QCefView 深度解析
  • AnythingLLM:零成本搭建私人 ChatGPT,支持主流大模型
  • OpenClaw 多 Agent 与多飞书机器人配置
  • 基于 Spring Boot 与 Vue 的 Web 虚拟卡销售平台实现方案
  • 基于 Coze 构建专属 AI 应用:从智能体到 Web 部署实战
  • Python HTTP 请求库对比:requests、aiohttp 与 httpx
  • AI 大模型在航运业的应用前景、挑战与应对策略

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online