FastAPI + Flask 双栈 API 性能调优:一次 P99 从 1.8s 降到 120ms 的完整记录
某内部订单查询 API 在 QPS 200 时 P99 飙到 1.8s,CPU 却只用了 30%,典型的"等待型"瓶颈。本文用 cProfile + py-spy 定位到 N+1 查询和同步阻塞调用,通过索引优化、批量查询、Redis 缓存三级改造,在 FastAPI(0.110)和 Flask(3.0)两套服务上分别压测验证:P99 降至 120ms,QPS 从 210 提升到 1600,数据库
Milvus 2.4 与 Qdrant 1.9 向量库选型对比:百万级商品召回实测
本文面向电商以图搜图/语义召回场景,在 100 万条 768 维向量、TopK=10 的条件下,实测 Milvus 2.4.1(standalone,HNSW)与 Qdrant 1.9.4 的部署难度、索引构建耗时、QPS、P99 延迟与内存/磁盘占用。结果显示:Qdrant 单机部署更轻、冷启动更快,P99 约 12ms;Milvus 在批量写入与水平扩展上更稳,P99 约 18ms,但常驻内存
从42%到89%:一次RAG检索增强生成系统的三阶段优化记录
本文记录了一个面向企业内部技术文档的RAG问答系统优化过程。上线初期,Top-5召回率仅42%,答案可用率不足50%。通过三步改造——chunk策略从固定512 token改为语义分段+重叠、embedding从text-embedding-ada-002切换到bge-large-zh-v1.5、引入bge-reranker-large重排——最终Top-5召回率提升至89%,答案可用率达86%,
从0.62到0.89:一次RAG检索增强生成系统的三段式优化记录
本文记录了一个真实RAG系统(检索增强生成)的优化过程。上线初期,基于固定512字符切分与text-embedding-ada-002的方案,在200条人工标注问答集上召回率仅0.62,答案准确率0.58。通过三步改造——chunk策略从固定窗口改为语义+递归切分、embedding从Ada-002切换到bge-large-zh-v1.5、引入bge-reranker-large重排序,最终召回率
Milvus 2.4与Qdrant 1.9向量数据库选型对比:部署、查询性能与资源占用实测
在千万级商品图文检索场景中,我们对比了Milvus 2.4.1和Qdrant 1.9.2的部署复杂度、查询延迟、内存占用和召回率。实测显示:Qdrant在单节点512MB内存下可支撑50万向量,P99延迟18ms;Milvus分布式版需4GB内存起步,但百万级向量下QPS领先37%。本文含完整Docker部署步骤、Python查询代码和踩坑记录,帮你根据业务规模做出选型决策。
Docker Compose编排多服务容器化部署与健康检查顺序控制
本文以一个真实的多服务项目为例,分享如何使用Docker Compose完成容器化部署。项目包含Nginx、Spring Boot应用、MySQL 8.0和Redis 7.2四个服务,通过自定义bridge网络实现服务隔离与通信,使用命名卷持久化数据,并借助healthcheck与depends_on的condition配置控制启动顺序。文章给出完整可运行的docker-compose.yml,并
我用12组Prompt对比测试,把电商评论分类准确率从78%提升到94%
同一个文本分类任务,只改Prompt不换模型,效果能差多少?我以电商评论情感分类为例,用GPT-4o-mini和Claude 3.5 Haiku做了12组Prompt对比实验。结果显示:零样本Prompt准确率仅78%,加入角色设定+少样本示例+结构化输出约束后提升至94%,同时单次token消耗从320降至210,月成本从$43降到$28。本文完整记录了实验设计、代码实现、踩坑细节和性能数据,供
LoRA微调7B大模型全流程:从数据构建到推理效果对比
本文记录了我在单张24G显存显卡上,用LoRA/QLoRA微调Qwen2.5-7B-Instruct的完整过程。训练数据为3200条垂直领域问答对,采用4-bit量化+LoRA(r=16, alpha=32),训练3个epoch,最终loss从1.82降至0.63。文中包含数据格式、训练配置、loss曲线分析、推理效果对比,以及显存溢出、loss震荡等踩坑记录,适合想动手微调7B模型的开发者参考。
FastAPI接口从1200ms降到86ms:一次SQLAlchemy查询与缓存调优记录
线上一个FastAPI商品详情接口P99跑到1200ms,QPS一过200就开始大量超时。用py-spy火焰图定位到87%的时间耗在SQLAlchemy的N+1查询上,单个请求打了43条SQL。本文记录了从profiling、查询重构、Redis缓存到压测验证的完整过程,最终P99降到86ms,QPS从180提升到1400+,附完整代码和locust压测数据。
从58%到94%准确率:一次商品评论情感分类的Prompt Engineering实验记录
本文以电商评论三分类任务为例,对比了Zero-shot、Few-shot、CoT、角色扮演等6种Prompt方案。在GPT-4o-mini与Qwen2.5-7B-Instruct上实测,best prompt将准确率从58%提升至94%,单条token消耗从312降至187。文中包含完整可运行代码、温度参数调优过程,以及我踩过的3个典型坑,适合正在做LLM应用落地的同学参考。
从0.63到0.89:一次RAG检索增强生成系统的分层优化记录
本文记录了一个面向企业内部知识库的RAG系统优化过程。原始方案在2000条文档上Top-5命中率仅0.63,答案可用率约58%。通过将固定512字符切分改为语义+递归混合chunk策略、把text-embedding-ada-002换成bge-large-zh-v1.5、并引入bge-reranker-large重排,最终Top-5命中率提升到0.89,端到端P95延迟从1.9s升到2.6s。文中
React 18迁移Zustand与Vue 3迁移Pinia:从Context/Props到状态管理库的性能对比与落地记录
我们维护的一个中型后台系统,React 18.2 + Vue 3.3 双栈并存,页面级组件平均 props drilling 深度达到 5 层,Context 更新导致 300+ 组件无效重渲染,首屏 TTI 一度到 3.4s。本文记录我们把 React 侧从 Context/useReducer 迁到 Zustand 4.5、Vue 侧从 props/emits 迁到 Pinia 2.1 的完整
Milvus 2.5 与 Qdrant 1.12 向量数据库选型对比:千万级图文检索场景实测
在千万级图文检索业务中,我们对 Milvus 2.5.4 与 Qdrant 1.12.4 做了同机同数据集的对比测试。单节点 16C64G、1000 万条 768 维向量、HNSW 索引,Qdrant P99 延迟 18ms、内存占用 21GB;Milvus 集群模式 P99 延迟 27ms、内存占用 34GB。本文给出完整部署脚本、压测代码与踩坑记录,帮你按业务规模做取舍。
Docker Compose编排多服务容器化部署与健康检查启动顺序配置详解
本文以一个真实的前后端分离项目为例,分享如何使用Docker Compose编排Nginx、Spring Boot、MySQL、Redis四个服务。通过自定义bridge网络、命名卷挂载、healthcheck健康检查与depends_on条件启动,将服务启动成功率从62%提升至99%,冷启动时间从平均48秒压缩至22秒。文中包含完整可运行的docker-compose.yml与Dockerfil
Git分支策略与CI/CD集成:基于GitLab 16.8的团队协作工作流配置详解
团队从SVN迁移到Git后,分支混乱、合并冲突频发、上线靠手动打包的问题困扰了我们半年。经过三个迭代的调整,我们基于GitLab 16.8落地了一套包含Git Flow简化分支模型、Merge Request强制Code Review、GitLab CI流水线的完整工作流,将平均合并冲突处理时间从40分钟降到8分钟,发布频率从双周一次提升到每周两次。本文分享这套工作流的真实配置文件和踩坑记录。
从0.63到0.89:一次RAG检索增强生成系统的调优记录
本文记录了一个企业知识库RAG系统从上线到调优的完整过程。初始版本Top-5命中率仅0.63,答案幻觉率高达22%。通过将固定长度切分改为语义+递归混合chunk策略、把embedding从text-embedding-ada-002切换到bge-large-zh-v1.5、并引入bge-reranker-large重排,最终Top-5命中率提升到0.89,幻觉率降到6%,P99延迟控制在1.4s
React 19与Vue 3.5跨框架状态管理迁移实录:从Prop Drilling到Pinia/Zustand的蜕变
当项目膨胀到230+组件、状态散落于12层Props与8个Context时,每次需求迭代都成噩梦。本文记录一个双框架(React 19.0.0 + Vue 3.5.13)项目中,将状态管理从Context/Props迁移至Zustand 5.0.2与Pinia 2.2.6的完整历程。通过对比迁移前后性能(渲染耗时降低57%、包体积仅增8KB、代码删除量达2400行),并拆解迁移策略、兼容层设计及3
React 16与Vue 3项目从Props drilling迁移到Zustand/Pinia的完整记录
在维护两个分别基于React 16.8和Vue 3.2的中后台项目时,组件层级超过5层后Props透传导致代码冗余率高达40%,且因Context触发全树重渲染导致列表页交互帧率降至20fps。本文记录了迁移到Zustand 4.3和Pinia 2.1的决策过程、分步迁移方案,以及迁移后首屏渲染时间缩短28%、重渲染次数减少67%的实测数据。适合正被状态管理混乱困扰的团队参考。
FastAPI慢查询根因追踪:Profiling与Redis缓存双层优化实录
一个生产环境接口P95延迟从820ms降至97ms,吞吐量提升4.6倍。文章记录了FastAPI服务遭遇的典型性能陷阱——SQLAlchemy懒加载导致的N+1查询及高并发下的缓存击穿。通过cProfile与Py-Spy定位热点,采用`selectinload`策略批量加载关联数据,并引入Redis分布式锁与多级缓存架构。实测数据:首字节时间(TTFB)降低88%,数据库QPS从2100降至340
React 19与Vue 3.5跨框架状态管理迁移实录:从Props钻透到Zustand 5与Pinia 3
当组件树超过5层,Context触发重渲染的代价是每次状态更新导致约40%无关组件重新执行render。本文记录了一个双框架项目(React 19.1 + Vue 3.5)从Props/Context迁移至Zustand 5.0.6与Pinia 3.0.3的完整过程。通过自研的`useSyncExternalStore`桥接层与Pinia的`setup store`,实现了在保留现有业务代码前提下