制作网站需要哪些知识,wordpress 展示主题,wordpress建站 知乎,ngrok WordPress本文详细介绍了基于LlamaIndex框架的应急管理安全生产智能问答系统构建方法。系统采用混合查询架构#xff0c;结合RAG和Text2SQL技术#xff0c;整合非结构化文档与结构化数据库数据。通过数据预处理、建立索引、智能检索、句子拆分和Agent工作流设计#xff0c;实现精准的…本文详细介绍了基于LlamaIndex框架的应急管理安全生产智能问答系统构建方法。系统采用混合查询架构结合RAG和Text2SQL技术整合非结构化文档与结构化数据库数据。通过数据预处理、建立索引、智能检索、句子拆分和Agent工作流设计实现精准的应急管理问答功能。项目解决了多数据源整合、复杂查询处理和结果质量评估等关键问题为应急管理数字化转型提供了智能化解决方案。《应急管理安全生产智能问答》大赛是一个较典型大模型Agent实战项目首先看下比赛的具体内容然后再进行具体的分析和实战一、赛题描述随着我国工业经济的迅猛发展危化品企业与工业高危工艺规模持续扩张安全生产风险防控压力剧增。传统依赖人工查询数据、解读政策的模式已难以满足应急管理的快速决策需求“监管难”“响应慢” 成为制约安全生产治理能力提升的关键瓶颈。机器学习、大模型等AI技术的发展为应急管理数字化转型提供了全新路径其强大的自然语言理解与知识整合能力正推动智慧应急建设迈向智能化新阶段。本赛题立足应急管理实际需求将AI技术应用于安全生产智能问答场景。核心任务是构建一个面向应急安全生产的统一智能问答系统。该系统将助力应急管理人员快速获取关键数据、精准掌握政策要求有效提升应急安全生产决策效率为风险预警、隐患排查、应急处置提供科学支撑筑牢安全生产数字化防线为智慧应急体系建设与城市安全发展提供重要保障推动应急管理能力实现质的飞跃。二、赛题题目应急管理安全生产智能问答三、赛题任务赛题同步接入本地危化企业/工业企业高危工艺的结构化表数据、应急领域地方政策文件、国家法律法规、行业标准规范等文本数据。系统能够精准理解用户提出的多样化问题涉及数据查询、政策解读、合规性判断等并基于对问题意图的深度解析自动判断需检索的数据生成准确可靠的答案。参赛者可依托主流开源大模型或机器学习模型通过大模型微调、检索增强生成RAG、智能体Agent等技术手段实现最终目标。【初赛-A榜】选手根据提供的数据线下进行AI模型开发与调试构建应急管理安全生产智能问答系统。基于测试问题集利用构建的问答系统自动化输出答案结果严禁人为构造答案结果并提交。四、数据描述【初赛-A榜】本赛题提供的数据集包含危化企业结构化表数据和危化品、危化企业相关的地方政策/法律法规/标准规范/管理办法等文本数据。数据集清单与说明选手需对给定的A榜测试数据进行推理预测测试数据格式如下问答对涉及表数据的重要规则说明1.通用规则基础关联条件在任何涉及企业编码org_code的查询中都必须确保企业编码来源于企业基础表base_t_enterprise_draft中有效的企业数据即删除状态为未删除delete_status0且审核状态为已审核check_status2多表关联查询对于主表企业安全生产责任承诺表enterprise_promise除外若其包含“删除状态”、“审核状态”字段需确保企业数据为有效数据即删除状态为“未删除”、审核状态为“已审核”2.涉及“特殊作业”相关问答对的时间范围1特殊作业的时间范围由两个阶段共同构成计划阶段与实施阶段。其中计划阶段的时间范围为作业计划开始时间start_time至作业计划结束时间end_time实施阶段的时间范围为作业实施开始时间zysskssj至作业实施结束时间zyssjssj五、提交说明【初赛-A榜】选手需要根据给定的测试问题集分别预测出测试集对应的答案并以csv格式保存文件名为result.csv。结果result.csv的样例如下注选手需保证提交的result.csv中数据的字段顺序与给定的问答测试集顺序一致提交的文件记录数也需保持一致。为避免评测过程中文件编码格式导致评测错误的影响文件统一以utf-8编码。六、评估指标详情可以看网址https://www.marsbigdata.com/competition/details?id3845468616549以上为竞赛项目的实际情况接下来进入分析阶段一、系统分析根据比赛内容涉及到问答、知识库、RAG、Agent等我们基本可以可以断定是一个涉及AgentRAG的项目。有大量的Excel数据数据量比较大则需要将数据导入到关系型数据库里作为结构化数据再使用NL2SQL/Text2SQL。非结构化文档pdf/words等格式包含扫描件等需要清洗数据。需要对非结构化数据pdf/words等和结构数据Excel数据分别处理检索时需要整合这两种数据源。二、技术选型1、AgentRAGText2SQL的问答功能可选技术框架一般有1LangChain;2LlamaIndex;本文选择LlamaIndex,该框架入门简单内置了丰富的功能特别适合RAG类型的Agent开发也内置Text2SQL组件2、关系型数据库选择Mysql3、向量数据库选择ChromaDB三、数据整理1、非结构化文档使用MinerUOCR统一转化为MarkDown格式的文件2、将所有Excel数据导入到Mysql数据库里特别说明表名的备注说明、表字段的说明一定要全部导入。四、建立索引非结构化数据已全部转为MarkDown所以Llamaindex内置的文本切分器MarkdownNodeParser批量将所有MarkDown文件全部向量化存储到ChromaDB里。五、对非结构化数据的检索查询先完成非结构化数据的检索查询再整合Text2SQL。 非结构化数据的检索查询就是我们最常见的RAG知识库检索增强。流程如下核心代码如下query_engine index.as_query_engine( similarity_top_ksimilarity_top_k, response_modetree_summarize, node_postprocessorsnode_postprocessors if node_postprocessors else None )六、结构化数据Text2SQL查询检索使用LlamaIndex内置的SQL查询引擎SQLTableRetrieverQueryEngine分2步骤查询第1是查询涉及到的表第2步是从这几个表中写SQL进行查询。流程如下用户问题 │ ▼ ┌──────────────┐ │ 表结构检索 │ │ (SQLTable │ │ Retriever) │ └──────┬───────┘ │ ▼ ┌──────────────┐ │ 业务规则注入 │ │ (SQL Rules) │ └──────┬───────┘ │ ▼ ┌──────────────┐ │ LLM 生成 SQL │ │ (Text-to-SQL) │ └──────┬───────┘ │ ▼ ┌──────────────┐ │ SQL 执行 │ └──────┬───────┘ │ ▼ ┌──────────────┐ │ 结果检测 │ │ (空结果?) │ └──────┬───────┘ │ ┌──┴──┐ │ │ 否 是 │ │ ▼ ▼ 返回结果 模糊查询回退 │ │ └──┬──┘ │ 返回结果实战过程中发现一些问题检索到的表不正确拼接的SQL中出现非该表的字段表字段混乱使用业务理解错误Value值拆分不正确不需要拆分的却被拆分了解决方案写业务规则告诉大模型什么场景下使用什么表。限定某些表的使用范围限定某些表字段使用范围禁止显示的场景使用模糊查询先精确查询若未查询到结果则再使用模糊查询再次查询。七、整合两个查询两个查询一般需要先查询非结构化数据若查询到的结果得分较低则使用Text2SQL查询数据。八、拆分子句根据给到的100个问题发现有些问题是2句话其中一句话要从非结构化数据里查询另一句话要从结构化数据里查询那么我们在混合查询之前需要拆分句子。我们使用大模型来帮我们拆分句子核心代码如下import logging from typing import List from loguru import logger # 导入LlamaIndex相关模块 from llama_index.core import Settings, PromptTemplate from llama_index.core.llms import ChatMessage # 语句拆分的提示模板 SENTENCE_SPLIT_PROMPT 你是一个专业的语句拆分助手。请将用户输入的文本按照自然语言的句子边界拆分成多个独立的句子。 要求 1. 每个句子必须是完整的表达一个完整的意思 2. 保留原始文本的标点符号 3. 确保拆分后的句子语法正确 4. 只返回拆分后的句子列表不要添加任何额外的解释或说明 输入文本{input_text} 请以JSON格式返回拆分后的句子列表格式如下 {sentences: [句子1, 句子2, 句子3]} def split_sentences(input_text: str) - List[str]: 使用大模型将输入文本拆分成多个句子 Args: input_text: 用户输入的文本可以包含多句话 llm: 已初始化的语言模型如果为None则自动初始化 Returns: List[str]: 拆分后的句子列表 if not input_text or not input_text.strip(): logger.warning(输入文本为空) return [] try: #logger.info(f开始拆分句子输入文本长度: {len(input_text)} 字符) # 创建提示模板 prompt_template PromptTemplate(SENTENCE_SPLIT_PROMPT) # 格式化提示 formatted_prompt prompt_template.format(input_textinput_text) # 创建聊天消息 messages [ ChatMessage(rolesystem, content你是一个专业的语句拆分助手。), ChatMessage(roleuser, contentformatted_prompt) ] # 调用模型 response Settings.llm.chat(messages) # 提取响应内容 response_content response.message.content.strip() # logger.info(f模型返回响应: {response_content}) # 解析JSON响应 import json try: # 提取JSON部分处理模型可能返回的额外文本 if { in response_content: json_start response_content.find({) json_end response_content.rfind(}) 1 json_str response_content[json_start:json_end] result json.loads(json_str) sentences result.get(sentences, []) #logger.info(f成功拆分出 {len(sentences)} 个句子) return sentences else: logger.error(模型响应中未找到JSON格式数据) # 备用方案尝试基本的正则拆分 import re sentences re.split(r[。.!?]\s*, input_text) return [s.strip() for s in sentences if s.strip()] except json.JSONDecodeError: logger.error(无法解析JSON响应) # 备用方案尝试基本的正则拆分 import re sentences re.split(r[。.!?]\s*, input_text) return [s.strip() for s in sentences if s.strip()] except Exception as e: logger.error(f语句拆分过程中出错: {str(e)}) # 错误处理使用简单的正则表达式作为备用方案 try: import re sentences re.split(r[。.!?]\s*, input_text) return [s.strip() for s in sentences if s.strip()] except Exception: return [input_text] # 最后返回原始文本 # 添加一个简单的测试函数 def test_split(): 测试语句拆分功能 test_cases [ #你好很高兴认识你。今天天气真好我们去公园玩吧, # Python是一种广泛使用的解释型、高级的通用编程语言。它由荷兰人吉多·范罗苏姆于1989年圣诞节期间为了打发圣诞节的无趣而开发的。, # This is a test. Can you split these sentences correctly? I hope so!, # 这是一个非常长的句子中间没有任何标点符号测试模型是否能正确处理这种情况虽然有些难度但我们可以看看效果如何如果真的处理不了的话至少能返回原始文本。 #给出全市风险等级为一般风险的企业数量并说明如何划分安全风险评估的区域。, 查询全市涉及烷基化工艺的企业名单。并说明烷基化工艺的重点监控工艺参数。 ] for i, test_case in enumerate(test_cases, 1): print(f\n测试用例 {i}: {test_case}) sentences split_sentences(test_case, llm) print(f拆分结果 ({len(sentences)}个句子):) for j, sentence in enumerate(sentences, 1): print(f {j}. {sentence}) if __name__ __main__: # 默认运行主函数 #main() # 如果想要运行测试可以取消下面一行的注释 test_split()拆分子句轮询的结果可以直接拼接也可以再使用大模型来整合语言。九、Agent工作流开发完这些功能后发现该流程节点比较长的节点和流转比较固定适合使用WorkFlow来优化整体的代码结构。本系统的核心思想混合查询架构优先使用向量数据库检索自动质量评估和回退机制必要时切换到 MySQL Text-to-SQL 查询智能回退策略基于相似度分数判断结果质量检测回答中的低质量关键词自动触发 MySQL 查询回退多数据源支持Markdown /PDF/Word文档Excel 表格数据表结构说明MySQL 数据库结构化业务数据句子拆分处理支持复杂多句查询自动拆分并分别处理每个子问题合并多个子问题的答案本项目代码实战的得分如下分数不算高但是整体思路是没有问题的可在细节再打磨一下还能提升不少分数。比如后处理重排序BM25检索等多重检索大模型的选择。如何学习AI大模型 “最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线互联网企业工作十余年里指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】CSDN粉丝独家福利这份完整版的 AI 大模型学习资料已经上传CSDN朋友们如果需要可以扫描下方二维码点击下方CSDN官方认证链接免费领取【保证100%免费】读者福利CSDN大礼包《最新AI大模型学习资源包》免费分享 安全链接放心点击对于0基础小白入门如果你是零基础小白想快速入门大模型是可以考虑的。一方面是学习时间相对较短学习内容更全面更集中。二方面是可以根据这些资料规划好学习计划和方向。1.大模型入门学习思维导图要学习一门新的技术作为新手一定要先学习成长路线图方向不对努力白费。对于从来没有接触过AI大模型的同学我们帮你准备了详细的学习成长路线图学习规划。可以说是最科学最系统的学习路线大家跟着这个大的方向学习准没问题。全套教程文末领取哈2.AGI大模型配套视频很多朋友都不喜欢晦涩的文字我也为大家准备了视频教程每个章节都是当前板块的精华浓缩。3.大模型实际应用报告合集这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。全套教程文末领取哈4.大模型实战项目项目源码光学理论是没用的要学会跟着一起做要动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战项目来学习。全套教程文末领取哈5.大模型经典学习电子书随着人工智能技术的飞速发展AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型如GPT-3、BERT、XLNet等以其强大的语言理解和生成能力正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。全套教程文末领取哈6.大模型面试题答案截至目前大模型已经超过200个在大模型纵横的时代不仅大模型技术越来越卷就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道我总结了大模型常考的面试题。全套教程文末领取哈为什么分享这些资料?只要你是真心想学AI大模型我这份资料就可以无偿分享给你学习我国在这方面的相关人才比较紧缺大模型行业确实也需要更多的有志之士加入进来我也真心希望帮助大家学好这门技术如果日后有什么学习上的问题欢迎找我交流有技术上面的问题我是很愿意去帮助大家的这些资料真的有用吗?这份资料由我和鲁为民博士共同整理鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。CSDN粉丝独家福利这份完整版的 AI 大模型学习资料已经上传CSDN朋友们如果需要可以扫描下方二维码点击下方CSDN官方认证链接免费领取【保证100%免费】读者福利CSDN大礼包《最新AI大模型学习资源包》免费分享 安全链接放心点击