本文将带您从零开始,用不到 50 行核心代码实现基于本地大模型 Llama 3.1 的 GraphRAG 应用开发。我们将整合 LangChain 工作流、Ollama 模型管理工具与 Neo4j 图数据库,构建一套支持实体关系挖掘与混合检索的增强生成系统,全程无需依赖云端 API,兼顾数据安全与开发效率。
一、先搞懂核心概念:什么是 GraphRAG?
传统 RAG(检索增强生成)依赖向量数据库的语义相似度匹配,容易丢失实体间的关联信息。而 GraphRAG(图检索增强生成) 则通过'节点 - 关系'的图结构建模数据,将分散的文本块转化为结构化知识网络,让 LLM 能基于实体关联进行推理,输出更具逻辑性的答案。
其核心价值在于:
- 结构化上下文:将'蒂姆·库克''苹果公司'等实体抽象为节点,用'担任 CEO'明确关系,形成可解释的知识图谱
- 关联推理能力:支持跨文档挖掘间接关系,例如通过'库克 - 领导 - 苹果 - 收购 - 特斯拉'的链路回答企业合作问题
混合检索优势:结合图数据库的实体关联查询与向量数据库的语义搜索,平衡精确性与泛化性

如上图所示,GraphRAG 的典型架构包含三大环节:首先通过知识图谱捕获向量块间的关联关系,为向量检索结果补充结构化实体信息;接着将融合后的上下文输入 LLM 进行处理;最终生成兼顾事实准确性与逻辑连贯性的响应。该架构在客户服务(故障排查链路)、语义搜索(学术关系挖掘)、个性化推荐(用户兴趣图谱)等场景中表现尤为突出。
二、环境搭建与代码实现
在本文中,我们将结合使用 LangChain、Llama 和 Ollama,以及 Neo4j 作为图数据库。我们将创建一个关于一个拥有多家餐厅的大型意大利家庭的信息图,所以这里有很多关系需要建模。
先利用 Ollama 拉取 llama3.1 8b 模型:

打开代码文件,来到 VS Code 中,你可以在左边看到我们将使用的多个文件。
配置运行 Neo4j 数据库
在进入代码之前,我们将设置 Neo4j。我为你创建了一个 Docker Compose 文件。所以我们将使用 neo4j 文件夹,里面有一个 jar 文件,这是我们创建图所需的插件。

要创建我们的数据库,只需运行 docker compose up:

这将设置所有内容,并且可以直接使用。可能需要几秒钟,之后你会看到数据库正在运行。























