项目背景
在大语言模型(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 模型↓
模型回答(含推理与图谱信息)流式返回
项目亮点
-
基于本地部署的 LLM(Qwen)
-
微调后可精确控制语气与内容结构
-
-
检索增强(RAG)机制
-
使用
LightRAG
支持 hybrid 模式检索,融合语义 + BM25 效果更好
-
-
知识图谱生成
-
自动提取知识图谱子图,为可视化或进一步推理提供支持
-
-
流式输出
-
SSE 格式适配前端实时展示,用户体验更佳
-
总结
本文展示了如何将大模型(Qwen)与 LightRAG 相结合,构建一个支持:
-
检索增强问答(RAG)
-
推理结构化输出(inference/answer)
-
知识图谱提取
的专业型问答系统。这种系统在易学演讲领域具有广泛的应用潜力。