基于知识图谱与大模型的个人知识库构建方案
如果说思维导图是给人看的,那么知识图谱就是给计算机看的。在人工智能领域,如何有效地管理和利用非结构化数据一直是核心挑战之一。
1. 大语言模型与 RAG 技术基础
大型语言模型(LLM, Large Language Model)是一种基于 Transformer 架构的神经网络,通过海量数据训练来识别和生成文本。然而,LLM 存在上下文窗口限制,无法一次性处理超长文档。因此,需要对文档进行切割(Splitting)。
1.1 文档切片策略
文档会被切割成小的片段(Chunk),片段的大小可以根据需求定义。为了保持上下文的连续性,片段之间通常保留部分重叠(Overlap)。例如,设置 Chunk Size 为 500 tokens,Overlap 为 50 tokens,这样可以确保关键信息不被切断。
1.2 检索增强生成(RAG)
文档片段会被嵌入(Embedding)并保存在向量数据库中,作为知识库。在大语言模型的问答系统中:
- 输入的问题首先被转换为向量。
- 在向量数据库中进行相似度检索,找出与问题最相关的片段。
- 将片段和问题一起输入给大语言模型。
- LLM 根据上下文生成答案。
相比于对大型语言模型进行微调(Fine Tuning),RAG 技术在知识库应用领域具有显著优势:
- 增量学习:无需重新训练模型即可更新知识库。
- 成本效益:避免了昂贵的重训过程。
- 泛化能力:能够跨领域检索和整合信息。
2. 微软的大招:GraphRAG
随着知识库容量增加,传统 RAG 面临检索效率降低、上下文匹配困难、信息冗余等问题。微软提出了 GraphRAG,即结合知识图谱和图机器学习技术,从非结构化文本中提取结构化数据,增强 LLM 的理解和推理能力。
可以将 RAG 比作在大海中捞针,而知识图谱则如同穿针引线,将所有片段巧妙地串联在一起,形成全局视野。
3. 什么是知识图谱
知识图谱(KG, Knowledge Graph)是一种结构化的语义知识库,用于描述物理世界中的概念及其相互关系。它通过将复杂的数据转化为简单、清晰的'实体 - 关系 - 实体'三元组,实现知识的快速响应和推理。例如,'中国 - 首都 - 北京'就是一个简单的三元组。
知识图谱广泛应用于智能搜索、智能问答、个性化推荐等领域。其检索逻辑基于节点(Node)和边(Edge)的关系遍历,而非单纯的向量相似度。
4. GraphRAG 实践指南
4.1 安装与配置
GraphRAG 的安装需参考官方文档。配置时需注意模型选择,建议使用 GPT-4o-mini 等性价比高的模型以降低 API 成本。
4.2 索引流程
导入数据后,系统会执行以下工作流:
- 加载输入文件。
- 创建基础文本单元(Text Units)。
- 提取实体(Entities)。
- 生成摘要实体(Summarized Entities)。
- 构建基础实体图(Entity Graph)。
- 创建最终节点和关系。
- 生成社区报告(Community Reports)。
4.3 查询示例
使用命令行工具进行全局搜索:
python -m graphrag.query --root ./GraphRAG-test --method global "介绍一下这些文章的作者"
系统会读取配置文件,连接 LLM 客户端,并返回包含引用来源的回答。
4.4 图谱可视化
GraphRAG 的输出包含 .parquet 文件,这是一种高效的列式存储格式。可以通过以下方式生成知识图谱:
- 使用微软提供的 Notebook 导入 Neo4j。
- 将 Parquet 转为 CSV 后导入 Neo4j。


