本地RAG知识库,如何进行数据结构化和清洗?
环境:
数据结构化和清洗
问题描述:
本地RAG知识库,如何进行数据结构化和清洗?
解决方案:
1. 数据结构化的重要性
-
RAG技术需求:在检索增强生成(Retrieval-Augmented Generation, RAG)中,数据的结构化至关重要。结构化的数据不仅能够帮助模型更准确地理解查询意图,而且可以提高信息检索的精度和生成文本的质量。非结构化数据往往包含大量噪声,可能导致语义上的误解,并影响最终答案的准确性。
-
解决痛点:通过对原始数据进行结构化处理,我们可以有效克服因关键词依赖导致的回答不准确、上下文割裂等问题。非结构化文本中的关键词提取可能会遗漏重要的语义信息,冗余的信息也可能干扰检索过程。而经过结构化处理的数据,则能确保文本被正确分割且易于管理,从而提升回答的准确率。
2. 结构化数据的优势
-
精准语义理解:通过为文档添加标签(如菜名、菜系、口味等),可以使模型更好地理解和识别文档的核心内容。这不仅有助于提高检索时的精确度,还能让生成的答案更加贴近用户的需求。
-
高效检索:结构化的数据支持基于多个维度的检索,比如按类别、食材等条件进行搜索,极大提高了检索效率。这对于构建高效的知识库尤为重要。
-
可控生成:在结构化过程中,保持同类同组数据的一致性,避免了不必要的数据分割,保证了数据的完整性,有助于提高模型生成结果的质量。
3. 结构化的方法
-
PDF文件清洗:首先需要对PDF文件进行预处理,去除无关的信息,如图片、表格等。如果图片中含有文字,需使用OCR技术将其转换为可读文本;对于表格,则应将其转化为文本格式以便后续处理。
-
打标签:接下来是对清洗后的数据进行标注,包括但不限于菜名、菜系、类别等。这样做不仅能丰富数据的内容,还有助于提高向量化和检索的准确性。
-
分块:根据实际需求自定义分段标识符,例如使用四个井号(####)作为分段标志,以避免默认分段可能带来的误差。这样可以确保每个分段内的数据都是完整的,便于导入知识库中进行进一步处理。
4. 结构化前后数据对比及效果评估
-
数据对比:未结构化的数据通常缺乏必要的标签,格式也较为杂乱,难以直接用于高效的检索和分析。相比之下,经过结构化处理的数据则具有清晰的段落划分和完整的标签体系。
-
效果评估:以一个包含30种菜品的PDF文件为例,采用rag框架工具和Python脚本对其进行处理。通过比较结构化前后的检索准确率发现,结构化之前准确率较低,而结构化之后准确率显著提高至95%以上。例如,在推荐川菜中的凉菜时,结构化前可能会出现错误推荐的情况,而结构化后则能够准确地推荐如“凉拌折耳根”这样的菜品。
5. 结论与演示
-
结论:数据结构化是实现高效RAG系统的关键步骤之一。特别是在特定领域内,它不仅可以改善问答系统的性能,还支持复杂的查询需求,充分释放数据的价值。
-
演示:最后,通过一个具体的案例演示了从原始数据到结构化数据转变的过程及其对检索准确率的影响。结果显示,经过结构化处理的数据不仅分段更加合理,而且检索准确率也得到了显著提升,验证了结构化策略的有效性。
二
1. 数据结构化对RAG的意义
-
提高检索效率:通过将肿瘤相关的问答数据进行结构化处理,可以使得RAG系统更加快速和准确地定位到用户的问题。例如,按照肿瘤类型、治疗方法等维度对数据进行分类,可以显著提升检索的匹配度,并缩短查询所需的时间。
-
增强生成质量:结构化的数据为语言模型提供了清晰有序的知识源,有助于生成更加准确、专业的答案。特别是在医学领域,任何错误或模糊的回答都可能导致严重的后果,因此确保回答基于可靠的知识基础是至关重要的。
-
便于知识管理和更新:结构化数据格式更容易被系统识别和管理,从而简化了数据更新的过程。相反,非结构化数据在更新时可能会导致混乱,影响RAG系统的性能和准确性。
2. 数据结构化的方法
-
分类打标签:针对肿瘤问答中的不同问题类型(如症状描述、治疗方案询问等)、病例详情以及治疗方法等信息进行分类并打上相应的标签。这样做不仅方便了后续的数据检索和管理,而且能够帮助系统快速找到与用户查询相关的信息。
-
实体抽取和关系建模:利用自然语言处理工具自动提取文档中的关键实体(如疾病名称、药物名称、检查项目等),并通过建立这些实体之间的关系来构建知识图谱。这一步骤对于增强大模型的理解能力和知识利用率至关重要。
-
层次结构化:无论是肿瘤领域还是其他领域,都可以根据其特点设计多层次的结构化方案。比如,在肿瘤领域中可以根据不同的癌症类型进一步细分,而在菜谱领域则可以根据不同的菜系进行分类。
-
明确结构化方向:核心目标是提高检索和生成的准确率。面对不同类型的数据,需要采用相应的结构化策略。同时,考虑到长尾效应,为了达到更高的准确率,还需要不断地细化和优化处理方式。
3. 肿瘤问答数据结构化过程及Python实现
-
准备工作:首先需要准备好Excel或CSV格式的数据集,然后将其转换成适合进一步处理的目标格式。这可能涉及到数据清洗、去除不必要的列或者行等工作。
-
代码实现:
- 使用
pandas
库读取Excel或CSV文件。 - 清洗数据,包括去除重复项、填补缺失值等。
- 根据问题内容和病例分析的需求格式化数据,并循环遍历每一行数据以执行必要的操作。
- 添加分段语句以便于后续处理,并保存最终的结构化数据文件。示例代码如下:
import pandas as pd# 读取Excel文件 df = pd.read_excel('path/to/your/excel_file.xlsx')# 数据清洗 df.dropna(inplace=True) # 去除缺失值# 格式化数据 def format_data(row):# 在这里定义如何格式化每一行数据return {'question': row['question'], 'category': row['category']}formatted_data = [format_data(row) for index, row in df.iterrows()]# 添加分段语句 for item in formatted_data:item['segment'] = '####' # 示例分段符# 保存文件 with open('structured_data.json', 'w') as f:json.dump(formatted_data, f)
- 使用
4. 测试验证
- 测试流程:通过模拟实际工作流来验证结构化数据的效果。输入一个具体的问题,经过本地知识库的检索后,再送入大型语言模型以获取最终的治疗建议或其他相关信息。
5. 总结
- 高效的数据结构化处理对于推动信息技术在医疗和问答领域的应用具有重要意义。如何使用Python程序对Excel格式的肿瘤问答数据进行结构化处理,旨在提高问答系统的准确性和可靠性。未来的工作还可以探索更多关于AI技术的应用,比如深度学习在实体识别上的进步,以及如何更好地整合多源异构数据等。
三
数据清洗与数据结构化
数据结构化核心内容
-
检索黑洞:原始非结构化的数据可能导致员工在查找特定信息时遇到困难,耗时且效率低下。
-
分析弹簧:由于非结构化数据难以挖掘其潜在价值,进行数据分析时可能会出现不准确的结果。
-
智能化鸿沟:大语言模型在处理非结构化文档时的准确率较低,这限制了它们在实际应用中的效果。
针对这些问题,数据结构化旨在实现以下三大核心目标:
-
检索效率:通过多级索引和分区分块等技术提高数据的检索速度。例如,利用向量数据库存储结构化后的文本片段,可以加快查询过程。
-
分析深度:通过对数据进行多级分块并打标签来增加数据被发现的概率,从而提高分析的准确性。
-
决策质量:确保获取的数据更加准确,为决策提供可靠的参考依据,使得决策过程更为精准。
在物理层面上,结构化数据可以通过切片分段、打标签等方式存入向量数据库;逻辑层面上,原数据经过标注后形成清晰的关系网络;而在应用层面,则能够支持多维度的索引以及动态更新数据的能力。
常见的数据结构化类型包括问答类、制度类、流程类、合同类等。
数据结构化形式对比
-
TXT 格式:TXT 文本具有纯净无干扰符号的特点,系统兼容性较强,通用性高。在轻量化处理场景下,占用 token 小,处理效率较高。
-
Markdown 格式:如果 Markdown 文件的解析工具不够完善,其中的符号可能会成为干扰因素,导致语义理解错误率上升。此外,Markdown 保留格式会引入一些非关键特征,降低检索的相关性。因此,在多数 AI 场景中,优先选择清洗后的 TXT 格式。
Dify 工作流实战
为了实现数据结构化,您可以按照以下步骤准备并搭建 Dify 工作流:
-
准备工作:准备好需要参考制作的文件,并确保已搭建好 Dify ex inference 环境(飞书作为可选组件)。
-
创建工作流:
- 定义起始点:输入文本名称、选择文件类型(如 PDF)、本地上传文件。
- 创建文档提取器:将上传的 PDF 文件转换成纯文本。
- 创建大语言模型节点:使用 DEVC 和 7B 模型,输入文档提取器的内容及提示词,让模型对内容进行结构化处理。
- 如果需要集成飞书,创建飞书节点和结束节点:飞书节点负责输入文档名称和模型输出的内容,飞书节点和结束节点可以并行执行。
-
运行工作流:输入文件名并上传规章制度文件,模型处理完成后,结果可以在结束节点查看,同时也会保存到飞书文档中。最终处理好的数据包含分段符、标签和具体内容,适用于构建知识库。
相关文章:
本地RAG知识库,如何进行数据结构化和清洗?
环境: 数据结构化和清洗 问题描述: 本地RAG知识库,如何进行数据结构化和清洗? 解决方案: 1. 数据结构化的重要性 RAG技术需求:在检索增强生成(Retrieval-Augmented Generation, RAG…...
开源测试用例管理平台
不可错过的10个开源测试用例管理平台: PingCode、TestLink、Kiwi TCMS、Squash TM、FitNesse、Tuleap、Robot Framework、SpecFlow、TestMaster、Nitrate。 开源测试用例管理工具提供了一种透明、灵活的解决方案,使团队能够在不受限的情况下适应具体的测…...
OpenAI最近放出大新闻,准备在接下来的几个月内推出一款“开放”的语言模型
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
锁策略--
文章目录 乐观锁和悲观锁轻量锁和重量锁自旋锁和挂起等待锁读写锁和互斥锁可重入锁和不可重入锁公平锁和非公平锁 乐观锁和悲观锁 乐观锁在执行任务前预期竞争不激烈,就先不添加锁等到了发生了真实的锁竞争再进行锁竞争 乐观锁适用于锁竞争不激烈的情况下 悲观锁在…...
IO多路复用
BIO(同步阻塞) 当客户端请求连接到服务端请求过程中其实是通过socket连接,socket的意思其实就是插座,可以理解成手机需要充电,这里的电要从服务端获取,手机的充电口和服务端的插座都是socket,假…...
AF3 OpenFoldSingleDataset类解读
AlphaFold3 data_modules 模块的 OpenFoldSingleDataset类 是 OpenFold 中的一个数据集类,继承自 torch.utils.data.Dataset,用于加载和处理蛋白质结构数据,以支持 AlphaFold3 相关的深度学习任务。OpenFoldSingleDataset 读取的多序列比对(MSA)数据、模板(template)特征…...
高级java每日一道面试题-2025年3月21日-微服务篇[Nacos篇]-什么是Nacos?
如果有遗漏,评论区告诉我进行补充 面试官: 什么是Nacos? 我回答: Nacos综合解析 一、Nacos的定义与功能 Nacos是阿里巴巴开源的一个专注于动态服务发现、配置管理和服务管理平台,其名称来源于Dynamic Naming and Configuration Service(…...
C++练习3
练习 终端上输出 3.14 要求实现 myDouble的 operator operator- operator* (不考虑进位) class myOut { 没有私有成员 只有公开函数 } myOut out; out << 1 终端输出1 out << 3.14 终端输出3.14 out << "hello" 终…...
Deepseek API+Python 测试用例一键生成与导出 V1.0.6(加入分块策略,返回更完整可靠)
随着Deepseek APIPython 测试用例一键生成与导出 V1.0.5的试用不断深入,在处理需求文档内容时,会出现由于文档内容过长导致大模型返回的用例远达不到我们的期望数量;另一方面,是接口文档的读取,如果接口数量过多&#…...
JDK 17 + Spring Boot 3 全栈升级实战指南--从语法革新到云原生,解锁企业级开发新范式
🚀 技术升级背景 随着 JDK 17(LTS) 与 Spring Boot 3 的发布,Java 生态迎来性能与开发效率的双重飞跃。相较于 JDK 8,JDK 17 在语法、API、GC 等方面均有显著优化,而 Spring Boot 3 则全面拥抱 Jakarta EE…...
phpStorm2021.3.3在windows系统上配置Xdebug调试
开始 首先根据PHP的版本下载并安装对应的Xdebug扩展在phpStorm工具中找到设置添加服务添加php web page配置完信息后 首先根据PHP的版本下载并安装对应的Xdebug扩展 我使用的是phpStudy工具,直接在php对应的版本中开启xdebug扩展, 并在php.ini中添加如下…...
DFS/BFS简介以及剪枝技巧
DFS简介 DFS含义 ⭐ DFS,即Depth-first-search,是深度优先搜索的简称。 它的主要思路是一直沿当前分支搜索,当搜索到尽头之后返回,再逐步向其他地方扩散。 我们可以通过一个树形结构说明DFS的遍历顺序 A/ | \B C D/ \ |E…...
LeetCode[15]三数之和
思路: 一开始我想的用哈希表来做,但是怎么想怎么麻烦,最后看解析,发现人家用的双指针,那我来讲一下我这道题理解的双指针。 这道题使用双指针之前一定要给数组进行排序,ok为什么排序?因为我需要…...
高性能计算面经
高性能计算面经 C八股文真景一面凉经自我介绍,介绍一下你做过的加速的模块(叠噪,噪声跟原图有什么关系?)OpenGL和OpenCL有什么区别?**1. 核心用途****2. 编程模型****3. 硬件抽象****4. API设计****5. 典型应用场景****6. 互操作性…...
HTML 标签类型全面介绍
HTML 标签类型全面介绍 HTML(HyperText Markup Language)是构建 Web 页面结构的基础语言。HTML 由不同类型的标签组成,每种标签都有特定的用途。本文将全面介绍 HTML 标签的分类及其用法。 1. HTML 标签概述 HTML 标签通常成对出现…...
【漫话机器学习系列】168.最大最小值缩放(Min-Max Scaling)
在机器学习和数据预处理中,特征缩放(Feature Scaling) 是一个至关重要的步骤,它可以使模型更稳定,提高训练速度,并优化收敛效果。最大最小值缩放(Min-Max Scaling) 是其中最常见的方…...
Spring Boot中对同一接口定义多个切面的示例,分别通过接口方式和注解方式实现切面排序,并对比差异
以下是Spring Boot中对同一接口定义多个切面的示例,分别通过接口方式和注解方式实现切面排序,并对比差异: 一、接口方式实现切面排序 1. 定义接口 // 服务接口 public interface MyService {void methodA();void methodB(); }// 接口实现类…...
基于SpringBoot的高校学术交流平台
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
数据治理的专题库
数据治理专题库的全面解析 一、专题库的定义与定位 数据治理专题库是围绕特定业务领域或场景构建的专业化数据库,其核心在于业务导向性和自主性。与基础库(如人口、法人、地理信息等跨部门核心实体数据)和主题库(如市场监管中的…...
【MathType】MathType安装和嵌入word
MathType 是一款功能强大的数学公式编辑器,广泛应用于学术论文、教材编写、科研报告等领域。它支持多种数学符号、公式排版,并且与 Microsoft Word、Google Docs、WPS 等办公软件兼容,极大地方便了数学公式的输入和编辑 记录一下安装的过程 …...
mediacodec服务启动时加载media_codecs.xml
media.codec服务启动时, 会创建 implementation::Omx 和 implementation::OmxStore, 构造 Omx时, 会解析codec相关的xml文件,一般从会如下目录中, // from getDefaultSearchDirs() { "/product/etc",&quo…...
Scala(三)
本节课学习了函数式编程,了解到它与Java、C函数式编程的区别;学习了函数的基础,了解到它的基本语法、函数和方法的定义、函数高级。。。学习到函数至简原则,高阶函数,匿名函数等。 函数的定义 函数基本语法 例子&…...
kafka 报错消息太大解决方案 Broker: Message size too large
kafka-configs.sh --bootstrap-server localhost:9092 \ --alter --entity-type topics \ --entity-name sim_result_zy \ --add-config max.message.bytes10485880 学习营课程...
APScheduler定时
异步IO 定时(协程) import asyncio import logging from apscheduler.schedulers.asyncio import AsyncIOScheduler from apscheduler.triggers.cron import CronTriggerlogging.basicConfig(levellogging.INFO) logger logging.getLogger(__name__)class Schedul…...
[GESP202503 C++六级题解]:P11962:树上漫步
[GESP202503 C++六级题解]:P11962:树上漫步 题目描述 小 A 有一棵 n n n 个结点的树,这些结点依次以 1 , 2 , ⋯ , n 1,2,\cdots,n 1,2,⋯,n 标号。 小 A 想在这棵树上漫步。具体来说,小 A 会从树上的某个结点出发,每⼀步可以移动到与当前结点相邻的结点,并且小 A…...
JavaScript基础-常见网页特效案例
在现代Web开发中,JavaScript不仅是处理业务逻辑的核心工具,也是实现丰富交互体验的关键。通过JavaScript,我们可以轻松地为网页添加各种动态效果和交互特性,从而提升用户体验。本文将介绍几种常见的网页特效案例,并提供…...
数据结构4
day4 5.队列 Queue 5.1 特性 队列是只允许再两端进行插入和删除操作的线性表,在队尾插入,在队头删除,插入的一段被称为“队尾”,删除的一端被称为“队头”。队列包括循环队列(顺序队列)、链式队列。结构:先进先出&…...
Rust 为什么不适合开发 GUI
前言 在当今科技蓬勃发展的时代,Rust 编程语言正崭露头角,逐步为世界上诸多重要基础设施提供动力支持。从存储海量信息到应用于 Linux 内核,Rust 展现出强大的实力。然而,当涉及构建 GUI(图形用户界面)时&…...
DisplayPort版本对比
目前视频接口标准基本上被HDMI和DisplayPort两大标准给瓜分天下了。 (1) HDMI由消费电子厂商主导,最新版本(如HDMI 2.1)理论带宽为48Gbps,主要应用于电视、游戏主机及家庭影音设备。 (2…...
YOLOv12即插即用-Pconv(风车卷积)
1.模块介绍 PinwheelConv(风车状卷积)充分利用了IRST(红外搜索与跟踪)中的高斯分布特性,以极少的参数实现了高效且更大感受野的特性。此外,本文还提出了一种简单而高效的 SD 损失函数,有效缓解了标签 IoU 变化带来的不稳定性。通过与现有卷积模块和损失函数的广泛对比,…...
AI知识补全(十四):零样本学习与少样本学习是什么?
名人说:一笑出门去,千里落花风。——辛弃疾《水调歌头我饮不须劝》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:AI知识补全(十三):注意力…...
Pycharm(十一):字符串练习题
1.输入一个字符串,打印所有偶数位上的字符(下标是0,2,4,6...位上的字符) # 练习题1:输入一个字符串,打印所有偶数位上的字符(下标是0,2,4,6...位上的字符) # 1.键盘录入字符串&…...
设计原则之迪米特法则
一、定义 迪米特法则又称为最少知识原则(Law of Demeter,LoD),是一项用于面向对象设计的基本原则之一。该原则强调一个对象应该对其他对象有最少的了解,即一个类不应该知道太多关于其他类的内部细节。 二、好处 迪米…...
Debian系统_主板四个网口1个配置为WAN,3个配置为LAN
Debian系统_主板四个网口1个配置为WAN,3个配置为LAN 一、重新配置网口 1、查看当前网口的状态 ifconfig 或者 ip link show 或者 ls /sys/class/net 2、修改网络配置文件 sudo vi /etc/network/interfaces 注意WAN口的网关地址如果是192.168.3.1的话,L…...
Spring Boot 快速入手
前言:为什么选择 Spring Boot? 🚀 在现代 Java 开发中,Spring Boot 已成为最流行的后端框架之一。无论是小型 Web 应用、企业级系统,还是微服务架构,Spring Boot 都能提供快速开发、自动配置、轻量级部署的…...
Ubuntu Live USB 如何使用
以下是使用 Ubuntu Live USB 的详细指南,涵盖启动、试用系统、安装系统及常用工具操作: 1. 制作 Ubuntu Live USB • 所需工具: • Ubuntu ISO 镜像(从 官网 下载)。 • U盘(至少 4GB,数据将被…...
基于单片机的音乐播放器系统设计
基于单片机的音乐播放器系统设计是一个综合性较强的电子系统开发项目 系统概述 基于单片机的音乐播放器旨在利用单片机的控制功能,结合音频处理电路、存储单元等,实现音乐的播放、暂停、切换、音量调节等功能,可应用于小型便携式音频设备、电子玩具、智能家居背景音乐系统等…...
HttpClient-01.介绍
一.介绍 通过HttpClient,我们可以在Java程序中构造并发送Http请求。要使用HttpClient,就要导入依赖坐标。 核心API: HttpClient:Http客户端,使用它可以发送http请求。 HttpClients:构建器,使…...
2025年win10使用dockerdesktop安装k8s
一、写作背景 百度了一圈, 要么教程老,很多操作步骤冗余, 要么跑不通,或者提供的链接失效等情况。 二、看前须知 1、安装过程使用的AI辅助, 因为参考的部分博客卡柱了。 2、如果操作过程中遇到卡顿, …...
技术回顾day2
1.获取文件列表 流程:前端根据查询条件封装查询信息,后端接收后进行封装,封装为FileInfoQuery,根据fileInfoQuery使用mybatis的动态sql来进行查询。 2.文件分片上传 每次上传需要上传包括(文件名字,文件,md5值&#…...
软件工程-UML
例图,类图,状态图,顺序图,活动图 目录 例图 类图 状态图 顺序图 活动图 例图 例图由四个元素组成,参与者、用例、系统边界、参与者和用例之间的关系 参与者用一个小人表示,用例用椭圆表示ÿ…...
赛逸展2025“创新引擎”启动:限量席位,点亮科技绿色新征程
当今时代,科技革新与绿色发展已然成为推动社会进步的双引擎。2025第七届亚洲消费电子技术贸易展(赛逸展)敏锐捕捉这一趋势,重磅打造“科技创新专区”,并面向科技、绿色企业吹响限量招募号角。 这个独具特色的专区紧扣…...
前后台系统
前后台系统(Foreground/Background System)是一种常见的嵌入式系统编程模型,尤其是在那些不需要复杂操作系统的简单系统中。这种系统架构通常用于实时性要求不是极端苛刻的环境,但在响应外部事件时仍需要一定的及时性。下面我将详…...
VHT AMPDU
A - MPDU 由一个或多个 A - MPDU 子帧以及可变数量的 EOF填充子帧组成。 在 VHT中,存在如下填充: 一个 A - MPDU 子帧的填充子字段中有 0 - 3 个字节。 EOF 填充字段中有零个或多个 EOF 填充子帧。 EOF 填充子帧中EOF填充字节中有 0 - 3 个字节。 A - MPDU 帧结束前填充(A -…...
Spring框架如何做EhCache缓存?
在Spring框架中,缓存是一种常见的优化手段,用于减少对数据库或其他资源的访问次数,从而提高应用性能。Spring提供了强大的缓存抽象,支持多种缓存实现(如EhCache、Redis、Caffeine等),并可以通过…...
助力 Windows 文件管理:重命名与清理重复文件软件精选
软件介绍 在日常的电脑使用中,高效管理文件至关重要。接下来为大家介绍几款实用软件,能助您轻松搞定文件管理难题。 AdvancedRenamer:全能批量重命名利器 专为 Windows 系统打造的 AdvancedRenamer,功能堪称强大。无论是文本替…...
重建二叉树(C++)
目录 1 问题描述 1.1 示例1 1.2 示例2 1.3 示例3 2 解题思路 3 代码实现 4 代码解析 4.1 初始化 4.2 递归部分 4.3 主逻辑 5 总结 1 问题描述 给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。 例如输入前序遍历序…...
Go+Gin实现安全多文件上传:带MD5校验的完整解决方案
后端 package mainimport ("encoding/json""fmt""log""net/http""os""path/filepath""github.com/gin-contrib/cors""github.com/gin-gonic/gin" )// 前端传来的文件元数据 type FileMetaRe…...
SwanLab Slack通知插件:让AI训练状态同步更及时
在AI模型训练的过程中,开发者常常面临一个难题:如何及时跟踪训练状态?无论是实验超参数的调整、关键指标的变化,还是意外中断的告警,传统的监控方式往往依赖手动刷新日志或反复检查终端,这不仅效率低下&…...
JavaScript元素尺寸与位置
目录 client 家族与 offset 家族 一、client 家族:内容区域 内边距 示例代码 应用场景 二、offset 家族:内容区域 内边距 边框 滚动条 示例代码 应用场景 三、综合应用场景 1. 动态调整元素高度 2. 拖拽元素 3. 判断元素是否在视口内 四…...