用asyncio重构Web API:QPS从120提升到2800的优化记录
一个查询多个下游服务的Python Web API,原本用requests同步调用,单进程QPS只有120,P99延迟850ms。改成asyncio + aiohttp后,同样4核8G机器上QPS跑到2800,P99降到95ms。本文完整记录改造过程:从问题定位、方案选型、核心代码,到踩过的坑和最终压测数据,附可运行代码。
RAG检索增强生成优化:从固定分块到BGE-Reranker的召回率提升记录
本文记录了一个企业知识库RAG系统(检索增强生成)的真实优化过程。初始方案采用512固定分块与text-embedding-ada-002,Top-5召回率仅61%,答案准确率不足55%。通过改用语义分块、切换BGE-M3 embedding、并引入BGE-Reranker-Large重排序,最终Top-5召回率达到89%,端到端答案准确率提升至82%。文中包含完整可运行代码、参数配置及踩坑记录,
Milvus 2.4 与 Qdrant 1.9 向量数据库选型对比:部署、查询性能与资源占用实测
在 100 万条 768 维向量的知识库检索场景下,我分别部署了 Milvus 2.4.1(standalone)和 Qdrant 1.9.2,在同一台 8C16G + NVMe 的机器上做了完整压测。Qdrant 在单机小规模下内存占用低约 40%、P95 延迟低 30% 左右;Milvus 在数据量上到 500 万后召回稳定性和水平扩展能力明显更强。本文给出完整部署脚本、客户端代码、踩坑记录和
LoRA微调7B大模型全流程:从数据准备到推理效果对比(QLoRA实测)
本文记录了我在单张24GB显存显卡上,用LoRA/QLoRA微调Qwen2.5-7B-Instruct的完整过程。训练数据约8k条医疗问答,采用4-bit量化+LoRA(r=16, alpha=32),训练3个epoch耗时约2.5小时,最终loss从1.82降到0.67。推理对比显示,微调后模型在专科问题上的准确率从54%提升到89%,而显存占用仅增加不到1GB。文中包含可直接运行的代码、踩坑记
用asyncio重构Flask接口,QPS从120提升到1100的完整记录
一个日均调用80万次的用户画像查询接口,原先用Flask+Gunicorn同步模式,P99延迟高达1.8s,QPS只有120左右。本文记录我用asyncio+aiohttp重构的全过程:为什么同步IO是瓶颈、如何设计协程池与信号量、踩过的event loop复用坑,以及最终QPS 1100、P99降到210ms的实测数据。所有代码可直接运行,环境为Python 3.11.6 + aiohttp 3
Docker Compose编排多服务容器化部署与健康检查依赖顺序配置详解
本文以一个真实的前后端分离项目为例,分享如何用Docker Compose编排Nginx、Spring Boot、MySQL 8.0和Redis 7四个服务。通过自定义bridge网络、命名卷挂载、healthcheck健康检查以及depends_on加condition的组合配置,解决了容器启动顺序不可控、数据库未就绪导致应用崩溃等典型问题。最终实现一键启动,冷启动到全部healthy耗时约42
React 18 项目从 Context 迁移到 Zustand 的完整记录与性能对比
我们维护的一个中后台 React 18 项目,早期用 Context + Props 管理全局状态,随着模块增多,Context 嵌套到 7 层,Provider 数量达到 11 个,首页首屏渲染耗时从 380ms 涨到 1.2s,任意一个全局值变化都会触发 200+ 组件重渲染。本文记录了从 Context 迁移到 Zustand 4.4 的完整过程,包含方案对比、迁移步骤、Selector 拆
LoRA微调7B大模型:从数据准备到QLoRA量化训练全记录
本文记录了在单张24GB显存显卡上,使用LoRA与QLoRA技术微调Qwen2.5-7B-Instruct的完整过程。数据集为自建的1.2万条领域问答对,训练采用4-bit NF4量化、rank=64、alpha=128、学习率2e-4,共3个epoch。最终loss从初始的2.31降至0.87,显存占用从OOM降至14.2GB,推理测试中领域问题准确率从基座的41%提升至86%,响应风格也更贴合
React与Vue项目从Context与Props迁移到Zustand和Pinia的性能对比记录
在一个中型后台管理系统里,我们把 React 18.2 的 Context + Props 和 Vue 3.2 的 provide/inject + Props 状态方案,分别迁移到 Zustand 4.4 和 Pinia 2.1。迁移前,React 端一次全局筛选更新会触发 37 个组件重渲染,Vue 端有 24 个 watcher 被唤醒;迁移后分别降到 8 个和 6 个。首屏可交互时间从 2
FastAPI接口从1.2s优化到85ms:一次真实性能瓶颈的定位与调优记录
线上一个FastAPI接口P99响应时间飙到1.2s,QPS只有120。我用py-spy采样定位到瓶颈在SQLAlchemy的N+1查询和缺失的缓存层,通过加索引、改批量查询、引入Redis缓存,最终P99降到85ms,QPS提升到1400+。本文记录了完整的profiling过程、优化代码和压测对比数据,涉及FastAPI 0.110、SQLAlchemy 2.0、Redis 7.2。
从62%到94%准确率:一次客服工单分类任务的Prompt Engineering对比实验与Token成本分析
本文以电商客服工单自动分类为具体任务,在GPT-4o-mini(2024-07-18版本)上对比了Zero-shot、Few-shot、角色扮演+结构化输出、Chain-of-Thought四种Prompt方案的分类准确率与Token消耗。实验基于500条真实工单样本,最终CoT+结构化输出方案将准确率从62.4%提升至94.2%,单条平均Token从118升至287,成本增加约0.9元/千条。文
我用7组Prompt对比测试,把GPT-4o-mini合同抽取准确率从62%拉到94%
本文以「从采购合同中抽取甲方、乙方、金额、签署日期」为具体任务,在GPT-4o-mini(2024-07-18版本,temperature=0)上实测7组Prompt。对比了Zero-shot、Few-shot、CoT、JSON Schema约束、角色设定等写法,记录每组token消耗、字段准确率与延迟。最终用「角色+Schema+边界规则+2个Few-shot」把字段准确率从62%提升到94%,
RAG检索增强生成优化:从固定分块到混合重排的完整调优记录
本文记录了一个企业知识库RAG系统(检索增强生成)的真实优化过程。初始方案采用512字符固定分块、text-embedding-ada-002和纯向量检索,在200条人工标注问答集上Top-5召回率仅61.5%。通过改为语义分块+重叠滑窗、切换BGE-M3嵌入模型、引入bge-reranker-v2-m3重排三阶段优化,最终Recall@5提升至89.5%,MRR从0.48升至0.79,答案准确率
从零手写AI Agent:LangChain与AutoGPT的循环控制与记忆管理
很多开发者用LangChain或AutoGPT搭Agent,却说不清工具调用、记忆回收和错误重试到底怎么跑。本文不依赖任何Agent框架,用约260行Python从零实现一个可运行的AI Agent,包含工具注册、滑动窗口记忆、指数退避重试和最大步数熔断。实测在本地qwen2.5:7b(Ollama 0.3.12)上,完成“查天气并计算温差”任务,平均4.2步,P95延迟3.8秒,比裸调LLM的乱
Git分支策略与Code Review及CI/CD集成工作流实践
团队从5人扩展到20人后,直接推master导致每周至少3次冲突回滚,发布耗时从30分钟涨到4小时。本文记录我们如何用Trunk-Based+Release分支策略、GitLab MR强制Review、Jenkins+GitLab CI双流水线,把平均合并时间压到18分钟,生产事故下降70%。含完整.gitlab-ci.yml和Jenkinsfile配置,以及分支保护参数。
FastAPI接口响应从1.8s降到120ms:一次Profile定位与数据库缓存调优记录
某电商商品详情接口在大促压测中P95响应达到1.8s,QPS仅撑到230就大量超时。本文用cProfile+py-spy定位到N+1查询与同步阻塞,通过selectinload、Redis缓存与连接池参数调整,把P95压到120ms,QPS提升到1400+。文中给出完整可运行代码、压测数据对比与踩坑记录,适合正在被接口慢查询折磨的后端同学。
FastAPI+Flask接口从1.2s降到80ms:一次API性能瓶颈定位与调优记录
线上一个商品详情接口P99响应时间飙到1.2s,QPS一过200就开始大量超时。本文记录我用py-spy定位到Flask里一段N+1查询,再用FastAPI重写、加Redis缓存、优化SQL索引的完整过程。最终P99降到80ms,单机QPS从180提升到1900,附压测数据和踩坑记录。
从0.61到0.89:一次RAG检索增强生成系统的三轮迭代优化记录
本文记录了一个企业知识库RAG系统从上线到可用的完整优化过程。初始版本在2000条文档上Recall@5仅0.61,答案准确率约52%。通过三步改造——chunk策略从固定512切分改为语义+标题层级混合切分、embedding模型从text-embedding-ada-002切换到bge-large-zh-v1.5、引入bge-reranker-large重排——最终Recall@5提升至0.8
用asyncio重构订单查询API:QPS从120提升到1800的完整记录
一个日均调用量300万的订单查询接口,原本用Flask+requests同步实现,压测QPS只有120,P99延迟高达2.3秒。我用asyncio+httpx+aiohttp重写了核心链路,在同样的4核8G机器上,QPS冲到1800,P99降到180ms。这篇文章记录了完整的改造过程:从瓶颈定位、方案选型,到连接池参数调优和踩过的坑,附可运行的before/after代码和wrk压测数据。
LoRA与QLoRA微调7B大模型:从数据准备到推理效果对比的完整实践
本文以Qwen2-7B-Instruct为基座,完整记录一次LoRA与QLoRA微调实验。训练数据为8000条客服对话样本,在单张RTX 4090(24GB)上,QLoRA仅占用约9.8GB显存,LoRA约占用18.5GB显存。训练3个epoch后,QLoRA的eval_loss从0.92降至0.41,LoRA从0.89降至0.36。推理对比显示,微调后模型在垂直领域问答准确率从62%提升至88%