核心洞察
Java的ThreadLocal绑在线程上,Python的ContextVar绑在执行上下文上。在协程时代,一条线程会并发执行多个Task,如果继续用ThreadLocal存储上下文,Task之间会互相覆盖。ContextVar通过”协程创建时复制Context”的机制,完美解决了这个问题。本文将深入解析ContextVar的底层实现机制,并与ThreadLocal进行本质对比。
Java的ThreadLocal绑在线程上,Python的ContextVar绑在执行上下文上。在协程时代,一条线程会并发执行多个Task,如果继续用ThreadLocal存储上下文,Task之间会互相覆盖。ContextVar通过”协程创建时复制Context”的机制,完美解决了这个问题。本文将深入解析ContextVar的底层实现机制,并与ThreadLocal进行本质对比。
从网络测量的视角看数据结构选择:cache locality 为什么比算法优雅更重要。
事件循环和线程池是两种本质不同的并发模型。事件循环用”时间分片”在一个线程上同时处理数万连接,资源占用极低;线程池用”真并行”让每个请求独占资源,简单但开销巨大。本文将深入解析这两种模型的底层原理、优缺点对比,以及在什么场景下选择哪种架构。
在构建 RAG 系统时,我们往往习惯盯着检索指标如精确率和召回率,却忽略了生成环节的真实表现。本文剖析了为何高召回率可能掩盖生成幻觉,强调忠实性和答案相关性才是评估核心,并分享从人工评测到 LLM-as-Judge 的演进路径,以及构建分层评估流水线的实践建议。读完后,你将明白如何避免评估误区,确保 RAG 系统真正可靠。
在 RAG 系统中,检索延迟和 API 成本是两大痛点。本文记录了我们在 CookHero 项目中设计的 L1+L2 双层缓存架构——用 Redis 做精确匹配,用 Milvus 做语义匹配——以及这个设计背后的思考和踩过的坑。
在对话式 RAG 系统中,用户的输入往往不能直接拿去检索——“它怎么做”指代不明,“好的”根本不需要检索。本文记录了 CookHero 项目中意图识别和查询重写模块的设计过程,包括我们在 Prompt 工程上的反复迭代,以及一些”看起来简单但容易做错”的细节。
在构建一个真实的多轮对话系统时,上下文管理是绕不开的痛点。本文记录了我们在 CookHero 项目中如何从”对话几轮就爆 token”走向”稳定运行”的完整过程,包括踩过的坑、做过的权衡,以及最终的压缩策略设计。
在大型语言模型(LLM)的推理过程中,KV Cache(键值缓存)是一个至关重要的优化机制。它显著提升了模型在生成长文本时的效率和响应速度。本文将深入解析 KV Cache 的工作原理及其在推理中的应用。
本章在之前对注意力机制的基础上,介绍几种改进的注意力机制,包括多查询注意力(MQA)、分组查询注意力(GQA)以及FlashAttention等技术,这些技术在提升模型性能和推理效率方面发挥了重要作用。
本文详细介绍了预训练语言模型(Pre-trained Language Models, PLM)的核心架构与代表模型,重点分析了 Encoder-only、Encoder-Decoder 和 Decoder-only 三种主流设计思路及其在自然语言处理任务中的应用优势。