
GraphRAG 数据清洗完整指南5 个工具一次理顺你的知识图谱【免费下载链接】graphragA modular graph-based Retrieval-Augmented Generation (RAG) system项目地址: https://gitcode.com/GitHub_Trending/gr/graphrag抽完几百篇文档图谱里却长这样IBM、IBM、IBM 是三个节点还有一堆只连一条边的孤儿节点。GraphRAG 的数据清洗工具链就是干这个的文本规范化、字段校验、图结构优化在流水线源头把这些问题解决掉。几分钟看懂整条数据清洗链路从输入到输出整条链路分四个阶段完整数据流见 docs/index/default_dataflow.md输入读取器把 CSV、TXT、JSON、Parquet 等文件读入切分器按 token 数把长文档切成文本单元实体和关系抽取之后图结构层做最大连通分量过滤和弱边剔除最后输出层落盘 entities、relationships、社区报告等表。清洗动作就发生在中间这三层文本层先切块再净化TokenTextSplitter 按 token 数切块clean_str 把源文本里的 HTML 实体和控制字符清掉——这是实体抽取前的最后一道防线保证模型看到的文本没有乱码。字段层入表前先检查字段dict_has_keys_with_types 逐字段验证存在性和类型is_null 过滤 None 与 NaN——不合格的实体行在这里被提前挡掉后续工作流不用报错中断。图结构层只保留图的主体stable_lcc 过滤到最大连通分量并归一化节点名prune_graph 按阈值剔除低频节点和弱边——社区检测拿到的是一张去掉噪声的图。 逐个看清洗工具在哪、干什么clean_strHTML 转义与不可见字符解决什么问题源文本里常带amp;之类的实体写法和看不见的控制字符混进模型后抽取结果会跑偏。clean_str 先还原 HTML 实体、去掉首尾空白再删掉控制字符。源码位置packages/graphrag/graphrag/index/utils/string.py什么时候用到数据来自网络抓取、老数据库或从 HTML 转出来的文档。dict_has_keys_with_types字段存在性与类型校验解决什么问题CSV 这类结构化数据缺字段、字段类型不对时后续步骤会直接报错这个函数逐条检查字段存在且能转成目标类型。源码位置packages/graphrag/graphrag/index/utils/dicts.py什么时候用到加载结构化输入时或需要保证实体行字段完整再往下走时。is_null空值与 NaN 识别解决什么问题实体数据某一行看着完整字段实际是 None 或浮点 NaN入表后就是隐患。is_null 一次判断两者。源码位置packages/graphrag/graphrag/index/utils/is_null.py什么时候用到写入实体、关系行之前或排查某行为什么被跳过时。stable_lcc最大连通分量过滤与边去重解决什么问题抽出来的图常散落着不连通的碎片节点大小写差异还会让同一条边反向出现两次。stable_lcc 只保留最大连通分量把节点名大写归一化、统一边方向并去重且输入行顺序如何变化输出都稳定。源码位置packages/graphrag/graphrag/graphs/stable_lcc.py什么时候用到关系抽取之后、社区检测之前是流水线内的既定环节。prune_graph剔除低频节点与弱边解决什么问题只出现一次的节点、权重极小的边大多是噪声会稀释社区报告。prune_graph 按阈值剔除默认保留出现次数不低于 2 的节点、权重不低于最大值 40% 的边并默认移除只连一条边的自我节点。源码位置packages/graphrag/graphrag/index/workflows/prune_graph.py参数默认值见packages/graphrag/graphrag/config/defaults.py什么时候用到语料量大、图谱明显偏噪、想让社区报告更聚焦时。一份能直接跑的切分配置input: type: text storage: base_dir: input chunking: type: tokens size: 1200 overlap: 100 encoding_model: o200k_basesize: 1200单个块的最大 token 数仓库默认就是 1200模型上下文小就调低避免抽取提示词溢出。overlap: 100相邻块重叠 100 个 token默认值防止跨边界的概念被切成两半后认不出来。input.type数据格式支持 text/csv/json/jsonl/parquet/markitdown结构化格式可再指定 id、标题、正文各取哪一列。完整字段说明在 docs/config/yaml.md。 怎么判断清洗有没有效果仓库没有统一的基准测试数据这里以自带的 Operation Dulce 示例数据和默认参数为基准做定性判断三项指标对照指标清洗前典型状态清洗后典型状态重复实体大小写/实体编码差异同一实体被拆成多个节点归一化合并成一个孤立节点与不连通碎片混杂在图中干扰社区检测被最大连通分量过滤和剪枝剔除社区报告质量噪声多、表述发散实体引用清晰报告更聚焦判断方法同一批数据跑两遍对比输出表里的节点数量变化并抽查社区报告文本是否更聚焦。高频问题速查问题现象可能原因处理办法抽完实体后同一个东西出现多种写法节点名未归一化、HTML 实体差异确认 stable_lcc 归一化环节生效或先清洗源文本编码分块超出上下文导致抽取失败chunking.size 设置过大调低 size 到模型上下文以内实体表字段空值导致后续工作流报错源数据缺字段或 NaN用 dict_has_keys_with_types 和 is_null 前置过滤社区检测结果不稳定、小社区偏多孤立节点和弱边未处理启用 prune_graph按需设 lcc_only 只保留主体一句话总结文本层净化、字段层校验、图结构层剪枝流水线每一环各管一层的噪声图谱自然就干净了。可以拿仓库自带的 docs/data/operation_dulce/ 示例数据先跑一遍熟悉手感随着 GraphRAG 持续增强实体消歧和关系冲突检测这条链路只会越走越短。【免费下载链接】graphragA modular graph-based Retrieval-Augmented Generation (RAG) system项目地址: https://gitcode.com/GitHub_Trending/gr/graphrag创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考