1. 环境准备搭建GraphRAGOllama的基础舞台在开始构建本地知识图谱之前我们需要先准备好必要的软件环境。这个过程就像装修房子前要准备好水泥、砖块和工具一样。我建议按照以下步骤操作可以避免80%的常见安装问题。首先确保你的Windows系统已经安装了Anaconda。这个Python环境管理工具能帮我们创建独立的开发环境避免各种依赖冲突。安装完成后打开Anaconda Prompt执行以下命令创建新环境conda create -n graphrag python3.10 conda activate graphrag接下来是安装Ollama服务。Ollama相当于一个本地模型仓库让我们能方便地下载和运行各种开源大模型。去官网下载Windows版本的安装包双击运行即可。安装完成后在命令行测试是否正常运行ollama list如果看到空列表输出说明安装成功。现在我们可以下载需要的模型了。根据我的实测对于GraphRAG项目推荐使用以下两个模型ollama pull llama3 ollama pull nomic-embed-text第一个是通用语言模型第二个是专门用于生成文本嵌入向量的模型。下载过程可能会比较耗时取决于你的网络速度。我遇到过下载中断的情况这时候可以尝试更换网络环境或者使用ollama pull --insecure命令。2. GraphRAG配置与常见问题解决现在进入最关键的配置环节。我们需要从GitHub克隆GraphRAG的源代码git clone https://github.com/microsoft/graphrag cd graphrag打开项目目录下的settings.yaml文件这是整个项目的控制中心。找到llm和embedding部分修改为以下配置llm: provider: ollama model: llama3 api_base: http://localhost:11434/v1 embedding: provider: ollama model: nomic-embed-text api_base: http://localhost:11434/api这里有几个容易踩坑的地方api_base的路径中llm部分必须以/v1结尾而embedding部分必须是/api模型名称必须与Ollama中下载的完全一致端口号11434是Ollama的默认端口如果修改过要保持一致接下来处理.env文件。删除原有的内容替换为GRAPHRAG_API_KEYollama GRAPHRAG_CLAIM_EXTRACTION_ENABLEDTrue这个配置告诉GraphRAG我们使用的是本地Ollama服务而不是OpenAI的API。3. 代码修改与调试技巧现在我们需要修改几处源代码让GraphRAG能正确调用本地模型。找到graphrag/llm/openai/openai_embeddings_llm.py文件做如下修改import ollama # 新增导入 async def embed_text(self, input: List[str], **kwargs) - List[List[float]]: embedding_list [] for inp in input: embedding ollama.embeddings(modelnomic-embed-text, promptinp) embedding_list.append(embedding[embedding]) return embedding_list同样地修改graphrag/query/llm/oai/embedding.py文件import ollama # 新增导入 def _embed_chunks(self, token_chunks: List[str], **kwargs) - List[List[float]]: chunk_embeddings [] for chunk in token_chunks: try: embedding ollama.embeddings(modelnomic-embed-text, promptchunk)[embedding] chunk_embeddings.append(embedding) except Exception as e: print(fEmbedding error: {str(e)}) continue return chunk_embeddings完成这些修改后可以尝试运行GraphRAG了。如果遇到ValueError: Columns must be same length as key错误这是文本分块大小设置不当导致的。打开settings.yaml找到chunk_size参数建议设置为300processing: chunk_size: 300另一个常见问题是全局查询时报错JSONDecodeError。这时需要调整settings.yaml中的以下参数global_search: max_tokens: 2000 data_max_tokens: 10000这些值可以根据你的硬件配置适当调整。如果GPU内存较小建议降低max_tokens的值。4. Neo4j可视化实战操作知识图谱构建完成后我们需要Neo4j来进行可视化展示。首先去Neo4j官网下载Desktop版本安装过程很简单一直点击下一步即可。安装完成后启动Neo4j创建一个新的本地数据库。记住设置的用户名和密码默认通常是neo4j/neo4j。然后在命令行启动服务neo4j console服务启动后打开浏览器访问http://localhost:7474就能看到Neo4j的Web界面了。首次登录会要求修改密码建议设置一个强密码并妥善保存。现在我们需要将GraphRAG生成的数据导入Neo4j。在Jupyter Notebook中运行以下代码from py2neo import Graph import pandas as pd # 连接Neo4j graph Graph(bolt://localhost:7687, auth(neo4j, 你的密码)) # 读取GraphRAG生成的CSV文件 nodes pd.read_csv(graphrag/output/nodes.csv) relationships pd.read_csv(graphrag/output/relationships.csv) # 导入节点 for _, row in nodes.iterrows(): graph.run( CREATE (n:Node {id: $id, label: $label, properties: $properties}), idrow[id], labelrow[label], propertiesrow[properties] ) # 导入关系 for _, row in relationships.iterrows(): graph.run( MATCH (a:Node {id: $source}), (b:Node {id: $target}) CREATE (a)-[r:RELATION {type: $type}]-(b), sourcerow[source], targetrow[target], typerow[type] )如果遇到Procedure.ProcedureNotFound错误可能是因为Neo4j版本不兼容。这时可以尝试在Neo4j Desktop中创建一个新的数据库实例选择4.x版本而不是最新的5.x版本。5. 高级技巧与性能优化当一切运行正常后我们可以考虑进一步优化系统性能。根据我的实测经验以下调整能显著提升响应速度调整Ollama参数 在Ollama的配置文件中通常位于~/.ollama/config.json增加以下参数{ num_gpu_layers: 40, main_gpu: 0, tensor_split: 0.9 }这些参数会根据你的GPU显存自动分配资源。我的RTX 3090上这样设置能让推理速度提升3倍。Neo4j索引优化 在Neo4j中为常用查询字段创建索引可以大幅加快查询速度CREATE INDEX node_id_index FOR (n:Node) ON (n.id); CREATE INDEX node_label_index FOR (n:Node) ON (n.label);GraphRAG缓存设置 在settings.yaml中启用缓存可以避免重复计算caching: enabled: true path: ./cache ttl: 86400 # 缓存保留时间(秒)批量处理模式 当处理大量文档时可以启用批量模式减少内存占用processing: batch_size: 10 parallel_workers: 4如果需要在不同项目间切换记得在Neo4j中创建新的数据库而不是复用旧的数据库。我遇到过因为残留数据导致的关系混乱问题后来养成了每个项目都用全新数据库的习惯。
从零到一:手把手搭建GraphRAG+Ollama本地知识图谱并实现Neo4j可视化
1. 环境准备搭建GraphRAGOllama的基础舞台在开始构建本地知识图谱之前我们需要先准备好必要的软件环境。这个过程就像装修房子前要准备好水泥、砖块和工具一样。我建议按照以下步骤操作可以避免80%的常见安装问题。首先确保你的Windows系统已经安装了Anaconda。这个Python环境管理工具能帮我们创建独立的开发环境避免各种依赖冲突。安装完成后打开Anaconda Prompt执行以下命令创建新环境conda create -n graphrag python3.10 conda activate graphrag接下来是安装Ollama服务。Ollama相当于一个本地模型仓库让我们能方便地下载和运行各种开源大模型。去官网下载Windows版本的安装包双击运行即可。安装完成后在命令行测试是否正常运行ollama list如果看到空列表输出说明安装成功。现在我们可以下载需要的模型了。根据我的实测对于GraphRAG项目推荐使用以下两个模型ollama pull llama3 ollama pull nomic-embed-text第一个是通用语言模型第二个是专门用于生成文本嵌入向量的模型。下载过程可能会比较耗时取决于你的网络速度。我遇到过下载中断的情况这时候可以尝试更换网络环境或者使用ollama pull --insecure命令。2. GraphRAG配置与常见问题解决现在进入最关键的配置环节。我们需要从GitHub克隆GraphRAG的源代码git clone https://github.com/microsoft/graphrag cd graphrag打开项目目录下的settings.yaml文件这是整个项目的控制中心。找到llm和embedding部分修改为以下配置llm: provider: ollama model: llama3 api_base: http://localhost:11434/v1 embedding: provider: ollama model: nomic-embed-text api_base: http://localhost:11434/api这里有几个容易踩坑的地方api_base的路径中llm部分必须以/v1结尾而embedding部分必须是/api模型名称必须与Ollama中下载的完全一致端口号11434是Ollama的默认端口如果修改过要保持一致接下来处理.env文件。删除原有的内容替换为GRAPHRAG_API_KEYollama GRAPHRAG_CLAIM_EXTRACTION_ENABLEDTrue这个配置告诉GraphRAG我们使用的是本地Ollama服务而不是OpenAI的API。3. 代码修改与调试技巧现在我们需要修改几处源代码让GraphRAG能正确调用本地模型。找到graphrag/llm/openai/openai_embeddings_llm.py文件做如下修改import ollama # 新增导入 async def embed_text(self, input: List[str], **kwargs) - List[List[float]]: embedding_list [] for inp in input: embedding ollama.embeddings(modelnomic-embed-text, promptinp) embedding_list.append(embedding[embedding]) return embedding_list同样地修改graphrag/query/llm/oai/embedding.py文件import ollama # 新增导入 def _embed_chunks(self, token_chunks: List[str], **kwargs) - List[List[float]]: chunk_embeddings [] for chunk in token_chunks: try: embedding ollama.embeddings(modelnomic-embed-text, promptchunk)[embedding] chunk_embeddings.append(embedding) except Exception as e: print(fEmbedding error: {str(e)}) continue return chunk_embeddings完成这些修改后可以尝试运行GraphRAG了。如果遇到ValueError: Columns must be same length as key错误这是文本分块大小设置不当导致的。打开settings.yaml找到chunk_size参数建议设置为300processing: chunk_size: 300另一个常见问题是全局查询时报错JSONDecodeError。这时需要调整settings.yaml中的以下参数global_search: max_tokens: 2000 data_max_tokens: 10000这些值可以根据你的硬件配置适当调整。如果GPU内存较小建议降低max_tokens的值。4. Neo4j可视化实战操作知识图谱构建完成后我们需要Neo4j来进行可视化展示。首先去Neo4j官网下载Desktop版本安装过程很简单一直点击下一步即可。安装完成后启动Neo4j创建一个新的本地数据库。记住设置的用户名和密码默认通常是neo4j/neo4j。然后在命令行启动服务neo4j console服务启动后打开浏览器访问http://localhost:7474就能看到Neo4j的Web界面了。首次登录会要求修改密码建议设置一个强密码并妥善保存。现在我们需要将GraphRAG生成的数据导入Neo4j。在Jupyter Notebook中运行以下代码from py2neo import Graph import pandas as pd # 连接Neo4j graph Graph(bolt://localhost:7687, auth(neo4j, 你的密码)) # 读取GraphRAG生成的CSV文件 nodes pd.read_csv(graphrag/output/nodes.csv) relationships pd.read_csv(graphrag/output/relationships.csv) # 导入节点 for _, row in nodes.iterrows(): graph.run( CREATE (n:Node {id: $id, label: $label, properties: $properties}), idrow[id], labelrow[label], propertiesrow[properties] ) # 导入关系 for _, row in relationships.iterrows(): graph.run( MATCH (a:Node {id: $source}), (b:Node {id: $target}) CREATE (a)-[r:RELATION {type: $type}]-(b), sourcerow[source], targetrow[target], typerow[type] )如果遇到Procedure.ProcedureNotFound错误可能是因为Neo4j版本不兼容。这时可以尝试在Neo4j Desktop中创建一个新的数据库实例选择4.x版本而不是最新的5.x版本。5. 高级技巧与性能优化当一切运行正常后我们可以考虑进一步优化系统性能。根据我的实测经验以下调整能显著提升响应速度调整Ollama参数 在Ollama的配置文件中通常位于~/.ollama/config.json增加以下参数{ num_gpu_layers: 40, main_gpu: 0, tensor_split: 0.9 }这些参数会根据你的GPU显存自动分配资源。我的RTX 3090上这样设置能让推理速度提升3倍。Neo4j索引优化 在Neo4j中为常用查询字段创建索引可以大幅加快查询速度CREATE INDEX node_id_index FOR (n:Node) ON (n.id); CREATE INDEX node_label_index FOR (n:Node) ON (n.label);GraphRAG缓存设置 在settings.yaml中启用缓存可以避免重复计算caching: enabled: true path: ./cache ttl: 86400 # 缓存保留时间(秒)批量处理模式 当处理大量文档时可以启用批量模式减少内存占用processing: batch_size: 10 parallel_workers: 4如果需要在不同项目间切换记得在Neo4j中创建新的数据库而不是复用旧的数据库。我遇到过因为残留数据导致的关系混乱问题后来养成了每个项目都用全新数据库的习惯。