本文的核心目的是记录和分享一次使用多种AI工具,进行全栈开发的过程,解决某些情况下想做点什么事,但被资源卡脖子的情况,所以多体验和分享一些AI工具,来帮助个人扩大职责边界,用于学习和分享。生产环境或者业务开发流程中慎用,需要仔细阅读文章中的各种流程和限制。本文承诺没有一个AI大模型在过程中受到伤害,只有我,在各种调试中破防。
RAG,全称检索增强生成(Retrieval-Augmented Generation),作为当前 AI 应用中常见的辅助方法,有效提升了 LLM 输出的准确性和可靠性。但总有人戏言,RAG 不过是“把文档丢进 Dify”这么简单,真的吗? 关于 RAG 的技术流程,网上已经有非常多高质量的文章介绍,因此笔者想从 RAG 的技术发展角度来写这篇文章,从最基本的 RAG 到当前热门的 Graph RAG、Agentic RAG,介绍 RAG 的不同类型和区别,希望大家能够从文中受益。
本文探讨了虚拟线程(有栈协程)对Java的重要意义,从传统同步线程模型到异步响应式编程模型,再到用户线程模式和协程的实现原理,全面分析了Java在高并发场景下的演进历程。文章首先介绍了传统的thread per request模型,指出其资源占用高的问题,并引出异步编程模型的优势与弊端。接着对比了无栈协程(如Kotlin中的协程)和有栈协程(如Go中的goroutine),强调了无栈协程在性能上的优势以及对同步生态兼容性差的问题。 随后,文章重点介绍了Java在JDK21中引入的虚拟线程,这是一种有栈协程的实现方式,能够以极低的成本创建大量线程,同时保留了同步编程的简洁性和调试友好性。虚拟线程支持阻塞IO操作而不会阻塞内核线程,极大地提升了资源利用率。然而,虚拟线程也存在一些局限性,例如在特定场景下可能“pin”住载体线程,导致资源浪费。最后,文章总结了虚拟线程/有栈协程对Java的重要性,认为它能够在保持高性能的同时降低开发复杂度,是Java应对高并发场景的重要工具。
多模态理解大模型,是一类可以同时处理和理解多种数据形式(如图像、文本、视频等)的人工智能大模型,可以应用于图文理解、视觉问答、文档理解、场景描述等任务。本文将介绍目前热门的 DeepSeek-VL2多模态大模型。DeepSeek-VL2是一款基于混合专家(MoE,Mixture of Experts)架构的多模态大模型,结合了混合专家架构和多模态数据处理能力,通过稀疏计算和专家分工的方式高效处理多种模态(如文本、图像、音频等)的数据,推理时只激活部分网络参数。而前两期课程介绍的 Qwen2.5VL、Janus-Pro 以及 DeepSeek-VL第一代模型,则是经典的 Dense 类的多模态理解大模型,会对所有模型参数进行计算和更新。MoE(Mixture of Experts)混合专家模型的核心思想是将模型划分为多个专家子网络(experts),并通过路由机制(router)动态选择合适的专家来处理输入数据。MoE 的最大优势就是是稀疏激活,只有少数几个专家网络模块会被激活,这意味着计算量可以显著减少,计算效率得到提升,同时精度指标远远超出相同激活参数量的 Dense 类模型。
虚拟索引技术(virtual index,也称为 hypothetical index)在数据库系统的查询优化、索引推荐等场景中扮演着关键角色。简单来说,虚拟索引可以理解为数据库的'沙盘推演'系统——无需真实构建索引,仅基于统计信息即可精准模拟不同索引方案对查询计划的优化效果。由于虚拟索引的创建/删除代价极低,使用者可以大量创建和删除索引、反复推演,确定最有效的索引方案。在AI时代,基于机器学习模型的NDV、Cardinality估计算法层出不穷,但是在MySQL落地往往遇到很大挑战:无法注入机器学习模型的预测值,变无法得到MySQL索引推荐结果。
很高兴与大家分享现阶段 Cursor 在我的工作中的使用体验。首先是预期管理,本篇文章不会分享 x 个你可能不知道的小技巧,也不会让你拥有无需自行编码的能力,同时不涉及 Cursor 工程化方面内容。仅仅是围绕个人开发流程中的已有问题,分享如何使用 Cursor 来提升这部分的开发体验,在工作中持续保持好的节奏和状态。