LightRAG成功跑通:Ollama+Qwen2.5+bge-large-zh-v1.5

目录

  • LightRAG跑通
    • 1.安装环境
    • 2.示例跑通:
      • (1)准备样例数据
      • (2)源码修改
      • (3)中文示例跑通
    • 4.Neo4j可视化图谱
    • 5.问题解决:
    • 跑通后感受:

LightRAG跑通

继GraphRAG之后,LightRAG是有一个热门的项目,从10月开源之后,至今已经有7+Kstar了;
同时,Lightrag的更新非常快!值得持续关注在这里插入图片描述
当前的跑通教程基于2024.11.6这个时间节点,可能是第一个实际的图文跑通教程?
官方的ollama demo写的很不错,但是如果不用其默认的LLM和embeding模型,也还是跑不起来的,下面将给出一个适配自己模型的ollama跑通教程,供来者参考。

1.安装环境

conda create -n LightRAG python=3.10
conda activate LightRAG

推荐源码安装lightrag:
源码:https://github.com/HKUDS/LightRAG
cd 源码路径
pip install -e .

同时还需要安装ollama
LLM推荐:qwen2.5
embeding模型推荐:quentinz/bge-large-zh-v1.5
后面源码的模型将按照这两个模型进行配置

2.示例跑通:

(1)准备样例数据

使用官方的英文示例:
https://raw.githubusercontent.com/gusye1234/nano-graphrag/main/tests/mock_data.txt
复制网页的内容,保存为本地的一个book.txt,将其和下面的程序放在一个路径下。

(2)源码修改

examples/ lightrag_ollama_demo.py
将里面ollama的模型修改为你自己的模型即可。

import os
import logging
from lightrag import LightRAG, QueryParam
from lightrag.llm import ollama_model_complete, ollama_embedding
from lightrag.utils import EmbeddingFuncWORKING_DIR = "./dickens"    # 导出路径logging.basicConfig(format="%(levelname)s:%(message)s", level=logging.INFO)if not os.path.exists(WORKING_DIR):os.mkdir(WORKING_DIR)rag = LightRAG(working_dir=WORKING_DIR,chunk_token_size=300,chunk_overlap_token_size=0,llm_model_func=ollama_model_complete,llm_model_name="qwen2.5",llm_model_max_async=1,llm_model_max_token_size=8192,llm_model_kwargs={"host": "http://localhost:11434", "options": {"num_ctx": 8192}},embedding_func=EmbeddingFunc(embedding_dim=1024,     # bge-large-zh-v1.5max_token_size=512,    # bge-large-zh-v1.5func=lambda texts: ollama_embedding(texts, embed_model="quentinz/bge-large-zh-v1.5", host="http://localhost:11434"),),
)with open("./book.txt", "r", encoding="utf-8") as f:rag.insert(f.read())# Perform naive search
print(rag.query("What are the top themes in this story?", param=QueryParam(mode="naive"))
)# Perform local search
print(rag.query("What are the top themes in this story?", param=QueryParam(mode="local"))
)# Perform global search
print(rag.query("What are the top themes in this story?", param=QueryParam(mode="global"))
)# Perform hybrid search
print(rag.query("What are the top themes in this story?", param=QueryParam(mode="hybrid"))
)

lightrag/base.py
修改下面的地方,将默认的3个4000替换为你embedding模型的支持tokens长度,我使用的是bge-large-zh-v1.5,其最大tokens为512

@dataclass
class QueryParam:mode: Literal["local", "global", "hybrid", "naive"] = "global"only_need_context: bool = Falseresponse_type: str = "Multiple Paragraphs"# Number of top-k items to retrieve; corresponds to entities in "local" mode and relationships in "global" mode.top_k: int = 60# Number of tokens for the original chunks.# max_token_for_text_unit: int = 4000# # Number of tokens for the relationship descriptions# max_token_for_global_context: int = 4000# # Number of tokens for the entity descriptions# max_token_for_local_context: int = 4000max_token_for_text_unit: int = 512# Number of tokens for the relationship descriptionsmax_token_for_global_context: int = 512# Number of tokens for the entity descriptionsmax_token_for_local_context: int = 512

修改完成后,运行examples/ lightrag_ollama_demo.py,顺利的话,可以得到如下结果

同时在dickens中会生成很多中间文件。
在这里插入图片描述

注:若某个阶段不成功,则下次运行时,不会完全从头开始,会从失败的阶段继续往后。

若运行不顺利,出现了报错,请参考下面的问题解决。

(3)中文示例跑通

待添加

4.Neo4j可视化图谱

待添加

5.问题解决:

Q1:ValueError: all the input array dimensions except for the concatenation axis must match exactly, but along dimension 1, the array at index 0 has size 768 and the array at index 1 has size 1024
执行rag.insert(f.read())时报错。
原因:嵌入模型的维度不对,官方示例中的嵌入维度为768,而我使用的模型quentinz/bge-large-zh-v1.5:latest维度为1024,修改embedding_dim为如下,可解决:
在这里插入图片描述

Q2:WARNING:lightrag:Didn’t extract any entities, maybe your LLM is not working
WARNING:lightrag:No new entities and relationships found
在这里插入图片描述

怀疑是英文promt导致无法处理中文的小王子数据。
因此建议考虑将prompt换成中文的
或者参考官方issue:https://github.com/HKUDS/LightRAG/issues/30

Q3:ollama._types.ResponseError: DevSidecar Error:

目标网站请求错误:【undefined】 127.0.0.1:11434, 代理请求超时

目标地址:http://127.0.0.1:11434/api/chat

分析:ollama 的embedding是可以正常调用的,LLM不行,
原因:被其它代理软件给影响了,具体的,被我电脑上运行的DevSidecar给影响了
解决措施:关闭电脑上的代理软件

在这里插入图片描述

关闭后,可以正常运行,以后运行ollama时要注意这个工具的问题。

Q4:TypeError: ‘NoneType’ object is not subscriptable
这个是在执行rag.query报错
在这里插入图片描述

在这里插入图片描述

参考官方issue:
https://github.com/HKUDS/LightRAG/issues/95
在这里插入图片描述
在这里插入图片描述

看issue建议是增大嵌入模型的输入长度或者是减少chunk_token_size,是因为问题超出了嵌入模型的长度了吗?

解决措施:修改embedding的最大长度,与实际模型相匹配

修改这几个地方,将这几个参数从4000减少为512可以正常跑通。
在这里插入图片描述

下面没有修改,但是逻辑上理解很重要。
在这里插入图片描述

修改3个4000位512(因为我用的bge-large-zh-v1.5其最大tokens为512),参考上面源码修改。
在这里插入图片描述

跑通后感受:

LightRAG号称是微软GraphRAG的替代品,更轻、更快、更强。
实际跑通后,从整个跑通速度来看,确实要快很多,整个项目目前看起来也还容易理解(后面可能会越来越庞大,越来越不好理解),值得持续关注。
LightRAG发展和更新很快,还有很多地方需要完善,当前模型中很多参数都是基于其自带的模型参数进行配置的,若是用到其它模型,则需要修改参数的地方没有明确给出,所以跑起来就会出现这样那样的问题,本质上都是模型参数设置的问题。
预期后面这些配置项都会变成yaml的方式方便修改,而当前需要摸索着进行修改。

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

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

相关文章

qt QMovie详解

1、概述 QMovie 是 Qt 框架中用于处理动画文件的类。它支持多种动画格式,包括 GIF 和一些常见的视频格式(尽管对视频格式的支持依赖于底层平台)。QMovie 类主要用于在 QLabel 或 QGraphicsView 等控件中显示动画。通过加载动画文件&#xff…

二叉树的练习题(上)

1. 前序遍历 题目解析: 题目: . - 力扣(LeetCode) 解题步骤: 题目给定的返回值是一个链表,也就是我们每一次前序遍历都要把遍历结果保存到顺序表里面进行返回. 前序遍历: 根结点 -> 左子树 -> 右子树 我们的遍历过程如图 就相当于所有的结点 …

LabVIEW高效数据采集与信号处理系统

开发一个基于LabVIEW软件的数据采集与信号处理系统,实现高效的数据采集和信号处理。系统通过优化数据流处理过程和直观的图形化界面,提高了操作效率和数据准确性,特别适合工业和科研应用。 ​ 项目背景 在现代工业和科研领域,数…

ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源 或者超时失效

数据治理过程中,有字段长度不够,扩展字段,报:ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源 或者超时失效 ALTER TABLE LAPD_RSJ_CXJMYLBXCBXX MODIFY HKXZ VARCHAR2(10);错误表示当前会话在试图访问的资源(通常…

上海亚商投顾:创业板指冲高回落 全市场成交超2.5万亿

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 市场全天冲高回落,创业板指尾盘跌超1%,北证50一度涨超7%,盘中再创历史新高…

多维视角下的知识管理:Spring Boot应用

2 开发技术 2.1 VUE框架 Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架。 Vue 只关注视图层, 采用自底向上增量开发的设计。 Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。 2.2 Mysql数据库 …

x-cmd pkg | gum - 轻松构建美观实用的终端界面,解锁命令行新玩法

目录 简介快速上手安装使用 功能特点竞品和相关作品进一步探索 简介 gum 是由 Charm 团队于 2022 年使用 Go 开发的终端 UI 组件工具箱,能帮用户在终端中快速构建交互式 TUI 界面(如表单、菜单、提示框等),简化命令行应用程序的开…

前端学习Day13 CSS盒子的定位(固定定位篇“附练习”)

一、固定定位 固定定位 (position:fixed)其实是绝对定位的子类别,一个设置了 position:fixed 的元素是相对于视窗固定的,就算页面文档发生了滚动,它也会一直待在相同的地方。 ⚠️:固定定位会脱离文档流。…

基于python多准则决策分析的汽车推荐算法设计与实现

摘要 随着汽车市场的快速发展和消费者需求的多样化,汽车选择变得愈加复杂。为了帮助消费者在众多汽车选项中做出明智的决策,基于多准则决策分析(MCDA)的汽车推荐算法应运而生。本研究旨在设计和实现一种基于 Python 的汽车推荐系…

基于SpringBoot的“校园交友网站”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“校园交友网站”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 网站首页界面图 用户注册界面图 线下活动界面图 交…

SD-WAN技术怎样与运营商网络无缝集成

随着企业对网络性能和灵活性的要求不断提升,SD-WAN(软件定义广域网)技术成为优化企业网络架构的重要解决方案。SD-WAN不仅能提升网络的灵活性和可管理性,还能提供更高的性能。要实现SD-WAN的高效部署,必须与运营商的网…

Node.js——fs模块-路径补充说明

1、相对路径: ./座右铭.txt 当前目录下的座右铭.txt座右铭.txt 等效于上面的写法../座右铭.txt 当前目录的上一级目录中的座右铭.txt 2、绝对路径 D:/Program File Windows系统下的绝对路径/usr/bin Linux系统…

SparkSQL的自定义函数

目录 一、关于自定义函数 1、自定义函数分为: 2、pyspark中自定义函数的三种写法: 二、 regeister方式自定义函数(SQL和DSL中使用) 三、udf注册方式定义UDF函数(DSL中使用) 一、关于自定义函数 1、自…

实践决定认识

“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明: A.人的意识具有创造性【无关题义】 B.人的认识是独立于实践之外的【错误,实践决定认识】 C.实践在认识过程中具有决定作用【正确】 D.人的一切知识都是从直接经验中获得的 这里…

十一,D O M 获取

1、DOM初相识 1.1、DOM简介 文档对象模型(Document Object Model ,简称DOM),它就是一些系列编程接口,有了这些接口,就可以改变页面内容,结构和样式 名称描述DOM文档对象模型(Document Object…

SpringBoot04-SpringBoot配置文件

4.Springboot配置文件 4.1配置文件 SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的 application.properties 语法结构 :keyvalue server.port8081application.yaml 语法结构 :key:空格value server:port: 80814.2yaml概述 YAML…

scratch计算台阶 2024年9月scratch四级真题 中国电子学会 图形化编程 scratch四级真题和答案解析

目录 scratch计算台阶 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、p…

什么是量子计算机?

量子计算机是一种利用量子力学原理进行计算的新型计算机。 一、工作原理 传统计算机使用二进制位(比特)来存储和处理信息,每个比特只能处于 0 或 1 两种状态之一。而量子计算机使用量子比特,量子比特可以同时处于 0 和 1 的叠加…

DevOps业务价值流:需求设计最佳实践

DevOps实践正推动着产品快速迭代与高质量交付,但需求设计作为产品开发的关键起点,往往被忽视。它不仅是收集与分析需求的过程,更是将需求转化为可实施产品特性的核心。本文深入探讨DevOps业务价值流中的需求设计,从调研、整理、原…

科大讯飞离线lunix tts demo使用

项目中需要用到后台服务端用文本生成语音,网上大部分都是通过ai大模型推理出来的,还有写其他方式的,效果和生成时间都比较不理想,但是讯飞生成的只需要零点几秒,不愧是行业NO1,下面说下怎么使用。 1、下载官…