【AI大模型应用开发】【项目实战】19.RAG智慧问答项目-(七)基于Milvus库的问答系统之prompts设计与query意图识别
一.prompts设计与query意图识别目标掌握如何设计和使用Prompt模板来引导大语言模型生成高质量输出学会查询分类的基本原理,了解如何通过分类优化输入处理流程prompts.py和query_classifier.py是EduRAG系统中core模块的重要组成部分,分别负责Prompt模板管理和查询分类,这两个模块通过优化用户输入的处理,增强了系统的灵活性和智能性,为RAG系统的检索和生成阶段奠定了基础,prompts.py定义了多种Prompt模板,用于引导大语言模型生成特定输出,而query_classifier.py通过分类用户查询,决定是否直接使用模型回答或触发检索流程1.Prompt管理(1).功能概述prompts.py定义了RAGPrompts类,负责管理系统中使用的所有Prompt模板,这些模板用于指导大语言模型完成不同任务,例如生成最终答案、假设答案、子查询或简化问题,通过集中管理Prompt,系统能够确保输入的一致性和输出质量实现下图中的4个大模型的Prompt:(2).代码实现# core/prompts.py # 导入 PromptTemplate 类,用于创建 Prompt 模板 from langchain_core.prompts import PromptTemplate # 定义 RAGPrompts 类,用于管理所有 Prompt 模板 class RAGPrompts: # 定义 RAG 提示模板 # @: 装饰器, 注解(是给计算看的),注释(给码农看的) # 需要注意: # # - Augment+Generate这一步需要大模型具备一定的**指令遵循**和**逻辑推理**能力,当输入的上下文和query没有问题但是效果不符合预期时。需要考虑更换能力更强的模型。 # - 如果在这个阶段要求大模型输出的语言风格和话术非常专业,**需要进行微调** @staticmethod def rag_prompt(): # 创建并返回 PromptTemplate 对象 return PromptTemplate( template=""" 你是一个IT领域的智能助手,帮助用户回答问题。你的语言专业,严谨,言简意赅。 如果提供了上下文,请基于上下文回答;如果没有上下文,请直接根据你的知识回答。 回答需要参考用户和系统的历史对话,如果没有历史对话,只参考上下文即可。 如果答案来源于检索到的文档,请在回答中说明。 上下文: 「 {context} 」 问题: 「 {question} 」 历史对话:「 {history} 」 如果无法回答,请回复:“信息不足,无法回答,请联系人工客服,电话:{phone}。” 回答: """, # 定义输入变量 input_variables=["context", "question", "history", "phone"], ) # @staticmethod # def rag_prompt(): # return PromptTemplate( # template=""" # 你是一个智能助手,负责帮助用户回答问题。请按照以下步骤处理: # # 1. **分析问题和上下文**: # - 基于提供的上下文(如果有)和你的知识回答问题。 # - 如果答案来源于检索到的文档,请在回答中明确说明,例如:“根据提供的文档,……”。 # # 2. **评估对话历史**: # - 检查对话历史是否与当前问题相关(例如,是否涉及相同的话题、实体或问题背景)。 # - 如果对话历史与问题相关,请结合历史信息生成更准确的回答。 # - 如果对话历史无关(例如,仅包含问候或不相关的内容),忽略历史,仅基于上下文和问题回答。 # # 3. **生成回答**: # - 提供清晰、准确的回答,避免无关信息。 # - 如果上下文和历史消息均不足以回答问题,请回复:“信息不足,无法回答,请联系人工客服,电话:{phone}。” # # **上下文**: {context} # **对话历史**: # {history} # **问题**: {question} # # **回答**: # """, # input_variables=["context", "history", "question", "phone"], # ) # 定义假设问题生成的 Prompt 模板 @staticmethod def hyde_prompt(): # 创建并返回 PromptTemplate 对象 return PromptTemplate( template=""" 假设你是用户,想了解以下问题,请生成一个简短的假设答案,以便于去查询向量库,获取当更好的查询结果: 问题: 「 {query} 」 需要注意,你的回答只能包含假设答案本身,且长度不能超过200个字。 接下来,请你输出假设答案: """, # 定义输入变量 input_variables=["query"], ) # 定义子查询生成的 Prompt 模板 @staticmethod def subquery_prompt(): # 创建并返回 PromptTemplate 对象 return PromptTemplate( template=""" 将以下复杂查询分解为多个简单子查询,每行一个子查询,以便于去查询向量库,获取当更好的查询结果: 查询: 「 {query} 」 需要注意,你的回答只能包含子查询本身,不要有任何的补充说明和其他无关内容。 接下来,请你输出子查询结果: """, # 定义输入变量 input_variables=["query"], ) # 定义回溯问题生成的 Prompt 模板 @staticmethod def backtracking_prompt(): # 创建并返回 PromptTemplate 对象 return PromptTemplate( template=""" 将以下复杂查询简化为一个更简单的问题,以便于去查询向量库,获取当更好的查询结果: 查询: 「 {query} 」 需要注意,你的回答只能包含简化后的问题本身,不要有任何的补充说明和其他无关内容。 接下来,请你输出简化后的问题: """, # 定义输入变量 input_variables=["query"], ) if __name__ == '__main__': prompt = RAGPrompts.hyde_prompt() prompt_str = prompt.format(query="大模型在教育领域的应用有哪些?") print(prompt_str)(3).实现细节1.rag_prompt:作用:核心回答模板,结合检索到的上下文生成最终答案输入变量:context(检索文档内容)、question(用户查询)、phone(客服电话)设计逻辑:支持有无上下文的回答,并提供兜底回复,确保用户体验2.hyde_prompt:作用:生成假设答案,用于HyDE(Hypothetical Document Embeddings)策略,优化抽象查询的检索输入变量:query(用户查询)设计逻辑:通过生成假设答案,间接增强查询与文档的语义匹配3.subquery_prompt:作用:将复杂查询分解为多个子查询,适合涉及多方面的查询输入变量:query(用户查询)设计逻辑:分解复杂问题以提高检索覆盖率4.backtracking_prompt:作用:将复杂查询简化为更基础的问题,便于检索输入变量:query(用户查询)设计逻辑:通过简化查询降低检索难度2.查询分类QueryClassifier是 EduRAG 系统的核心组件,负责将用户查询分为“通用知识”和“专业咨询”两类,以决定查询路由到知识库还是咨询接口,本模块介绍基于 BERT的优化实现,替换传统TF-IDF 模型,利用 5000 条混合数据集(training_dataset_hybrid_5000.json)进行训练,并解决评估中的标签处理问题(1).功能概述QueryClassifier提供以下功能:数据加载:读取 5000 条 JSON 数据集,包含查询和标签(“通用知识”或“专业咨询”)BERT 训练:使用bert-base-chinese模型,微调二分类任务,准确率达90%+评估优化:直接处理数字标签(0 或 1),生成分类报告和混淆矩阵预测接口:支持实时分类,集成到 EduRAG 系统""" 意图识别模块,提供如下功能: 1. 数据加载:读取 5000 条 JSON 数据集,包含查询和标签(“通用知识”或“专业咨询”) 2. 模型训练:使用 bert-base-chinese 模型,微调二分类任务,准确率达 90%+ 3. 评估优化:直接处理数字标签(0 或 1),生成分类报告和混淆矩阵 4. 预测接口:支持实时分类,集成到 EduRAG 系统。 为了满足以上功能,需要实现以下需求: 1. 初始化方法:初始化预训练的分词器、 预训练的模型。 如果是在上线阶段,主要是负责加载训练好的模型 2. 数据预处理:将查询文本和预测标签转化为模型的输入数据格式 3. 构建数据集:用于模型的训练,适配模型的训练函数 4. 模型训练:基于处理好的数据集划分出来训练集,对模型进行训练 5. 模型评估:在数据集划分出来的验证集,对模型进行评估 6. 模型预测:加载训练好的模型,完成意图识别任务 """(2).代码实现""" 意图识别模块,提供如下功能: ---------------------------------------在项目上线之前执行一次--------------------------------------- 1. 数据加载:读取 5000 条 JSON 数据集,包含查询和标签(“通用知识”或“专业咨询”) 2. 模型训练:使用 bert-base-chinese 模型,微调二分类任务,准确率达 90%+ 3. 评估优化:直接处理数字标签(0 或 1),生成分类报告和混淆矩阵 ---------------------------------------在项目上线之前执行一

相关新闻

告别传输慢与版本混乱:6个实用的小型团队文件共享系统盘点

告别传输慢与版本混乱:6个实用的小型团队文件共享系统盘点

对于分秒必争的小型工作室而言,文件共享的效率直接决定了项目的交付速度。本文将从底层同步技术、合规安全、业务适配度等层面,深入剖析目前市面上主流的 6 款协作网盘,为您梳理出一条高可用、低损耗的文件流转闭环。 一、 核心排查&#xff…

2026/7/13 21:48:01阅读更多 →
51-定时器、寄存器

51-定时器、寄存器

(新手小白做笔记,如有建议希望能够指出,十分感谢)51定时器存在于单片机内部,其电路运行也在内部完成作用:1.实现软件计时,或使程序隔一段固定时间完成一项操作 2.代替长时间的延时,…

2026/7/13 21:48:01阅读更多 →
华为OD机试真题 - 软件依赖树(Java /Py/C++/Go/C/Js)

华为OD机试真题 - 软件依赖树(Java /Py/C++/Go/C/Js)

软件依赖树 华为OD机试新系统真题 华为OD上机考试新系统真题 7月12号 200分题型 华为OD机试新系统真题目录点击查看: 华为OD机试新系统真题题库目录|机考题库 + 算法考点详解 题目内容 在软件项目开发里涉及不同版本组件引用,组件依赖组件,形成一棵依赖树(从根节点深层展…

2026/7/13 21:48:01阅读更多 →
用KMind Zen梳理软件测试点

用KMind Zen梳理软件测试点

一、引言:测试人员的思维导图困境 作为一名软件测试工程师,在日常工作中梳理测试点是一项高频且关键的任务。传统的Excel表格虽然规范,但在测试点梳理阶段往往显得笨重——需求变更时需要来回修改、层级关系不直观、评审时难以一眼看出覆盖范…

2026/7/13 22:53:05阅读更多 →
Stable-diffusion-WebUI API进阶:构建自动化生图工作流

Stable-diffusion-WebUI API进阶:构建自动化生图工作流

1. 从单次调用到自动化工作流第一次用Stable Diffusion WebUI的API生成图片时,我就像拿到新玩具的孩子,兴奋地反复点击运行按钮。直到凌晨三点,盯着满屏的猫咪图片才突然意识到——该升级成自动化流程了。把API调用封装成自动化工作流&#x…

2026/7/13 22:53:05阅读更多 →
3种BLDC电机位置检测方案对比:霍尔传感器 vs 编码器 vs 无传感器FOC

3种BLDC电机位置检测方案对比:霍尔传感器 vs 编码器 vs 无传感器FOC

BLDC电机位置检测技术全景解析:从霍尔传感器到无传感器FOC的深度对比引言:BLDC电机控制的核心挑战在机电一体化系统设计中,无刷直流电机(BLDC)凭借其高效率、长寿命和低维护特性已成为工业伺服、消费电子和汽车电驱领域…

2026/7/13 22:53:05阅读更多 →
多重刺激响应全植物基智能水凝胶基础配比方案(跨多学科协同设计)待验证

多重刺激响应全植物基智能水凝胶基础配比方案(跨多学科协同设计)待验证

一、配比设计底层学科逻辑(多学科交叉支撑) 整套配方并非简单混合原料,融合林产化学、高分子物理、无机材料、传感工程、航天材料、生物工程六大学科理论,各组分各司其职,协同实现五重刺激响应、自修复、电磁屏蔽、温控…

2026/7/13 22:53:05阅读更多 →
SAP MM 自动记账配置详解:OBYC 与 5 种常见业务场景科目确定

SAP MM 自动记账配置详解:OBYC 与 5 种常见业务场景科目确定

SAP MM自动记账配置实战:OBYC事务码与五大业务场景科目映射解析物料管理模块(MM)作为SAP系统的核心组件,其自动记账功能直接关系到企业财务数据的准确性和业务合规性。本文将深入剖析OBYC事务码的配置逻辑,并通过五大典…

2026/7/13 22:53:05阅读更多 →
196反转相加未解之谜:一个小学算术引发的数学边界探索

196反转相加未解之谜:一个小学算术引发的数学边界探索

1. 这不是密码学,也不是量子计算——它只是用小学加法反复折腾一个数字你可能在某个数学爱好者论坛、Reddit的r/math板块,或者某期《Numberphile》视频评论区里,第一次看到“196”这个词被郑重其事地加粗、高亮,甚至配上“未解之谜…

2026/7/13 22:48:05阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/13 4:47:19阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/13 0:50:34阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/13 4:52:09阅读更多 →
卡梅德生物技术快报|蛋白质分离纯化:肠激酶可溶性原核表达 + 两步层析全参数|标准化蛋白质分离纯化 SOP

卡梅德生物技术快报|蛋白质分离纯化:肠激酶可溶性原核表达 + 两步层析全参数|标准化蛋白质分离纯化 SOP

研究痛点提出(提出问题)重组肠激酶是融合标签切除核心工具酶,当前原核表达体系存在三大标准化难题,直接阻碍可复现的蛋白质分离纯化流程搭建:Trx、GST、单 SUMO 标签融合产物绝大多数为包涵体,沉淀占比超 9…

2026/7/13 0:04:58阅读更多 →
语音转文字工具AsrTools:让音频整理变得简单高效

语音转文字工具AsrTools:让音频整理变得简单高效

语音转文字工具AsrTools:让音频整理变得简单高效 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into accurate text …

2026/7/13 0:04:58阅读更多 →
Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 你是否曾经想要调整Palwor…

2026/7/13 0:04:58阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/13 4:21:17阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/13 4:08:53阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/12 21:43:43阅读更多 →