【AI论文】ReasonIR:为推理任务训练检索器
摘要:我们提出了ReasonIR-8B,这是第一个专门针对一般推理任务进行训练的检索器。 现有的检索器在推理任务上表现出的收益有限,部分原因是现有的训练数据集侧重于与直接回答它们的文档相关的简短事实查询。 我们开发了一个合成数据生成管道,对于每个文档,我们的管道都会创建一个具有挑战性和相关性的查询,以及一个看似相关但最终无益的否定性查询。 通过在我们的合成数据和现有公共数据的混合上进行训练,ReasonIR-8B在广泛使用的推理密集型信息检索(IR)基准BRIGHT上实现了29.9 nDCG@10(无重新排序)和36.9 nDCG@10(有重新排序)的最新技术水平。当应用于RAG任务时,与闭卷基线相比,ReasonIR-8B将MMLU和GPQA性能分别提高了6.4%和22.6%,优于其他检索器和搜索引擎。 此外,ReasonIR-8B更有效地利用了测试时的计算:在BRIGHT上,随着重写查询的增加和信息量的丰富,其性能持续提高; 当与LLM重新排序器结合使用时,它继续优于其他检索器。 我们的培训方案是通用的,可以很容易地扩展到未来的法学硕士; 为此,我们开源了我们的代码、数据和模型。Huggingface链接:Paper page,论文链接:2504.20595
研究背景和目的
研究背景
在自然语言处理(NLP)领域,随着大型语言模型(LLMs)的快速发展,其在知识寻求任务(如事实问答)中展现出了卓越的性能。然而,对于需要复杂推理的任务,现有的检索器表现仍然有限。传统的检索器主要针对简短的事实查询进行优化,这些查询通常与直接回答它们的文档相关联。然而,在处理复杂推理任务时,如数学证明、科学解释或逻辑推断等,这些检索器往往难以捕捉到与任务紧密相关的深层信息。
现有的推理密集型信息检索(IR)基准测试,如BRIGHT,揭示了传统检索器在处理复杂推理查询时的不足。这些查询往往要求检索器能够检索到广泛的背景知识、有效的推理模式或使用类似方法解决的演示问题。因此,开发一种专门针对推理任务进行优化的检索器变得尤为重要。
研究目的
本研究旨在提出ReasonIR-8B,这是第一个专门针对一般推理任务进行训练的检索器。通过开发一个合成数据生成管道,我们能够为每个文档创建一个具有挑战性和相关性的查询,以及一个看似相关但最终无益的否定性查询(硬否定)。通过在合成数据和现有公共数据的混合上进行训练,ReasonIR-8B旨在显著提升在推理密集型信息检索任务上的性能。
具体而言,本研究的目的包括:
-
提升推理任务的信息检索质量:通过专门针对推理任务进行训练,使ReasonIR-8B能够更准确地识别并检索出与推理任务高度相关的信息。
-
探索合成数据在检索器训练中的应用:通过合成数据生成管道,生成大量具有挑战性和多样性的训练数据,以弥补现有公共数据集在推理任务上的不足。
-
评估ReasonIR-8B在RAG任务中的性能:将ReasonIR-8B应用于检索增强生成(RAG)任务中,评估其在提升LLMs性能方面的效果。
-
开源代码、数据和模型:为了促进未来研究的发展,我们将开源ReasonIR-8B的代码、数据和模型。
研究方法
合成数据生成管道
为了训练ReasonIR-8B,我们开发了一个合成数据生成管道,该管道包括以下几个关键步骤:
-
多样化长度查询和文档生成:生成不同长度的查询及其对应的合成文档,以扩展检索器的有效上下文长度。
-
硬查询生成:基于高质量文档生成具有挑战性的推理密集型查询。这些查询要求推理能力超越简单的词汇或表面语义匹配。
-
多轮硬否定生成:采用多轮方法生成硬否定,即与查询表面相关但实际上无帮助的文档。这解决了传统硬否定挖掘方法在推理密集型查询上效果不佳的问题。
检索器训练
我们使用Llama 3.1-8B作为基础模型,通过对比学习目标函数对ReasonIR-8B进行微调。训练数据包括公共数据集、合成数据(多样化长度数据和硬查询数据)的混合。为了增强嵌入质量,我们修改了Llama 3.1-8B的注意力掩码,从因果注意力掩码改为双向注意力掩码。
评估方法
我们在BRIGHT基准测试上评估ReasonIR-8B的信息检索性能,该基准测试涵盖了生物学、经济学、数学和编码等12个学科的推理密集型查询。此外,我们还在MMLU和GPQA等RAG任务上评估了ReasonIR-8B的性能,使用Llama 3.1-8B和Qwen 2.5-7B-Instruct作为阅读模型。
研究结果
信息检索性能
ReasonIR-8B在BRIGHT基准测试上取得了显著的性能提升。在没有重新排序器的情况下,ReasonIR-8B达到了29.9 nDCG@10的最新技术水平;当与LLM重新排序器结合使用时,性能进一步提升至36.9 nDCG@10。这表明ReasonIR-8B在检索与推理任务高度相关的信息方面表现卓越。
RAG任务性能
在MMLU和GPQA等RAG任务上,ReasonIR-8B相对于闭卷基线分别提升了6.4%和22.6%的性能,优于其他检索器和搜索引擎。这表明ReasonIR-8B在为LLMs提供高质量检索结果方面表现出色,从而显著提升了RAG任务的性能。
测试时计算效率
ReasonIR-8B在测试时计算效率方面也表现出色。随着重写查询的增加和信息量的丰富,ReasonIR-8B在BRIGHT上的性能持续提高。当与LLM重新排序器结合使用时,ReasonIR-8B继续优于其他检索器。
研究局限
尽管ReasonIR-8B在推理密集型信息检索任务上取得了显著的性能提升,但本研究仍存在一些局限:
-
合成数据的质量:尽管我们采用了多轮硬否定生成等方法来提高合成数据的质量,但合成数据与真实世界数据之间仍可能存在差异。这可能影响ReasonIR-8B在真实场景中的泛化能力。
-
检索器的可解释性:ReasonIR-8B作为一个黑箱模型,其检索决策过程缺乏可解释性。这可能限制了其在某些对可解释性要求较高的应用场景中的使用。
-
计算资源需求:训练ReasonIR-8B需要大量的计算资源,包括高性能GPU和长时间训练。这可能限制了该技术在资源有限环境中的应用。
未来研究方向
针对上述局限,未来的研究可以从以下几个方面展开:
-
提高合成数据的质量:探索更先进的合成数据生成方法,如利用生成对抗网络(GANs)或变分自编码器(VAEs)来生成更逼真的合成数据。同时,可以考虑结合真实世界数据来进一步优化合成数据的质量。
-
增强检索器的可解释性:研究如何提高ReasonIR-8B等深度学习模型的可解释性,例如通过可视化技术或引入注意力机制来揭示模型的决策过程。这将有助于增强用户对模型的信任,并促进模型在更多应用场景中的使用。
-
优化计算资源利用:探索更高效的训练算法和硬件加速技术,以降低训练ReasonIR-8B所需的计算资源。例如,可以考虑使用混合精度训练、模型剪枝或量化等技术来减少模型的存储和计算需求。
-
拓展应用场景:将ReasonIR-8B应用于更多需要复杂推理的任务中,如自然语言推理、问答系统或对话系统等。通过不断拓展应用场景,可以进一步验证ReasonIR-8B的通用性和有效性。
-
结合多模态信息:考虑将文本、图像、音频等多模态信息结合到检索过程中,以提升ReasonIR-8B在处理多模态推理任务时的性能。这将需要开发新的多模态检索器和融合策略。
-
持续学习和自适应:研究如何使ReasonIR-8B具备持续学习和自适应的能力,以便在面对新领域或新任务时能够快速适应并保持高性能。这可以通过在线学习、迁移学习或元学习等技术来实现。
总之,本研究提出了ReasonIR-8B,这是第一个专门针对一般推理任务进行训练的检索器。通过合成数据生成管道和对比学习训练,ReasonIR-8B在推理密集型信息检索任务上取得了显著的性能提升。未来的研究可以进一步探索如何提高合成数据的质量、增强检索器的可解释性、优化计算资源利用、拓展应用场景、结合多模态信息以及实现持续学习和自适应。这些研究方向将有助于推动推理密集型信息检索技术的发展,并为自然语言处理领域带来更多的创新和应用。
相关文章:
【AI论文】ReasonIR:为推理任务训练检索器
摘要:我们提出了ReasonIR-8B,这是第一个专门针对一般推理任务进行训练的检索器。 现有的检索器在推理任务上表现出的收益有限,部分原因是现有的训练数据集侧重于与直接回答它们的文档相关的简短事实查询。 我们开发了一个合成数据生成管道&am…...
嵌入式AI还是一片蓝海
发现其实还是挺多人关注嵌入式和人工智能交叉领域的,随便一个问题,浏览量就27万了,但是这方面的内容确实少得可怜……所以干脆我自己来补点干货。 推荐一本最近很热门的新书——《边缘人工智能:用嵌入式机器学习解决现实问题》。 …...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(13): ておきます ています & てあります
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(13): ておきます &ています & てあります 。 1、前言(1)情况说明(2)工程师的信仰 2、知识点(1)&#x…...
CMake管理外部依赖的模块
在 CMake 中,FetchContent 和 ExternalProject 都是管理外部依赖的模块,但它们的 设计目标、使用场景和执行时机 有本质区别。以下通过对比表格、代码示例和场景分析详细说明它们的区别。 核心区别对比表 特性FetchContentExternalProject执行阶段配置阶…...
[计算机科学#7]:CPU的三阶段,取指令、解码、执行
【核知坊】:释放青春想象,码动全新视野。 我们希望使用精简的信息传达知识的骨架,启发创造者开启创造之路!!! 内容摘要:本文详细介绍了CPU的工作原理,包括其结构…...
向量数据库和关系型数据库的区别,优点,缺点和典型应用场景
向量数据库与关系型数据库的全面对比 向量数据库和关系型数据库是两种截然不同的数据管理系统,各自针对特定的数据模型和查询模式进行了优化。随着人工智能和大数据技术的发展,向量数据库作为新兴的数据库类型,在处理非结构化数据方面展现出…...
《跨越边界:探索跨端框架中通用状态管理方案设计》
一款应用往往需要在多个终端,如Web、移动端、桌面端等同时运行,以满足用户多元化的使用场景。在这复杂的跨端开发领域中,状态管理堪称关键枢纽,直接关乎应用的性能、稳定性以及开发与维护的效率。如何设计一套通用的状态管理方案&…...
PHP之CURL通过header传参数及接收
一、传参数之冒号 注意一点,这里的header数据不是KV结构,而是一个一维数组。 看清楚,注意一点,是这样的结构: $ch curl_init(); $headers [X-Custom-Header: value123,Authorization: Bearer your_token_here // …...
【C++】brpc安装
brpc安装教程 环境:Ubuntu24.04 1 简单安装 即安装到系统环境下,依赖也是依赖apt安装。 官方参考教程 依赖准备 安装依赖: sudo apt-get install -y git g make libssl-dev libgflags-dev libprotobuf-dev libprotoc-dev protobuf-com…...
从0开始的c++知识讲解之字符串(1)
作者作为新手,对于知识的讲解也是边输出内容也是边学习,如有缺陷,请多海涵,但同样,我会帮助你从新手视角看到新手的疑惑,并帮助你解决此疑惑 一,开宗明义,立意先行 string在C里有可…...
Linux 第六讲 --- 工具篇(一)yum/apt与vim
前言: 经过前五讲对Linux基础指令与权限系统的系统学习,相信你已经能在命令行中自如地穿梭于文件丛林,精准调配权限密钥。但真正的Linux玩家,绝不会止步于基础操作的重复劳作。 从今天起,我们将打开Linux的"瑞士…...
xml 和 yaml 的区别
XML 和 YAML/YML 是两种常用的数据序列化格式,用于存储和读取结构化数据。以下是它们的核心区别和使用方法: 1. 格式特性对比 特性XMLYAML/YML语法复杂度标签嵌套,结构严格缩进分层,更简洁可读性较低(冗余标签&#…...
1.67g 雨晨 22635.5305 Windows 11 企业版 23H2 极速增强版
五一特别制作 (主要更新简述) 全程由最新YCDISM2025装载制作 1、可选功能: 添加: Microsoft-Windows-LanguageFeatures-Basic-en-us-Package Microsoft-Windows-LanguageFeatures-OCR-en-us-Package 2、功能增强&a…...
【C++】类和对象(中)——默认成员函数详解(万字)
文章目录 上文链接类的默认成员函数1. 构造函数(1) 什么是构造函数(2) 构造函数的使用 2. 析构函数(1) 什么是析构函数(2) 析构函数的使用(3) 小练习 3. 拷贝构造函数(1) 什么是拷贝构造函数(2) 拷贝构造函数的使用 4. 赋值运算符重载(1) 运算符重载(2) 运算符重载的简单应用(3…...
Ubuntu18 登录界面死循环 Ubuntu进不了桌面
今天碰到这个问题,真是把我恶心到了 网上很多方法都不靠谱,最后我还是自己摸索出一个方法 先进入终端 开机后在登陆界面按下shift ctrl F1(或者F2,一直按)进入tty命令行终端登陆后输入(本人的用户名为hpÿ…...
caffe适配cudnn9.6.0(ai修改代码踩坑)
caffe适配cudnn:https://github.com/dyc2424748461/caffe (测试一下,成没成,反正我看到它用gpu了😶) 因为突发奇想,想要玩easymocap,先是简单使用media跑通了一下,然后过…...
【MySQL数据库】视图
1,视图的基本介绍 视图是一个虚拟表,其内容由查询定义。与真实表一样的是,视图包含带有名称的列和行数据;与真实表不一样的是,视图本身并不在数据库中存储数据。视图的数据变化会影响到基表,基表的数据变化…...
Linux日常使用与运维的AI工具全景调研:效率革命的终极指南
Linux日常使用与运维的AI工具全景调研:效率革命的终极指南 引言:当Linux遇上AI,运维世界正在发生什么? 作为一名Linux系统管理员,你是否还在为以下问题困扰: 深夜被报警短信惊醒,却要手动排查复杂的系统故障?面对海量日志文件,像大海捞针一样寻找关键错误信息?重复…...
Linux——线程(3)线程同步
一、线程同步的引入 通过上面的抢票系统我们发现,有的线程,进行工作(挂锁),当其马上结束工作(解锁),发现外面有很多线程在排队等着加锁执行任务,这个线程解锁后就立马给…...
Redis实现分布式锁
分布式锁是分布式系统中解决资源竞争问题的重要机制。Redis凭借其高性能和原子性操作,成为实现分布式锁的热门选择。本文将详细介绍如何使用Java和Redis实现分布式锁,并重点讲解如何通过Lua脚本保证锁操作的原子性。 一、分布式锁的基本要求 一个可靠的…...
JavaScript如何实现类型判断?
判断一个数据的类型,常用的方法有以下几种: typeofinstanceofObject.prototype.toString.call(xxx) 下面来分别分析一下这三种方法各自的优缺点 typeof typeof的本意是用来判断一个数据的数据类型,所以返回的也是一个数据类型。但是会遇到下…...
Spring MVC 与 FreeMarker 整合
以下是 Spring MVC 与 FreeMarker 整合的详细步骤,包含配置和代码示例: 1. 添加依赖 在 pom.xml 中引入 Spring MVC 和 FreeMarker 的依赖(以 Maven 为例): <!-- Spring Web MVC --> <dependency><gr…...
设计模式简述(十五)观察者模式
观察者模式 描述基本组件使用 描述 观察者模式,顾名思义就是一个对象观察着其他对象,一旦被观察的对象发生变化时,观察者对象也要做出相应动作。 其中,被观察者持有观察者的引用。由观察者主动注入被观察者内(有点像…...
用手机相册教我数组概念——照片分类术[特殊字符][特殊字符]
目录 前言一、现实场景1.1 手机相册的照片管理1.2 照片分类的需求 二、技术映射2.1 数组与照片分类的对应关系2.2 数组索引与照片标签的类比 三、知识点呈现3.1 数组的基本概念3.2 数组在编程中的重要性3.3 数组的定义与初始化3.4 数组的常见操作(增删改查ÿ…...
字符串格式漏洞-[第五空间2019 决赛]PWN5
之前其实也写了一篇,现在再来看。又有新的收获了,于是记录一下 前置知识 格式化字符串漏洞详解-CSDN博客 讲得很清楚,我就不照猫画虎了 实践 main函数 首先先办法泄露我们输入的地址 from pwn import * elfpathlevel0 # ioprocess(elfp…...
数据结构学习之顺序表
在C语言学习到一定阶段之后,接下来我们就进入到了数据结构的部分内容。 目录 数据结构与线性表 顺序表 顺序表分类: 接下来我们要写一段代码实现动态顺序表。 首先我们需要准备三个文件: 1.接下来我们要定义一个数据表 2.当创建号我们的…...
AWS CloudFront全球加速利器:解析出海业务的核心优势与最佳实践
对于寻求全球化发展的企业而言,AWS CloudFront凭借其强大的全球基础设施和边缘计算能力,成为加速出海业务的关键工具。本文将深入剖析CloudFront的核心优势,并探讨其如何助力企业突破跨境业务瓶颈,同时符合SEO优化策略,…...
Flowable7.x学习笔记(十六)分页查询我的待办
前言 我的待办具体区分为3种情况,第一个就是办理人指定就是我,我可以直接审批;第二种就是我是候选人,我需要先拾取任务然后再办理;第三种是我是候选组,我需要切换到指定的角色去拾取任务再办理。如果任务已…...
Annotate better with CVAT
WIN10 配置标注环境 WSL + Docker Desktop 安装手册 https://docs.cvat.ai/docs/administration/basics/installation/ hebing@hello:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE cvat/ui …...
QML Image 组件详解
目录 引言相关阅读QML Image元素基础知识 项目结构示例解析1. 本地资源图像加载2. 网络图像加载3. 图像填充模式 应用主结构 总结下载链接 引言 本文将介绍QML中Image元素的基本用法和关键特性,包括加载本地资源图像、处理网络图像、以及调整图像的填充模式。通过一…...
BOFZ 緩衝區溢出shell脚本檢測工具
地址:https://github.com/MartinxMax/bofz BOFZ BOFZ 是一款簡單的緩衝區溢出掃描器,旨在檢測指定可執行文件中的緩衝區溢出漏洞。 此工具可用於快速測試應用程序或二進制文件中是否存在常見的安全缺陷,特別是那些由於對用戶輸入處理時邊界檢查不當而引…...
【Dify系列教程重置精品版】第五章:Dify配置Ollama
上一章我们在Dify上尝试配置了“月之暗面”。这一章我们在Dify上配置另一个模型“Ollama”。 什么是ollama呢?简单来说:它允许用户在个人计算机或服务器上快速部署和管理多种开源大语言模型,如 Llama3、Phi3、Gemma2 等,而无需依赖昂贵的云服务或专业的技术背景。 反正就是…...
RISC-V AIA SPEC学习(四)
第五章 Interrupts for Machine andSupervisor Levels 核心内容 1.主要中断类型与默认优先级: 定义了机器级别(M-level)和监管者级别(S-level)的标准中断类型(如MEI、SEI、MTI等)。默认优先级规则:本地中断(如软件/定时器)优先级高于外部中断,RAS事件(如低/高…...
Leetcode刷题报告2——双指针法
文章目录 前言[15. 三数之和](https://leetcode.cn/problems/3sum/)题干题解知识点总结 [42. 接雨水](https://leetcode.cn/problems/trapping-rain-water/)题干题解 前言 这部分总共是4道题,我就挑两道比较典型的题写一下博客吧。 双指针法的核心思路是通过合理的…...
线段树原理和代码详解
目录 线段树维护的信息类型 线段树的结构 线段树的初始化 线段树的功能: 单点修改,区间查询 区间修改,区间查询 以下内容均为个人见解,如有不足还请指出,作者会及时修改! 期待大家的点赞、收藏、评论&…...
xray-poc编写示例
禁止未授权扫描和测试行为!!! 1. SQL 时间盲注检测 (Time-Based Blind SQLi) name: generic/time-based-sqli rules:- method: GETpath: "/product?id1 AND (SELECT 1 FROM (SELECT SLEEP(5))a)--"expression: |response.status…...
[2-01-01].前端开发工具
前端学习大纲 一、VsCode: 1.1、下载地址 https://code.visualstudio.com/ 1.2.插件安装 为方便后续开发,建议安装如下插件 1.3.创建项目 先创建一个空的文件夹,如project_xxxx。然后打开vscode,再在vscode里面选择 File -> Open Fol…...
自动化实现web端Google SignUp——selenium
案例:自动化获取Google注册页面——selenium 前言 提示:通过案例掌握selenium语法 涉及技术:Python Selenium 在本文中,我们将通过一个实际案例来学习如何使用Selenium自动化工具模拟Google账号注册流程。这个案例涵盖了Selen…...
如何阅读GitHub上的深度学习项目
一、前期准备:构建知识基础 1. 必备工具与环境 开发工具: IDE:VS Code(推荐,轻量化插件丰富,如 Python、PyTorch 插件)、PyCharm(适合大型项目)。版本控制:…...
【LeetCode 热题 100】3.无重复字符的最长子串:详解滑动窗口解法
📌 原题链接:Longest Substring Without Repeating Characters 📖 一、题目描述 给定一个字符串 s,请你找出其中不含有重复字符的最长子串的长度。 示例: 输入: s "abcabcbb" 输出: 3 解释: 最长不重复子…...
Android12 Rom定制设置默认语言为中文
Android12 Rom定制设置默认语言为中文 1.前言: 最近在做客制化定制时需要默认语言为中文,而且可以切换输入法,之前讲解过在ROM中如何设置默认输入法,这里就不展开了,其实这个需求很简单,就是调试的时候发现…...
【设计模式】GoF设计模式之备忘录模式(Memento Pattern)
设计模式之备忘录模式 Memento Pattern V1.0核心概念角色代码示例程序运行结果代码讲解 适用场景 V1.0 核心概念 备忘录模式的核心是定义一个备忘录类(Memento),这个类的实例能够表示发起人类(Originator)的一种状态…...
springboot分层打包,减少重复构建和传输的开销
在 Spring Boot 中,分层打包(Layered Packaging) 是一种优化策略,特别针对 容器化部署(如 Docker) 的场景设计。它的核心思想是将应用的不同部分(依赖、资源、代码等)划分为独立的层…...
Linux——虚拟地址空间
1.虚拟地址空间 进程地址空间又叫虚拟地址空间 我们大家知道程序在运行时使用的空间被划分为多个不同的区域,每个区域都有不同的作用 正文代码:存放程序的可执行代码 通常都是只读的初始化数据:未初始化数据堆区:用于动态分配内存…...
GPU虚拟化实现(七)
GPU虚拟化实现(七) 章节回顾进程管理资源限制和环境变量利用率监控线程信号处理退出处理代码具体运作流程怎么限制SM的总结章节回顾 在上一章,分析了项目的主要代码模块功能:共享内存和初始化、GPU 内存管理、GPU 利用率管理以及锁机制,在这一章将继续分析其他的代码模块…...
【QNX+Android虚拟化方案】137 - msm-5.4 Kernel U盘 插入中断、枚举、匹配完整流程详解
【QNX+Android虚拟化方案】137 - msm-5.4 Kernel U盘 插入中断、枚举、匹配完整流程详解 1. HUB提交中断URB给HCD控制器,URB完成回调函数为 hub_irq()2. U盘插入后,触发运行 hub_irq() 中断回调函数2.1 高通 DWC3 Host HCD 初始化流程2.2 urb->complete(urb) 中断回调流程…...
分布式锁的几种实现
前几天看一个面试视频,提到了分布式锁一直想写写,但奈何考试太多,直到今天才有时间。好啦,开始今天的文章吧。 一.定义 分布式锁:当多个进程不在同一个系统中(比如分布式系统中控制共享资源访问),用分布式…...
Android 解绑服务问题:java.lang.IllegalArgumentException: Service not registered
问题与处理策略 问题描述 在 Android 项目中,解绑(unbindService())一个服务(Service)时,报如下错误 java.lang.IllegalArgumentException: Service not registered问题原因 错误表明在解绑服务时&…...
注册登录页面项目
关系型数据库地址:C:\Users\ASUS\AppData\Local\Temp\HuaweiDevEcoStudioDatabases\rdb #注册页面register.ets import dataRdb from ohos.data.rdbconst STORE_CONFIG {name: weather4.db } const TABLE_NAME weather_info const SQL_CREATE_TABLE CREATE TAB…...
从 Python 基础到 Django 实战 —— 数据类型驱动的 Web 开发之旅
主题简介: 本主题以 Python 基础数据类型为核心,结合 Django 框架的开发流程,系统讲解如何通过掌握数字、字符串、列表、元组、字典等基础类型,快速构建功能完善的 Web 应用。通过理论与实践结合,帮助学员从零基础 Py…...