GraphRAG+Ollama实现本地部署+neo4j可视化结果

news2024/11/20 20:01:03

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还是有一点问题,如果后续解决了会在文章中进行补充。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2244228.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ssm142视频点播系统设计与实现+vue(论文+源码)_kaic

毕 业 设 计(论 文) 题目:视频点播系统设计与实现 摘 要 互联网发展到如今也近20年之久,视频信息一直作为互联网发展中的一个重要角色在不断更新进化。视频信息从最初的文本显示到现在集文字、视频、音频与一体,成为一…

Python全方位技术教程

Python全方位技术教程 引言 Python是一种强大且易于学习的编程语言,因其简洁的语法和丰富的库而受到广泛欢迎。无论是数据分析、机器学习、Web开发,还是自动化脚本,Python都能胜任。本文将深入探讨Python的各个方面,帮助读者全面…

父组件提交时让各自的子组件验证表格是否填写完整

项目场景: 提示:这里简述项目相关背景: 父组件中有三个表格,表格中时输入框,有些输入框是必填的,在父组件提交时需要验证这三个表格的必填输入框中是否有没填写的。 原因分析: 提示&#xff1a…

基于SpringBoot+RabbitMQ完成应⽤通信

前言: 经过上面俩章学习,我们已经知道Rabbit的使用方式RabbitMQ 七种工作模式介绍_rabbitmq 工作模式-CSDN博客 RabbitMQ的工作队列在Spring Boot中实现(详解常⽤的⼯作模式)-CSDN博客作为⼀个消息队列,RabbitMQ也可以⽤作应⽤程…

从0-1训练自己的数据集实现火焰检测

随着工业、建筑、交通等领域的快速发展,火灾作为一种常见的灾难性事件,对生命财产安全造成了严重威胁。为了提高火灾的预警能力,减少火灾损失,火焰检测技术应运而生,成为火灾监控和预防的有效手段之一。 传统的火灾检测方法,如烟雾探测器、温度传感器等,存在响应时间慢…

计算机网络 (3)计算机网络的性能

一、计算机网络性能指标 速率: 速率是计算机网络中最重要的性能指标之一,它指的是数据的传送速率,也称为数据率(Data Rate)或比特率(Bit Rate)。速率的单位是比特/秒(bit/s&#xff…

豆包MarsCode

#豆包MarsCode上新workspace# 1. 首先,个人所写的代码,会提交到gitee或者阿里的云效仓库,但是想在数据仓库导入的时候,只有github的仓库,希望可以加入国内的数据仓库 2. 加载不流畅,在使用网页版的时候&…

物联网智能技术的深入探讨与案例分析

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

C语言零基础入门

一、输入输出 &#xff08;1&#xff09;scanf scanf 是C语言中的一个标准库函数&#xff0c;用于从标准输入&#xff08;通常是键盘&#xff09;读取数据。scanf 函数定义在 <stdio.h> 头文件中。 #include <stdio.h>int main(void) {//读取整数 int num;print…

Jmeter数据库压测之达梦数据库的配置方法

目录 1、概述 2、测试环境 3、数据库压测配置 3.1 安装jmeter 3.2 选择语言 3.3 新建测试计划 3.4 配置JDBC连接池 3.5 配置线程组 3.6 配置测试报告 3.7 执行测试 1、概述 Jmeter是Apache组织开发的基于Java的压力测试工具&#xff0c;用于对软件做压力测试。 它最…

golang开发一个海盗王的登录更新器

前段时间&#xff0c;用golang配合界面库govcl开发一个海盗王的登陆更新器&#xff0c;实现多区注册和文件更新分离不同服务器等新功能。 由于govcl没有更换皮肤的功能&#xff0c;界面都是默认&#xff0c;不好看。 找了很多go语言的gui库&#xff0c;都没有符合要求的。 后来…

好用的js组件库

lodash https://www.lodashjs.com/https://www.lodashjs.com/ uuid 用于生成随机数&#xff0c;常用于生成id标识 GitHub - uuidjs/uuid: Generate RFC-compliant UUIDs in JavaScripthttps://github.com/uuidjs/uuid dayjs 常用于时间的处理 安装 | Day.js中文网 (fenxi…

ElasticSearch学习篇17_《检索技术核心20讲》最邻近检索-局部敏感哈希、乘积量化PQ思路

目录 场景在搜索引擎和推荐引擎中&#xff0c;对相似文章去重是一个非常重要的环节&#xff0c;另外是拍照识花、摇一摇搜歌等场景都可以使用它快速检索。 基于敏感性哈希的检索更擅长处理字面上的相似而不是语义上的相似。 向量空间模型ANN检索加速思路 局部敏感哈希编码 随…

针对git、giteeVSCode连接的使用 || Live Share插件使用

1.下载git 链接 打开终端&#xff0c;桌面鼠标右键 2.配置密钥 登录gitee。 设置密钥 查看官方文档 跟着教程 复制最后的输出进行密钥添加 验证是否添加成功 3.创建&连接远程仓库 创建仓库 git终端进行配置 远程仓库克隆到本地 桌面终端clone,克隆他人|自己的仓库到本地…

【Pikachu】XML外部实体注入实战

若天下不定&#xff0c;吾往&#xff1b;若世道不平&#xff0c;不回&#xff01; 1.XXE漏洞实战 首先写入一个合法的xml文档 <?xml version "1.0"?> <!DOCTYPE gfzq [<!ENTITY gfzq "gfzq"> ]> <name>&gfzq;</name&…

【vmware+ubuntu16.04】ROS学习_博物馆仿真克隆ROS-Academy-for-Beginners软件包处理依赖报错问题

首先安装git 进入终端&#xff0c;输入sudo apt-get install git 安装后&#xff0c;创建一个工作空间名为tutorial_ws&#xff0c; 输入 mkdir tutorial_ws#创建工作空间 cd tutorial_ws#进入 mkdir src cd src git clone https://github.com/DroidAITech/ROS-Academy-for-Be…

【澜舟科技-注册/登录安全分析报告】

前言 由于网站注册入口容易被机器执行自动化程序攻击&#xff0c;存在如下风险&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露&#xff0c;不符合国家等级保护的要求。短信盗刷带来的拒绝服务风险 &#xff0c;造成用户无法登陆、注册&#xff0c;大量收到垃圾短信的…

thinkphp6 --数据库操作 增删改查

一、数据库连接配置 如果是本地测试&#xff0c;它会优先读取 .env 配置&#xff0c;然后再读取 database.php 的配置&#xff1b; 如果禁用了 .env 配置&#xff0c;则会读取数据库连接的默认配置&#xff1a; # .env文件&#xff0c;部署服务器&#xff0c;请禁用我 我们可以…

Excel数据动态获取与映射

处理代码 动态映射 动态读取 excel 中的数据&#xff0c;并通过 json 配置 指定对应列的值映射到模板中的什么字段上 private void GetFreightFeeByExcel(string filePath) {// 文件名需要以快递公司命名 便于映射查询string fileName Path.GetFileNameWithoutExtension(fi…

Python学习29天

二分查找 # 定义函数冒泡排序法从大到小排列 def bbble_sort(list):# i控制排序次数for i in range(len(list) - 1):# j控制每次排序比较次数for j in range(len(list) - 1 - i):if list[j] < list[j 1]:list[j], list[j 1] list[j 1], list[j] # 定义二分查找函数 def…