当前位置: 首页 > news >正文

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

项目背景

在大语言模型(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.xdnf.cn/news/957817.html

相关文章:

  • 【使用LLM搭建系统】5 处理输入: 链式 Prompt Chaining Prompts
  • 运行vue项目报错 errors and 0 warnings potentially fixable with the `--fix` option.
  • React hook之useRef
  • STM32---外部32.768K晶振(LSE)无法起振问题
  • 模型重展UV后绘制纹理
  • 什么是人工智能(AI)?大学想学AI,该如何入手?
  • 【CATIA的二次开发24】抽象对象Document涉及文档生命周期的方法
  • Python文本序列的类型
  • IDC 观察:一体化数据库如何支撑 GenAI 的数据需求
  • WebGL与Three.js:从基础到应用的关系与原理解析
  • MybatisPlus枚举类的应用与转换
  • L1和L2核心区别 !!--part 2
  • 基于人工智能的闸机人脸识别门禁系统
  • 昇腾CANN集合通信技术解读——细粒度分级流水算法
  • CMake 从 GitHub 下载第三方库并使用
  • 高端性能封装正在突破性能壁垒,其芯片集成技术助力人工智能革命。
  • ABAP设计模式之---“童子军法则(The Boy Scout Rule)”
  • animate.css详解:轻松实现网页动画效果
  • 制作一款打飞机游戏68:地面敌人
  • CopyOnWriteArrayList和CopyOnWriteArraySet :并发安全的写时复制机制
  • 新手指南:如何轻松将文件压缩为RAR格式
  • Android多媒体——音/视频数据播放(十八)
  • 如何实现高可用评论服务
  • gtxe2_channel内部参数和寄存器配置-CPLL超频设计,超过6.6Gbps的最高速率
  • OpenHarmony按键分发流程(60%)
  • 4.redis集群
  • rk3568的data分区修改
  • 以太网PHY布局布线指南
  • Houdini POP入门学习07 - 分组
  • 热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁