Advanced RAG 全链路检索优化之预检索优化

2027年新疆职业院校技能大赛“网络系统管理”A模块网络构建真题 2027年新疆职业院校技能大赛“网络系统管理”A模块——网络构建真题,仅供学习使用。 阅读详情

全链路检索优化讲究对症下药,并不是所有手段全上效果最好,有可能适得其反。

引言

RAG(Retrieval-Augmented Generation)现在是大模型落地的主流范式。但真上了生产环境你就会发现,简单的"Embedding + Top-K"检索根本不够用。海量文档、半结构化数据、语义鸿沟,随便哪个都能让你的检索结果翻车。

这篇文章重点聊预检索优化(Pre-retrieval Optimization) 阶段,四种索引优化策略有摘要索引、父子索引、假设性问题索引和元数据索引。看完你大概知道什么场景选哪招。


一、摘要索引(Summary Index)

问题背景

处理大量文档的时候,怎么快速找到你要的东西是个常见难题。很多文档内容不单一,既有文本也有表格。这种半结构化数据传统 RAG 不好搞:

  • 文本拆分会把表格切碎,检索的时候数据就坏了
  • 表格直接做嵌入,语义相似性搜索也不好使

核心思路

让 LLM 为每个文档块生成摘要,用摘要做语义检索,找到之后再回溯到原始文档。

  1. LLM 给每个块生成 summary,向量化存到 summary 数据库
  2. 检索时先查 summary 库,找到最相关的 summary,再回溯到原始文档
  3. 把原始文本块作为上下文丢给 LLM 拿答案

使用场景

场景说明
半结构化数据文档里混着文本、表格、图片
企业年报一堆财务数据表(资产负债表、利润表)
医疗药品说明书临床数据表、不良反应发生率
工业技术文档精密规格参数、设备运行指标

流程图解

1. 提取 → 切割 → 块(较大)                       ↓2. 块 → 生成摘要                       ↓3. 摘要向量化 → 摘要与原始文档建立关系                       ↓4. 摘要向量存入向量数据库 | 原始文档另行存储                       ↓5. 检索 → 匹配摘要向量 → 返回原始文档

实战经验

踩过的坑

之前做企业年报问答系统,一张利润表被切成好几段。用户问"2023年净利润",表中第四行明明就是,但检索回来的是前面几段废话。

几个关键教训:

  1. 摘要质量太差等于白做。一开始用的模型太弱,生成的摘要把关键数字全丢了,就剩一句"本段介绍了公司的财务状况"。后来换了个强的,prompt 里明确要求提取关键数字和指标,效果才上来。
  2. 成本翻倍是真的。每个 chunk 都要过一遍 LLM,存储也要双份。十万级文档场景下,这个开销不是每个团队扛得住的。建议只用在表格密集、半结构化程度高的数据集上,纯文本没必要。
  3. 数据更新要一致。文档更新了,旧摘要就废了。得搞一套增量更新机制,不然就会出现"搜到对的摘要,回溯出来的是过期文档"这种尴尬。

注意事项

  • 摘要质量很关键,高价值表格的信息必须包含进去
  • 开销大,token 和存储都翻倍
  • 数据一致性维护麻烦
  • 建议:实际用之前先做 A/B 测试

二、父子索引(Parent-Child Index)

让 RAG 同时兼顾检索精度和上下文完整性

问题背景

做文档检索的时候经常碰到两个互相矛盾的需求:

  1. 想要小一点的块,这样 Embedding 以后语义更准。块太大 Embedding 意义打折。
  2. 又想要大一点的块,这样上下文够全,LLM 回答才不容易翻车。

做过 RAG 的都懂这个痛,chunk size 调到 256,精度上去了但上下文不够;调到 1024,上下文够了但检索噪声也上来了。父子索引就是来解决这对矛盾的。

流程

1. 文档分割成层级化块结构,用最小的叶子块进行索引                       ↓2. 检索出 top-k 个叶子块                       ↓3. 如果 n 个叶子块指向同一个更大的父块   → 用这个父块替换这些子块   → 送入大模型生成答案

实战经验

给一家法律科技公司做法规检索时,法规文档层次分明,章节 → 条款 → 子款。我们用父子索引,父块是整个条款,子块是单个子款。

用户搜"高空抛物民事责任",命中了条款里的两个子块,发现它们属于同一个父块,就把整个条款喂给 LLM。LLM 拿到了前后文,回答准确了很多。

什么时候效果好

  • 文档有清晰的结构层次(法律文书、技术规范、学术论文)
  • 用户查询针对具体细节
  • 需要防止断章取义

什么时候别用

  • 文档本身没有清晰结构(聊天记录、碎片笔记)
  • 上下文对回答影响不大(知识卡片这种自包含信息)

适用条件

  • 文档有清晰的结构层次
  • 需要保持上下文完整
  • 用户查询通常针对具体细节
  • 信息碎片化可能造成误解

典型场景

场景说明
技术文档检索API 文档、框架文档等层次结构清晰
书籍内容检索需要保持段落/章节的上下文完整
代码库检索函数级检索 + 文件级上下文的典型案例

三、假设性问题索引(Hypothetical Question Index)

核心思路

假设性问题是基于假设前提来提问的方式。对知识库文档切片时,可以让 LLM 以切片内容为假设,预先生成几个相关问题。

说白了,这几个问题是和切片内容强相关的。

逻辑很简单:用户问的是自然语言问题,那为什么不让"问题"去匹配"问题"?

用户问:"这个药的副作用是什么?"                     ↓匹配库中的假设性问题:"该药品的不良反应有哪些?"                     ↓命中率通常比直接匹配文档内容高 10%-20%

流程

1. 让 LLM 为每个块生成 3~5 个假设性问题                       ↓2. 将问题以向量形式嵌入(用问题向量替换文档块向量)                       ↓3. 运行时,针对问题向量索引进行查询搜索                       ↓4. 检索到匹配的问题后,回溯到原始文本块                       ↓5. 原始文本块作为上下文发送给 LLM 获取答案

实战经验

做药品说明书问答系统时,原文有一段不良反应描述:

“常见不良反应包括恶心、呕吐、腹泻,偶见皮疹、肝功能异常,罕见但严重的有过敏性休克。”

这段文本向量化之后,用户问"吃了这个药会不会过敏",语义距离其实挺远的。但我们预先生成了"该药品会不会引起过敏反应"这个假设性问题,直接命中了。

embedding 模型擅长在"问题空间"做语义匹配。先把文档内容映射到问题空间(通过 LLM 生成假设性问题),用户的问题和索引就在同一个空间,匹配自然更准。

使用建议

  • 每块生成 3 个问题就够了,多了增加噪音和存储成本
  • 生成时覆盖不同角度,别全是"xx是什么"
  • 配合摘要索引用效果更好:用假设性问题检索,用摘要匹配,双保险

四、元数据索引(Metadata Index)

企业级的知识库动辄几百个数据源,只靠文本分割加 Top-K 检索,精度不够,知识之间还互相干扰。

为什么需要元数据?

想象一下,你想在这医学文献数据库里查"糖尿病足"的资料,但库里还充斥着一大堆其他糖尿病并发症的信息。这时候一个重要的优化思路是在大文档集下做"分层"过滤和检索。

元数据就是对文档的属性描述。假设有个科技博客的向量数据库,每篇文章关联了这些标签。

维度示例值
topic人工智能, 区块链, 云计算, 大数据
author作者A, 作者B, 作者C
year2022, 2023, 2024

流程

1. 定义元数据标签(文档本身没有时,让 LLM 推理出来)                       ↓2. 通过标签先对文档做**过滤**                       ↓3. 再结合向量检索定位到最相关的前 K 个知识块

实战经验

这个如果不做,大文档集上后面全白搭。

做企业内部知识库的时候,知识库里 50 万篇文档,横跨法规、技术、财务、HR 四大领域。用户问"2024年上海的社保缴费比例",一个 Top-K 要从 50 万篇里找,前 20 名里 15 个都是无关的。

我们给每个文档标注了:

  • department: 法务 / 技术 / 财务 / HR
  • doc_type: 政策 / 流程 / 报告 / 案例
  • year: 文档年份

用户搜"年假计算方法",先过滤出 department=HR + doc_type=政策,在这个子集里做 Top-5,检索质量直接起飞。

没有元数据怎么办? 用 LLM 自动标注。文档入库时让 LLM 推理出领域、类型、时间,作为元数据写进去。一次性开销,换每次检索的效率。

实现方式

LangChain 里有 SelfQueryRetriever(自查询检索器),能自动从用户问题里提取过滤条件。比如用户说"2023年的财务报告",自动解析出 year=2023 + doc_type=报告 + department=财务,过滤完再检索。


五、技术选型对比

索引优化实用场景案例
摘要索引需要快速检索和摘要上下文新闻资讯平台
父子索引需要语义完整性和层次化检索法律检索系统
假设性问题索引需要处理复杂查询和多样化表达药品咨询系统
元数据索引需要快速筛选和分类电商推荐平台

六、实践建议

不要盲目堆叠

全链路检索优化讲究对症下药。不是所有手段全上效果就最好,有时候反而适得其反。

一个决策思路

文档是否含大量表格/图片?  是 → 摘要索引  否 → 继续文档是否有清晰层次结构?  是 → 父子索引  否 → 继续查询是否以自然语言问题为主?  是 → 考虑假设性问题索引  否 → 跳过文档数量是否超过 1 万?  是 → 元数据索引必须加  否 → 可加可不加

我的常用组合

文档特征方案组合理由
技术文档(API/框架)父子索引 + 元数据索引层次清晰 + 按领域过滤
合同/法规父子索引 + 假设性问题保上下文 + 应对多样查询
企业年报摘要索引 + 元数据索引处理表格 + 按年份过滤
综合知识库元数据索引打底 + 按需叠加先保基础检索质量

一句话总结

先看数据长什么样,再选方案。没有银弹,但一定有最适合你的那一两招。 花一周做 A/B 测试,比花两周猜哪个方案好要靠谱得多。


七、总结

预检索优化是 RAG 全链路优化的第一道关卡,也是性价比最高的环节。很多团队一上来就调 prompt、换模型,但回头看看数据准备部分——chunk 切得乱七八糟、没有元数据、索引策略不对——前面再怎么调效果也有限。

四种索引优化策略各有侧重:

策略核心价值
摘要索引打通半结构化数据检索瓶颈
父子索引兼顾检索精度与上下文完整
假设性问题索引缩小查询与文档的语义鸿沟
元数据索引大文档集下的高效分层过滤

实际工程里,要根据文档特征、查询模式、成本预算综合选型。没有银弹,只有最合适的组合。

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

在这里插入图片描述

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

从AD到HFSS:Gerber文件驱动的PCB三维电磁仿真全流程解析 本文详细解析了从AD到HFSS的Gerber文件驱动的PCB三维电磁仿真全流程,重点介绍了Gerber文件作为桥梁的重要性、AD端Gerber文件导出实战指南、HFSS 3D Layout导入技巧及高级问题排查方法。通过实际案例和技巧分享,帮助工程师高效完成PCB电磁仿真,提升设计验证效率。 阅读详情

相关推荐

告别软件轮询!用STM32G474的COMP比较器实现纳秒级硬件过压保护(CubeMX配置详解)

本文详细介绍了如何利用STM32G474的COMP比较器实现纳秒级硬件过压保护,通过CubeMX配置详解,展示了硬件比较器相比传统软件轮询方案在响应时间、CPU占用和可靠性等方面的显著优势。文章还提供了实战配置流程和优化技巧,帮助工程师快速构建高效的硬件保护系统。

weixin_28683689的博客 351

告别RAG新手村!吃透系列(七):Advanced RAG之查询分解,解锁高阶检索能力!

在 RAG 技术落地过程中,Naive RAG往往在面对复杂问题时显得力不从心 ——当用户提出 “对比不同行业RAG落地策略的差异,并分析医疗领域实施难点及解决方案” 这类多维度查询时,单轮检索难以精准覆盖所有核心问题,容易出现信息遗漏或检索偏差,最终导致生成答案逻辑断裂、相关性不足。而查询分解技术作为 Advanced RAG 预检索阶段的关键优化手段,通过将复杂查询拆解为简单子任务,实现精准检索与逻辑化生成的闭环,成为解决这一痛点的核心方案。

m0_56255097的博客 890

Origin 2025b中文版安装全指南:避开乱码、水印与崩溃陷阱

Origin作为科研绘图领域的事实标准,其2025b版本首次官方支持简体中文UI,但安装远非‘下一步’即可完成。核心在于理解软件本体、语言包、许可证服务与系统区域设置四者间的耦合关系——尤其Windows非Unicode程序语言必须设为‘中文(简体,中国)’,否则必然触发坐标轴乱码、PDF文字方块等典型故障;而AI辅助拟合、内置Python 3.11等新特性,又依赖正确的字体链(如SimSun)与注册表强制加载(UILanguage=zh-CN)才能稳定启用。该版本广泛应用于材料科学、电化学、XRD/SEM

weixin_42548874的博客 1408

四路 CAN 转 4G 网关

SG‑CAN‑4G‑410 为**四路隔离 CAN 转 4G 工业网关**,把 CAN2.0A/B 报文封装成 TCP/UDP 报文,通过 4G 无线网络实现 CAN 总线远程监控、远程控制。四路 CAN 相互独立;以太网仅用于本地配置,不做业务数据传输;支持移动 / 联通 / 电信 4G 网络。

S2003120416的博客 166

手把手教你:在联想/戴尔笔记本上安装华为电脑管家,实现多屏协同(附详细避坑步骤)

本文详细指导如何在联想、戴尔等非华为笔记本上安装华为电脑管家,实现多屏协同功能。从硬件兼容性检查到定制化安装流程,再到功能调优与异常处理,提供了一套完整的解决方案,帮助用户突破品牌限制,享受华为生态的高效办公体验。

weixin_30251829的博客 852

LSTM模型股价波动率预测(含Python代码)

源代码文件可在gzh’finance褪黑素'回复【24012203】获取。

celiaweiwei的博客 3776

汽车电子标定与测量的核心基石XCP协议

控制逻辑(算法)与标定参数(数据)。如果每次优化参数都要修改源码、重新编译并刷写Flash,整个研发周期的效率将趋近于零。标定(Calibration)技术正是为了解决这一痛点而生。它允许工程师在ECU运行过程中,动态观察内部变量(测量,Measurement),并在不中断运行的前提下实时修改控制变量(标定,Calibration)。在这一领域,XCP(Universal Measurement and Calibration Protocol,通用测量与标定协议)是公认的行业标准与核心基石。

diansandaosilaodanan的博客 380

【反封禁策略】集成 Undetected-Chromedriver:让 Browser-Use 绕过 Cloudflare 五秒盾

摘要:AI Agent如何突破Cloudflare检测的实战指南 本文针对AI Agent在Cloudflare检测下频繁受阻的问题,深入分析了undetected-chromedriver的工作原理与局限性。文章指出,Cloudflare 2026年的检测体系已升级为"浏览器指纹+IP信誉+协议指纹+行为模式"的多维交叉验证,单一伪装方案难以奏效。 核心内容包括: undetected-chromedriver的三层补丁体系解析 v2与v3版本的适用场景对比 两种Browser-Use集成方案:Selen

ZDQ58818的博客 284

【计算机网络】断点续传是怎么做到的:从 Range 请求到分片上传的完整机制

断点续传在下载侧靠的是 HTTP 现成的 Range 协议,Content-Range 保证偏移对得上,If-Range 防止文件变更导致的错误拼接;上传侧没有标准,需要自己设计 init/part/complete 三段式交互,核心是让服务端记住“哪些块已经收下”,从而把失败粒度从整个文件降到单个分片。 这套机制可以迁移到任何长耗时操作的设计上。判断方法很简单:先问失败粒度是多少。如果一次操作失败就得从头再来,那它迟早会在生产环境里出问题——传输、批量导入、数据迁移、长事务,都是同一个道理。把大操作切成

2503_94545876的博客 539

基于DeepFashion2数据集的服装检测系统:YOLOv11实现与UI界面开发

80万张高质量服装图片13个服装类别:短袖上衣、长袖上衣、短袖外套、长袖外套、背心、短裤、长裤、短裙、长裙、袜子、帽子、鞋、包包每张图片包含边界框、分割掩码、landmarks等标注多样化的场景:商业图片、街拍图片、消费者图片更高效的Backbone网络改进的特征金字塔网络(FPN)自适应训练样本分配策略更精确的损失函数以下是YOLOv11的模型定义:python复制下载# 模型参数self.nc = nc # 类别数。

YOLO 455

openclaw本地模型对接

使用是官方推荐的一种集成方式,它可以简化配置过程。但由于您的系统环境和之前复杂的配置历史,我为您梳理了一个核心流程,并增加了关键的“事后检查”步骤,以确保能从根本上解决问题。

suny8的专栏 2461

Linux 服务器性能排查手册(2026):CPU、内存、磁盘IO、网络四大瓶颈定位

iptables 四表五链模型、firewalld zone 信任级别、云安全组与主机防火墙的关系与优先级,避坑改了防火墙把自己挡在服务器外面的翻车事故。

2502_91473995的博客 322

HBV模型

据说mHM模型也是基于HBV模型原理。 网上不同版本的HBV模型稍有差别 def hbv_main(n_days, params, air_temp, prec, dpem): #n_days 模拟天数 #air_temp 每月温度 #prec 降水 #dpem 每月蒸发 Tsnow_thresh = 0.0 ca = 410. # Initialize arrays for the simiulation snow = np.zeros(air_temp.size

m0_46268055的博客 2330

【Linux网络】TCP 服务器并发处理多客户端:从 fork 分发到双重 fork 彻底消灭僵尸进程

拆解 TCP 服务器并发演进链:fork 分发连接、SIGCHLD 循环回收僵尸、双重 fork 交孙进程给 init 收养,并给出模型选型与线上排错对照。

2301_78967866的博客 427

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

AI 芯片片上网络 NoC 深度解析:flit、虚通道与拥塞控制如何决定 GPU/TPU/LPU 的算力利用率

AI芯片算力瓶颈不在FLOPS,而在片上网络(NoC)——数据搬运的能耗与延迟决定MFU上限。物理限制下,长线延迟不随工艺缩小,迫使NoC将全局布线拆为可流水的短链路;能量账显示,一跳传输耗能可达数十次乘加操作。拓扑选择直接影响性能:二维mesh虽布线可行,但均匀流量下每节点可用带宽按1/√N衰减,实测仅达标称值30%。虚通道、双网设计、静态调度(如Groq)等技术旨在突破此瓶颈。从总线到crossbar再到多跳NoC,本质是用延迟换可行性。未来趋势:专用通路(脉动阵列)、晶圆级集成(Cerebras)、跨

我的博客 88

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

台湾行情数据API接入教程

想用程序获取台股行情,很多人第一步会搜“台股资料 API 推荐”,结果发现选择不少:证交所有免费接口,Yahoo Finance 也能查,券商还有自己的 API。真正写代码时才发现,有的数据只到收盘,有的延迟 20 分钟,有的必须先开户。本文先梳理台湾行情数据的几种获取渠道,再用 Python 从零搭一个可以运行的台股数据脚本:查代码清单、取实时报价和盘口、拉历史K线、做复权、用 WebSocket 接收实时推送,最后结合台积电 ADR 和新台币汇率计算跨市场溢价。

qq_34102871的博客 302

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Qt网络编程实战指南:从底层Socket到现代异步架构的选型与避坑

本文梳理Qt网络编程的核心模块与演进路线,对比QTcpSocket与QNetworkAccessManager的使用边界,结合HTTP请求与TCP长连接的完整示例,说明信号槽、内存管理与事件循环的配合方式。重点记录连接池设计、证书校验、线程亲和性等实际开发中的关键决策点,帮助读者在C/S或跨平台项目中建立稳定的网络层基座。

2402_83344867的博客 293

从母钟到子钟:NTP 网络时钟系统架构与软件接口

本文从工程角度简要介绍公共场所的时间同步需求、NTP协议的定位,以及典型LED同步时钟的系统架构与硬件设计,以讯鹏科技4寸与5寸同步时钟为例。

SPZHCS的博客 156

DPVS 报文黑匣子与 Crash 自动拉黑:给转发面装上“飞行记录仪“

谁打挂了我(crash dump)、他之前发了什么(慢路径环)、他还会再来(入口拉黑)。设计上我们始终坚持两条原则:记录与决策分离(黑匣子永远只说不做),以及误伤成本优先于漏放成本(三道闸门全部通过才拉黑,expire 到期自动解封)。性能上,全量快路径摘要 + 入口查表的综合开销低于 1.3%,在 FIP 网关的流量水位下不可感知。飞行记录仪的价值不在于飞机正常飞行的时候,而在于它让每一次事故都变成一次改进。对转发面来说,同样如此。

zyun360的博客 270

HTTP、SSE、WebSocket、Socket.IO:实时通信方案深度对比与选型指南

HTTP 是基础,是整个 Web 的底座;SSE 是单向推送的轻量最优解;WebSocket 是高性能双向实时通信的底层标准;Socket.IO 是一套降低开发门槛、抹平环境差异的上层框架。技术选型永远不是“哪个技术更酷”,而是匹配业务的实时性、交互方向、网络环境、团队维护成本。简单需求优先轻方案,复杂双向实时再上 WebSocket;如果追求快速落地、兼容各种奇葩网络,Socket.IO 是很好的选择。

changshuaihua001的博客 346

计算机毕业论文系统测试怎么写:从测试用例设计到对比实验,让“工作量“看得见

本文系统阐述计算机毕业论文中“系统测试”章节的撰写方法,涵盖功能测试用例设计(等价类、边界值、判定表)、性能测试压测方案与关键指标(平均响应时间、P99、吞吐量)、对比实验设计原则及评价指标选取。强调通过量化数据、阶梯加压曲线、瓶颈定位与多维度对比,真实展现研究工作量与技术深度,提供可直接套用的测试用例表与实验方案模板,助力论文脱颖而出。

wuwangzhiduoshao的博客 301

Linux网络编程:TCP多线程远程命令执行与线程池改造

前面已经实现了 TCP Echo Server,并且通过多进程和多线程解决了多个客户端连接的问题。不过目前服务器的业务还是比较简单,客户端发送什么,服务器就返回什么。这次在原来的多线程服务器上继续做一些改动,实现一个简单的远程命令执行功能。这次主要学习了两个内容。第一个是多线程远程命令执行。通过 Command 类封装命令的接收、检查、执行和结果返回,并使用 set 对允许执行的命令进行限制。第二个是线程池版本的 TCP Echo Server。通过和std::bind。

2501_93388101的博客 369

亚远景-欧盟 NIS2 与 CRA 双法规生效,车载出口企业网络安全与过程合规建设要点

亚远景结合法规要求与车载行业特性,梳理双法规对整车与零部件出口企业的核心影响,说明如何以 ISO/SAE 21434 为核心、以 ASPICE 为过程底座,搭建满足欧盟要求的网络安全与过程合规体系。

yayuanjingkeji的博客 190

23 网络性能与 QoS:带宽、时延、吞吐计算与保障机制

带宽是上限、不是实际速度;时延由传输、传播、处理、排队四段组成。一道题让你算端到端时延和吞吐,关键是先找到瓶颈在哪一跳。QoS 靠分类、标记、队列、调度四步保障,配一张瓶颈定位+容量规划图,再跟 3 道真题。

weixin_46316564的博客 221

python如何编通讯程序

通讯程序需要处理IP地址和端口。IP地址用于标识网络上的设备,端口用于标识设备上的服务。编写通讯程序时,需要选择合适的端口号并确保它不与其他服务冲突。此外

2601_96798011的博客 178

五个压测工具简介

本文对比五款主流性能测试工具:JMeter(开源全能,适合接口与复杂业务压测)、sysbench(数据库基准调优标杆,轻量高效)、ab(极简HTTP压测,快速摸底)、LoadRunner(商业企业级,支持复杂场景与特殊协议)、mysqlslap(MySQL内置,快速验证并发能力)。各具优势,适用于不同场景,开发者可根据需求选择。

呆萌很的博客 185
上一篇: 【LLM应用开发】Coding Harness的主要组成和实现
下一篇: 企业做 AI,不能只建知识库
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2835原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值