玩转大语言模型——使用graphRAG+Ollama构建知识图谱

系列文章目录

玩转大语言模型——ollama导入huggingface下载的模型
玩转大语言模型——langchain调用ollama视觉多模态语言模型


文章目录

  • 系列文章目录
  • 前言
  • 下载和安装
    • 用下载项目的方式下载并安装
    • 用pip方式下载并安装
  • 生成知识图谱
    • 初始化文件夹
    • 修改模型配置
    • 修改知识库生成配置
    • 创建索引
  • 搜索


前言

GraphRAG是微软开发并开源的一种图基检索增强生成(Graph-based Retrieval Augmented Generation)框架。GraphRAG结合了知识图谱(Knowledge Graph)和大型语言模型(LLM)的技术优势,旨在提升信息处理和问答能力。其基本原理在于,通过知识图谱从非结构化文本中提取结构化信息,并利用大型语言模型的生成能力,为用户提供准确、全面的回答。在本篇中将介绍如何使用GraphRAG结合大模型构建知识图谱。

下载和安装

下载过程分为两种,一种是下载项目,另外一种是直接使用pip下载,两种用法最后的效果是一致的,如果不需要修改源码,可以选择pip方式下载,这样比较方便。但在本篇中,两种都会提到,读者可以根据自己喜好选择。


用下载项目的方式下载并安装

下载
项目地址:https://github.com/microsoft/graphrag
在这里插入图片描述
为了方便大家下载,这里把git下载方式直接放到这里,直接执行就好。
安装

git clone https://github.com/microsoft/graphrag.git   

切换到graphrag的下载目录,配置好虚拟环境之后,在命令行执行以下命令安装poetry资源包管理工具及相关依赖.

pip install poetry 
poetry install

用pip方式下载并安装

没错,用pip方式下载只需要执行一个命令行就可以了

pip install graphrag

生成知识图谱

初始化文件夹

首先在项目文件夹下新建一个文件夹,笔者新建的文件夹为./ragtest,如果是用项目方式下载,直接在项目下新建,如果是使用pip方式下载的,新建一个项目在新建的项目里新建文件夹。
再在./ragtest文件夹下新建一个input文件夹,将要生成知识图谱的文件放到input文件夹中。注意只能是txt文件,编码格式必须为 utf-8。

然后在命令行执行以下命令

graphrag init --root ./ragtest

执行命令后会生成配置文件settings.yaml和提示词模板prompts


修改模型配置

在修改之前我们首先需要下载相关模型,在本篇中使用的是Ollama
使用Ollama下载语言模型mistral和编码模型nomic-embed-text

ollama pull mistral
ollama pull nomic-embed-text

下载完可以使用ollama list查看一下有没有下载成功

不过当前的模型并不能直接拿来使用,我们需要修改一下,不如可能会出现一些奇怪的错误,笔者遇到的问题是在生成entities时识别不到entity。

ollama show --modelfile mistral:latest > Modelfile

打开Modelfile文件,在PARAMETER后面这里添加配置。

PARAMETER num_ctx 10000

然后使用ollama根据配置创建新的模型

ollama create mistral:10k -f Modelfile

修改知识库生成配置

因为我们构建知识库的过程中需要使用到大语言模型和embedding模型,所有需要将设置修改为我们所使用的模型。
打开初始化文件目录,笔者的目录是./ragtest/settings.yaml,修改以下两部分,将llm.model修改为mistral:10k,将llm.api_base修改为http://localhost:11434/v1,将embeddings.llm.model修改为nomic-embed-text,将embeddings.api_base修改为http://localhost:11434/v1

llm:api_key: ${GRAPHRAG_API_KEY}type: openai_chat # or azure_openai_chatmodel: mistral:10kmodel_supports_json: false # recommended if this is available for your model.# max_tokens: 4000# request_timeout: 180.0api_base: http://localhost:11434/v1embeddings:## parallelization: override the global parallelization settings for embeddingsasync_mode: threaded # or asynciollm:api_key: ${GRAPHRAG_API_KEY}type: openai_embedding # or azure_openai_embeddingmodel: nomic-embed-textapi_base:  http://localhost:11434/v1

创建索引

构建索引的过程就是构建知识图谱的过程,同样的,读者需要将笔者的路径替换为自己的路径。

graphrag index --root ./ragtest

如果运行显示如下说明创建成功
在这里插入图片描述

搜索

查询分为局部搜索(Local Search)和全局搜索(Global Search)。当用户的问题需要理解输入文档中提到的特定实体,需要详细了解某个实体及其相关信息时,局部搜索非常有效。而全局搜索在跨数据集进行信息总结上要优于局部搜索。
局部搜索

graphrag query --root ./ragtest --method local --query "要查询的问题"

全局搜索

graphrag query --root ./ragtest --method global --query "主要内容是什么"

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

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

相关文章

[AUTOSAR通信篇] - AutoSAR通信架构

点击订阅专栏不迷路 文章目录 一、通信驱动二、通信硬件抽象三、通信服务3.1 CAN通信协议栈3.2 J1939通信协议栈3.3 LIN通信协议栈3.4 FlexRay通信协议栈3.5 ETH通信协议栈 返回总目录 先看一张图,这是整个BSW层可以提供的服务,今天我们重点来讲一讲这个…

mac配置 iTerm2 使用lrzsz与服务器传输文件

mac配置 1. 安装支持rz和sz命令的lrzsz brew install lrzsz2. 下载iterm2-send-zmodem.sh和iterm2-recv-zmodem.sh两个脚本 # 克隆仓库 git clone https://github.com/aikuyun/iterm2-zmodem ~/iterm2-zmodem# 进入到仓库目录 cd ~/iterm2-zmodem# 设置脚本文件可执行权限 c…

两级式三相光伏并网逆变器Matlab/Simulink仿真模型

忘记更新最经典的光伏并网仿真模型了,作为包含经典的MPPT和并网恒功率因素的双闭环控制模型,也是很多相关专业学生的入门研究内容,光伏并网模型三相的和单相都有。 其中三相光伏并网逆变器有大功率和小功率的两种,之前早在硕士期…

人工智能之深度学习_[2]-PyTorch入门

PyTorch 1.PyTorch简介 1.1 什么是PyTorch PyTorch是一个基于Python的科学计算包 PyTorch安装 pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simplePyTorch一个基于Python语言的深度学习框架,它将数据封装成张量(Tensor)来进行…

ASP.NET Core - 配置系统之配置添加

ASP.NET Core - 配置系统之配置添加 2. 配置添加 2. 配置添加 配置系统可以读取到配置文件中的信息,那必然有某个地方可以将配置文件添加到配置系统中。之前的文章中讲到 ASP.NET Core 入口文件中,builder(WebApplicationBuilder 对象) 中有一个 Config…

GIS大模型:交通领域方面的应用

文章目录 1. 实时交通流量预测:2. 动态信号灯控制:3. 交通流模式识别:4. 交通事故预警:5. 路径推荐与导航优化:6. 长期交通规划:7. 事件影响分析:8. 智能停车管理: 大模型在交通流量…

Redis复制(replica)

Redis主从复制 [Redis主从复制](replica)是一个多Redis实例进行数据同步的过程,其中一个实例是主实例(Master),其他实例是从实例(Slave)。主实例负责处理命令请求,而从实…

零基础构建最简单的 Tauri2.0 桌面项目 Star 88.4k!!!

目录 预安装环境 安装nodejs windows下安装 linux下安装 nodejs常遇问题 安装C环境 介绍 下载 安装 安装Rust语言 Tauri官网 安装 vscode 安装 rust 插件 安装 Tauri 插件 运行成果 预安装环境 安装nodejs windows下安装 NodeJs_安装及下载_哔哩哔哩_bilibi…

wproxy客户端安装,代理返回JSON

文章目录 一、wproxy基础信息二、使用wproxy客户端代理返回参数 一、wproxy基础信息 https://github.com/avwo/whistle github https://wproxy.org/whistle/quickstart.html 快速上手 Whistle 是基于 Node.JS 实现的操作简单、功能强大的跨平台抓包调试工具,可作为…

小识MySQL中的OLTP和OLAP

前记:大家带着挑剔的眼光,多多批判和指正!🙏 MySQL中的OLTP和OLAP是两种不同的数据库操作模式,它们各自针对不同的应用场景和需求。 OLTP(Online Transaction Processing,联机事务处理&#x…

C++没有Y Combinator?使用 C++ 实现 Y Combinator(中英双语)

C 中并没有直接内置的 Y Combinator,但通过现代 C 特性(如 lambda 表达式 和 std::function),我们可以实现一个类似 Y Combinator 的功能。 下面我们来详细讲解如何在 C 中实现 Y Combinator。 使用 C 实现 Y Combinator 目标 …

Ubuntu本地部署网站

目录 1.介绍 2.安装apache 3.网页升级 1.介绍 网站其实就相当于一个文件夹,用域名访问一个网页,就相当于访问了一台电脑的某一个文件夹,在网页中看见的视频,视频和音乐其实就是文件夹里面的文件。为什么网页看起来不像电脑文件夹…

Android SystemUI——StatusBar视图创建(六)

上一篇文章我们介绍了 StatusBar 的构建过程,在 makeStatusBarView() 中获得 FragmentHostManager,用来管理 StatusBar 的窗口。 一、状态栏视图 在得到 FragmentHostManager 实例对象之后,还会继续调用 addTagListener() 方法设置监听对象,然后获取 FragmentManager 并开…

jenkins-node节点配置

一.简述: Jenkins有一个很强大的功能: 即:支持分布式构建(jenkins配置中叫节点(node),也被称为slave)。分布式构建通常是用来吸收额外的负载。通过动态添加额外的机器应对构建作业中的高峰期,或在特定操作系统或环境运行特定的构建…

Elasticsearch的function_score与rescore的区别

文章目录 前言一、function_score二、rescore三、区别对比总结 前言 在 Elasticsearch 中,function_score 和 rescore 都是对查询结果进行评分调整的机制,但它们的用途、作用范围和执行阶段有所不同。 一、function_score rescore 是一个用于 查询后重…

Vscode——SSH连接不上的一种解决办法

一、完整报错: > @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ > IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! > Someone could be eavesdropping on you right now (man-in-the

20.<Spring图书管理系统①(登录+添加图书)>

PS:关于接口定义 接口定义,通常由服务器提供方来定义。 1.路径:自己定义 2.参数:根据需求考虑,我们这个接口功能完成需要哪些信息。 3.返回结果:考虑我们能为对方提供什么。站在对方角度考虑。 我们使用到的…

Springboot Redisson 分布式锁、缓存、消息队列、布隆过滤器

redisson-spring-boot-starter 是 Redisson 提供的 Spring Boot 集成包&#xff0c;旨在简化与 Redis 的交互&#xff0c;包括分布式锁、缓存、消息队列、布隆过滤器等功能的实现。 Maven 依赖 在 Spring Boot 项目中添加 redisson-spring-boot-starter 依赖&#xff1a; <…

Vue2+OpenLayers实现点位拖拽功能(提供Gitee源码)

目录 一、案例截图 二、安装OpenLayers库 三、代码实现 3.1、初始化变量 3.2、创建一个点 3.3、将点添加到地图上 3.4、实现点位拖拽 3.5、完整代码 四、Gitee源码 一、案例截图 可以随意拖拽点位到你想要的位置 二、安装OpenLayers库 npm install ol 三、代码实现…

计算机网络 (46)简单网络管理协议SNMP

前言 简单网络管理协议&#xff08;SNMP&#xff0c;Simple Network Management Protocol&#xff09;是一种用于在计算机网络中管理网络节点的标准协议。 一、概述 SNMP是基于TCP/IP五层协议中的应用层协议&#xff0c;它使网络管理员能够管理网络效能&#xff0c;发现并解决网…