GraphRAG 的索引构建是一个多阶段的离线流水线,可通过命令行工具或模块化 Python 工作流执行。
1. 文本切分
- 将原始文档切分为文本块(TextUnit),通常控制在数百到一千余 token 的粒度
- 切分时会设置适当重叠,以保证跨边界的实体与关系不被遗漏
2. 实体与关系抽取
- 大语言模型逐文本块识别实体、关系与声明,输出结构化图元素
- 可通过领域特定的少样本示例提升专业领域的抽取精度
3. 图构建与聚合
- 将抽取出的实体与关系聚合为统一的加权知识图谱,完成实体去重与规范归并
4. 社区检测与摘要生成
- 使用 Leiden 算法对图谱进行层级化社区划分
- 为每个社区生成自然语言摘要,形成最终的可查询索引
5. 索引产物存储
- 实体、关系、文本块、社区报告等结果以可检查的表格形式存储
- 文本与实体的向量嵌入被索引到向量数据库中,供相似度检索使用