GraphRAG+Ollama实现本地部署+neo4j可视化结果
- 前言
- 一、GraphRAG+Ollama本地部署
- 补充说明
 
- 二、neo4j可视化GraphRAG
- 1.windows安装neo4j
- 2.启动neo4j服务
- 3.进入neo4j的webui界面
- 4.使用neo4J可视化GraphRAG索引
- 5.neo4j不删除旧数据,新建一个数据库
 
- 总结
前言
最近部署微软的graphrag踩了很多坑,记录一下完整的流程,给后来者一些参考。
一、GraphRAG+Ollama本地部署
首先说明,本篇文章默认为windows系统,同时已经在本地安装好Anaconda和Ollama服务,如果没有请先进行部署工作。
GraphRAG+Ollama的本地部署,具体内容参考链接1:傻瓜操作:GraphRAG、Ollama 本地部署及踩坑记录和链接2:微软开源GraphRAG的使用教程(最全,非常详细)。
补充说明
1、graphrag中所用的模型,需要在Ollama中下载好,否则无法使用。
 
2、部署graphrag遇到的绝大部分问题,例如❌ Errors occurred during the pipeline run, see logs for more details.等,都是代码没有修改好,需要修改的部分见链接1,下面是一些补充说明。
在graphrag目录下的settings.yaml中,修改基础的model和api_base,需要注意的是llm中api_base为v1
 
修改embedding模型的model和api_base,需要注意的是embedding中,api_base最后是api
 
同时,llm和embedding的模型需要是ollama中部署好的,见补充说明1。
3、修改.env文件,删除源文件,改成下面这个
GRAPHRAG_API_KEY=ollama
GRAPHRAG_CLAIM_EXTRACTION_ENABLED=True
4、修改源码,需要注意文件都在graphrag目录下进行修改。具体修改内容见链接1。
 我的是C:\Users\zhu\graphrag\graphrag\llm\openai\openai_embeddings_llm.py,需要引入包import ollama,model为embedding模型。
 
        args = {
            "model": self.configuration.model,
            **(kwargs.get("model_parameters") or {}),
        }
        # embedding = await self.client.embeddings.create(
        #     input=input,
        #     **args,
        # )
        # return [d.embedding for d in embedding.data]
        embedding_list = []
        for inp in input:
            embedding = ollama.embeddings(model="nomic-embed-text", prompt=inp)
            embedding_list.append(embedding["embedding"])
        return embedding_list
和C:\Users\zhu\graphrag\graphrag\query\llm\oai\embedding.py,同样需要import ollama,模型为embedding模型。
 
        for chunk in token_chunks:
            try:
                #embedding, chunk_len = self._embed_with_retry(chunk, **kwargs)
                embedding = ollama.embeddings(model="nomic-embed-text", prompt=chunk)['embedding']
                chunk_len = len(chunk)
                chunk_embeddings.append(embedding)
                chunk_lens.append(chunk_len)
            # TODO: catch a more specific exception
            except Exception as e:  # noqa BLE001
                self._reporter.error(
                    message="Error embedding chunk",
                    details={self.__class__.__name__: str(e)},
                )
                continue
        # chunk_embeddings = np.average(chunk_embeddings, axis=0, weights=chunk_lens)
        # chunk_embeddings = chunk_embeddings / np.linalg.norm(chunk_embeddings)
        # return chunk_embeddings.tolist()
        return chunk_embeddings
如果这几个文件配置没问题,就能够成功构建graphrag,出现🚀 All workflows completed successfully。
5、如果构建知识图谱的过程中报错,可以尝试更换llm模型,embedding模型和调整超参数,能解决大部分问题。具体如下:

 
6、如果出现ValueError: Columns must be same length as key
 在settings.yaml中,将chunk size 调到300(调小就行),相关链接: Clustering crashes: ValueError(“Columns must be same length as key”) - too little input text maybe?
7、如果在执行 Global 询问时出现报错,回复:I am sorry but I am unable to answer this question given the provided data
raise JSONDecodeError(“Expecting value”, s, err.value) from None
 json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
解决方法:在settings.yaml找到global_search,调小你的max_tokens与data_max_tokens:
 
实测有效,相关链接:GraphRAG:LLM之本地部署GraphRAG(GLM-4+Xinference的embedding模型)(附带ollma部署方式)
8、如果在执行local search时出现ArrowInvalid: only handle 1-dimensional arrays错误,
没解决,如果有解决的大佬可以评论一下
二、neo4j可视化GraphRAG
1.windows安装neo4j
具体操作见链接:【SOP】Windows下安装Neo4j流程
2.启动neo4j服务
在cmd中启动neo4j服务,代码如下:
neo4j console
3.进入neo4j的webui界面
浏览器进入网址,http://localhost:7474
4.使用neo4J可视化GraphRAG索引
具体操作见链接:喂饭教程!全网首发Neo4J可视化GraphRAG索引
使用jupyter notebook运行代码,如果出现py2neo.database.work.ClientError: [Procedure.ProcedureNotFound],参考链接: py2neo.database.work.ClientError: [Procedure.ProcedureNotFound]。不用修改neo4j.conf文件(可以尝试)。
5.neo4j不删除旧数据,新建一个数据库
如果你想看多个文件生成的图谱,可以新建一个数据库进行查看。具体操作见链接:Neo4j不删除旧数据,如何新建一个数据库
总结
目前使用graphrag还是有一点问题,如果后续解决了会在文章中进行补充。



















