易学探索助手-个人记录(十四)

项目背景

在大语言模型(LLM)完成指令微调(SFT)之后,虽然可以处理开放式问答任务,但在专业领域(如《周易》)仍面临知识更新滞后、事实性薄弱等问题。为此,本文介绍如何通过 LightRAG(轻量级检索增强生成) 实现知识增强问答系统,结合微调后的模型(如 Qwen-32B),提升推理质量,同时支持知识图谱的自动提取与展示。

🛠 技术栈与核心组件

技术作用
Flask提供 REST 接口服务
LightRAG实现轻量级 RAG 检索增强
OpenAI SDK调用 Qwen 模型(微调版本)
NumPy向量操作、embedding 处理
OpenPyXL预留用于知识来源处理(可选)
asyncio异步任务管理
Embedding 模型BAAI/bge-m3 用于语义检索
自定义推理模板用于回答结构化、含推理的回答

项目结构概述

  • 初始化部分

    • 设置工作目录、环境变量

    • 定义全局变量 rag

  • LightRAG 初始化

    • 配置向量维度、最大 token 数量、调用 embedding 与 LLM 函数

  • 核心函数

    • llm_model_func:封装大模型推理接口

    • embedding_func:封装向量化调用(BAAI/bge-m3)

    • getPrompt():调用 LightRAG 进行混合检索,返回带上下文的 prompt

    • qwen_32b_stream():流式输出回答,嵌入推理与知识图谱标签

    • get_graph():调用 LightRAG 提取相关知识子图

  • 接口

    • /qwen14b:基础问答(不含图谱)

    • /qwen32b:增强问答 + 图谱融合

    • /qwen32b_SFT:直接使用微调模型(无检索)

    • /getGraph:知识图谱提取接口

 核心功能详解

1. 初始化 LightRAG

def init_lightrag():global ragrag = LightRAG(working_dir=WORKING_DIR,llm_model_func=llm_model_func,embedding_func=EmbeddingFunc(embedding_dim=1024,max_token_size=8192,func=embedding_func,),)
  • 工作目录:所有缓存、索引存储于 WORKING_DIR

  • llm_model_func:封装后的 LLM 调用接口(支持缓存)

  • embedding_func:向量化查询的底层函数(异步调用)

2. 使用 LLM 进行回答(含上下文)

async def getPrompt(question):answer = await rag.aquery(question, param=QueryParam(mode="hybrid"))return [question, answer]
  • LightRAG 会检索与问题最相关的内容,然后将其作为系统提示 system_prompt,配合用户问题形成完整上下文。

3. 强化问答输出:Qwen-32B + 推理标签 + 图谱嵌入

messages.append({"role": "user","content": f"{prompt[1]}\n这是一段与问题相关的知识图谱信息,请用自己的知识和文中有效的信息结合回答..."
})
  • 指定系统提示角色为“研究《周易》的专家”

  • <inference> 标签输出推理过程

  • <answer> 标签输出答案

  • 强制模型不要直接引用“文中”、“表格”等字段,从而让回答更自然

4. 提取知识图谱(/getGraph

@app.route('/getGraph', methods=['POST'])
def get_graph():result = asyncio.run(rag.get_subgraph(request_dict["question"]))return json.dumps(result, ensure_ascii=False)
  • 调用 LightRAG.get_subgraph() 方法从知识索引中生成相关实体及关系图谱,前端可以基于此绘图

 调用流程图(简化)

   用户提问↓POST /qwen32b↓
getPrompt(question) 异步检索增强↓
rag.aquery(question, mode=hybrid)↓
生成 prompt → 传入 Qwen-32B 模型↓
模型回答(含推理与图谱信息)流式返回

项目亮点

  1. 基于本地部署的 LLM(Qwen)

    • 微调后可精确控制语气与内容结构

  2. 检索增强(RAG)机制

    • 使用 LightRAG 支持 hybrid 模式检索,融合语义 + BM25 效果更好

  3. 知识图谱生成

    • 自动提取知识图谱子图,为可视化或进一步推理提供支持

  4. 流式输出

    • SSE 格式适配前端实时展示,用户体验更佳

总结

本文展示了如何将大模型(Qwen)与 LightRAG 相结合,构建一个支持:

  • 检索增强问答(RAG)

  • 推理结构化输出(inference/answer)

  • 知识图谱提取

的专业型问答系统。这种系统在易学演讲领域具有广泛的应用潜力。

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

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

相关文章

从“人找政策”到“政策找人”:智能退税ERP数字化重构外贸生态

离境退税新政核心内容与外贸企业影响 &#xff08;一&#xff09;政策核心变化解析 退税商店网络扩容 新政明确鼓励在大型商圈、旅游景区、交通枢纽等境外旅客聚集地增设退税商店&#xff0c;并放宽备案条件至纳税信用M级企业。以上海为例&#xff0c;静安区计划新增1000家退…

Pandas 可视化集成:数据科学家的高效绘图指南

为什么选择 Pandas 进行数据可视化&#xff1f; 在数据科学和分析领域&#xff0c;可视化是理解数据、发现模式和传达见解的关键步骤。Python 生态系统提供了多种可视化工具&#xff0c;如 Matplotlib、Seaborn、Plotly 等&#xff0c;但 Pandas 内置的可视化功能因其与数据结…

曼昆《经济学原理》第九版 第十一章公共物品与公共资源

一、物品分类的基本框架 排他性&#xff1a;能否阻止他人使用该物品的特性竞争性&#xff1a;一个人使用是否减少他人使用的特性 根据这两个特性可将物品分为四类&#xff1a; 私人物品&#xff1a;既有排他性又有竞争性&#xff08;如冰淇淋、衣服&#xff09;公共物品&…

基于大模型预测原发性急性闭角型青光眼的技术方案研究大纲

目录 一、引言二、技术方案概述三、术前阶段(一)数据采集与处理(二)大模型预测(三)手术方案制定(四)麻醉方案确定(五)术前健康教育四、术中阶段(一)实时数据监测与输入(二)手术策略动态调整(三)并发症预警与处理(四)术中健康教育五、术后阶段(一)恢复监测与…

基于React 的 AntD 库进行前端开发过程中的问题汇总

背景 最近写了半个月的 React 前端&#xff0c;三年没写过 React 前端了&#xff0c;有些生疏了&#xff0c;汇总一下 基于React 前端的 antD 库编写过程中的低级问题吧。 PS 一下&#xff0c;半个月没有发布博客了&#xff0c;C站产品经理又悄默默地改了样式&#xff0c;博客…

Spring @Scheduled vs XXL-JOB vs DolphinScheduler vs Airflow:任务调度框架全景对比

引言 从单机定时任务到分布式工作流调度&#xff0c;不同场景需要选择匹配的调度框架。 本文对比 Spring Scheduled、XXL-JOB、DolphinScheduler &#xff08;海豚调度器&#xff09;和 Apache Airflow 的核心差异&#xff0c;助你避免过度设计或功能不足。 一、核心定位与适用…

springMVC-10验证及国际化

验证 概述 ● 概述 1. 对输入的数据(比如表单数据)&#xff0c;进行必要的验证&#xff0c;并给出相应的提示信息。 2. 对于验证表单数据&#xff0c;springMVC提供了很多实用的注解, 这些注解由JSR303 验证框架提供. ●JSR 303 验证框架 1. JSR 303 的含义 JSR&#xff0…

OpenCV 滑动条调整图像对比度和亮度

一、知识点 1、int createTrackbar(const String & trackbarname, const String & winname, int * value, int count, TrackbarCallback onChange 0, void * userdata 0); (1)、创建一个滑动条并将其附在指定窗口上。 (2)、参数说明: trackbarname: 创建的…

ReadWriteLock(读写锁)和 StampedLock

1. ReadWriteLock&#xff08;读写锁&#xff09;&#xff1a;实现高性能缓存 总结&#xff1a; 要点 内容 适用场景 读多写少、高并发读取场景&#xff08;如缓存&#xff09; 锁类型 ReadWriteLock接口&#xff0c;ReentrantReadWriteLock实现 读锁 vs 写锁 多线程可…

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…

vue3 el-button 自定义本地图标

设置不生效的原因可能有&#xff1a;1.style标签里没加scoped <style scoped></style>2.本地图片路径指向错误3.自定义图片长宽没设置4.deep深度选择器使用错误&#xff0c;vue3用:deep() <el-tooltip content"重新匹配" placement"top"&g…

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…

6.8 note

paxos算法_初步感知 Paxos算法保证一致性主要通过以下几个关键步骤和机制&#xff1a; 准备阶段 - 提议者向所有接受者发送准备请求&#xff0c;请求中包含一个唯一的编号。 - 接受者收到请求后&#xff0c;会检查编号&#xff0c;如果编号比它之前见过的都大&#xff0c;就会承…

c++ openssl 使用 DES(数据加密标准)进行加密和解密的基本操作

使用 DES&#xff08;数据加密标准&#xff09;进行加密和解密的基本操作&#xff0c;重点展示了 ECB 和 CBC 模式&#xff0c;并且通过篡改密文的方式来进行攻击。下面是对每个部分的详细解析。 1. 结构体 Slip struct Slip {char from[16] { 0 }; // 交易的发起者&#x…

OpenWrt:使用ALSA实现边录边播

ALSA是Linux系统中的高级音频架构&#xff08;Advanced Linux Sound Architecture&#xff09;。目前已经成为了linux的主流音频体系结构&#xff0c;想了解更多的关于ALSA的知识&#xff0c;详见&#xff1a;http://www.alsa-project.org 在内核设备驱动层&#xff0c;ALSA提供…

【.net core】天地图坐标转换为高德地图坐标(WGS84 坐标转 GCJ02 坐标)

类文件 public static class WGS84ToGCJ02Helper {// 定义一些常量private const double PI 3.14159265358979324;private const double A 6378245.0;private const double EE 0.00669342162296594323;// 判断坐标是否在中国范围内&#xff08;不在国内则不进行转换&#x…

Matlab自学笔记五十七:符号运算、可变精度运算、双精度浮点型运算,三种运算精度的概念、比较、选择和应用

1.可变精度算术的概念 默认的&#xff0c;Matlab双精度浮点数使用16位数字精度&#xff0c;而符号数学工具箱的vpa函数&#xff0c;提供了无限大的可变精度&#xff0c;它默认使用32位数字精度&#xff0c;32位指的是有效数字的位数&#xff1b; 2.具体用法 程序示例&#x…

由汇编代码确定switch语句

int switch2(int x) {int result0;switch(x){/* switch语句主体缺失 */}return result; }在编译函数时&#xff0c;GCC为程序的初始部分以及跳转表生成了如下汇编代码。 1 MOVL 8(%ebp), %eax ;x位于相对于寄存器%ebp偏移量为8的地方。 2 ADDL $2, %eax …

java 使用HanLP 入门教程

1. 安装 HanLP Maven 依赖 <dependency><groupId>com.hankcs</groupId><artifactId>hanlp</artifactId><version>portable-1.8.4</version> <!-- 最新版本请查看官网 --> </dependency>注意&#xff1a;portable 版本…

vm虚拟机添加虚拟机无反应,获取所有权

问题描述 虚拟机忘记关机&#xff0c;就把电脑关了&#xff0c;早上打开用不了了&#xff0c;重新添加&#xff0c;也没反应&#xff0c;获取所有权后就没了 问题解决 将虚拟机文件目录下的.lck文件夹&#xff0c;删除&#xff0c;或者改个名&#xff0c;我是改为了.backup方…