RAG系统三阶段优化:chunk切分、embedding替换与rerank接入
在基于LangChain构建的问答系统中,初期检索召回率仅62%,top-3准确率不足70%。本文记录了一次完整的RAG系统优化历程:从固定512字符chunk改为语义感知的递归切分策略,召回率提升至78%;将text2vec-large-chinese替换为bge-m3 embedding模型,top-3准确率突破86%;最终引入bge-reranker-v2-m3重排序,在保持召回率的同时,t
从Prop Drilling到Zustand:React/Vue项目状态管理重构实录
一个中型后台项目从Vue 2的provide/inject和React 16的Context API迁移到Pinia/Zustand的过程。重构前组件树深度达7层,每次状态变更触发30+无关组件重渲染,页面切换耗时从200ms飙升到680ms。迁移后使用Zustand的slice模式将状态分片,结合React.memo和useSyncExternalStore,组件重渲染次数减少72%,首屏加载时
Docker Compose编排多服务项目:网络、健康检查与启动顺序
部署一个由Nginx、Spring Boot应用和PostgreSQL组成的多服务项目时,我踩过服务启动竞态、卷权限丢失和网络隔离混乱的坑。本文通过一个实际电商后台的docker-compose.yml配置,详解如何通过depends_on + healthcheck实现严格启动顺序,用自定义网络隔离前后端流量,以及用卷挂载持久化数据库与日志。配置上线后服务启动成功率从73%提升至99.2%,单次
FastAPI/Flask接口延迟300ms→12ms:Profiling与缓存重构实录
一个高并发API接口在300 QPS下P99延迟飙到310ms,单次请求执行5次SQL查询,平均耗时280ms。本文记录如何用py-spy和slowlog定位瓶颈,通过合并查询、引入Redis缓存、调整Nginx缓冲区大小,将P99压到12ms,吞吐量提升至4500 QPS。涉及Python 3.11、FastAPI 0.110、Flask 2.3、Redis 7.0,附完整压测数据与代码。
从Context到Zustand:React项目状态管理重构性能优化实录
当React项目超过50个组件、Context导致全树渲染延迟从8ms飙升至120ms时,我决定从Props/Context迁移到状态管理库。本文对比了Redux Toolkit、Zustand和Vue Pinia,记录了一次真实重构:将一个包含3层嵌套、5个全局状态的购物车模块,从Context + useReducer迁移到Zustand v4.5。最终渲染次数降低67%,组件更新延迟从平均4
LangChain+AutoGPT模式手写AI Agent:工具链与循环控制深度实现
传统LLM调用在复杂任务中频繁失败,单次调用准确率不足60%。本文基于LangChain 0.1.12与ChatGLM3-6B,手写一个支持工具注册、记忆回溯、异常熔断的AI Agent原型。通过定义3个核心工具(搜索、计算、文件读写),实现5轮循环内任务完成率从32%提升至89%,单次决策耗时控制在1.2s内。附带完整错误处理与记忆压缩代码,可直接嵌入生产级RPA流程。
FastAPI/Flask接口300ms→12ms优化全链路分析与改造
一个线上商品查询接口,日均调用量200万,P99延迟从320ms逐步恶化到850ms。本文使用cProfile与py-spy定位到两个核心瓶颈:SQLAlchemy N+1查询(单次请求触发98条SQL)与JSON序列化中的Decimal对象处理。通过eager loading、Redis二级缓存、自定义JSON编码器三项改造,压测下QPS从1200提升至9600,P99延迟降至18ms。全文包含
LoRA微调7B模型全流程:数据、训练、Loss与推理对比
面对Llama 2 7B等大模型在特定领域(如法律问答)表现不佳的痛点,我尝试用LoRA参数高效微调技术,仅训练2%的参数,在单卡A100-80G上将7B模型从“通用回答”优化为“精准引用法条”。本文记录了从数据清洗、QLoRA 4-bit量化配置、到训练loss下降至0.23、最终推理效果提升42%的全过程,附带完整可复现代码与踩坑记录,帮你少走弯路。
LoRA/QLoRA微调7B模型:从数据准备到Loss收敛全记录
近期使用LoRA微调一个开源7B模型(基于Llama2-7B),在单卡A100 80G上完成。核心目标是用3k条领域问答数据,将模型在专业问答上的准确率从52%提升至78%。本文详细记录了从数据清洗、tokenizer适配、LoRA rank/dropout调参、训练配置(batch size=8,lr=3e-4,epoch=3)到loss曲线分析、推理效果对比的全过程。值得一提的是,使用QLoR
向量数据库选型实录:Milvus 2.4 vs Qdrant 1.8 在图像检索场景下的硬核对比
在构建一个百万级商品图像相似检索系统时,我先后踩了Milvus和Qdrant的坑。本文基于实际业务(服装电商以图搜图),用同一批1024维ResNet特征向量,在同一台4核16G服务器上部署两个库,实测Milvus在批量写入时吞吐量达到4200 QPS,但单机内存占用飙到12G;Qdrant写入仅2800 QPS,但内存稳定在5G以内,且Top-10召回平均延迟低至12ms。文中附完整docker
Docker Compose多服务编排:网络/卷/健康检查/启动顺序全解
在微服务架构中,手动管理容器依赖、网络通信和数据持久化常导致部署灾难。本文分享一个真实项目(含Nginx、Spring Boot、MySQL、Redis)的docker-compose.yml配置,解决服务启动顺序混乱导致连接失败、容器间网络隔离不当、数据卷权限异常等6个典型问题。通过健康检查与depends_on条件组合,将服务就绪时间从平均45秒缩短至18秒;采用桥接网络与命名卷,实现零配置服
LangChain+AutoGPT模式手写Agent:工具链、记忆与异常恢复实现
本文记录一次将LangChain 0.3.7与AutoGPT循环控制思想结合,手写一个可执行多步推理、调用外部工具、具备短期记忆和错误重试机制的AI Agent全过程。通过具体实现一个“查询天气+计算温差”的场景,展示了工具定义(FunctionTool)、记忆管理(BufferMemory + 自定义摘要)、异常恢复(Exponential Backoff)及循环终止条件(MaxIteratio
前端状态管理迁移实录:从React Context到Zustand/Vue Pinia
在一个月活50万的B端项目中,我们因Context引发全组件树频繁重渲染,导致页面交互卡顿超过300ms。经过方案对比,最终选择Zustand(React)和Pinia(Vue)替换原有Context/Props通信。迁移后,React组件重渲染次数下降72%,Vue页面首次渲染时间从2.1s降至1.2s。本文详细记录了从方案选型、迁移步骤到性能优化的全过程,包含具体版本号和可复现的代码示例。
Milvus vs Qdrant:电商图片向量检索选型实测对比
在电商以图搜图场景中,向量数据库选型直接决定资源成本与响应速度。本文基于vivo商品库(200万图片,768维向量),对比Milvus 2.3.3和Qdrant 1.8.0在相同硬件(4C8G)下的部署、查询性能与内存占用。实测显示:Qdrant在百万级数据下P95延迟低至12ms,内存占用仅Milvus的60%;而Milvus在HNSW索引构建时CPU暴涨至95%,且Docker部署依赖etcd
向量数据库选型实测:Milvus 2.3 vs Qdrant 1.7在图片搜索场景下的对比
在构建一个百万级商品图片向量检索系统时,我对比了Milvus 2.3.0和Qdrant 1.7.3两套方案。本文记录了在相同硬件环境(4核8G云服务器)下的部署步骤、查询性能与资源占用实测数据。结果显示,Qdrant在单机部署下内存占用低30%,但Milvus在10万+向量规模下查询延迟更稳定(p99 < 50ms)。文中附完整Docker Compose配置和Python查询代码,以及踩坑记录。
React/Vue项目从Context到Zustand的迁移与性能重构
当项目从几百组件膨胀到数千组件,Context API的穿透渲染问题让页面卡顿超过300ms。本文记录了一个真实的中后台项目,从React Context + Vue Provide/Inject混合架构,迁移到Zustand + Pinia统一状态管理的完整过程。包含两个方案的渲染性能对比数据(Context方案下无关组件重渲染率68%,迁移后降至12%),以及如何通过细粒度selector和订
Git工作流重构:分支策略+CI/CD流水线配置实战
我们团队从分支混乱导致每周至少3次代码冲突、CI构建失败率高达40%,到采用Git Flow+Feature Branch的组合策略,配合GitHub Actions实现自动化构建与Code Review强制保护,整体冲突率下降90%,构建成功率稳定在97%以上。本文详细拆解了分支模型设计、Review流程规则、以及完整的CI/CD YAML配置,包含真实环境参数与坑点记录,适合正在优化团队协作的
asyncio重构Web API:并发查询性能提升5倍的实战记录
去年Q3我们负责的舆情监控API在高并发下频繁超时,单次请求需串行查询3个外部数据源,平均延迟2.8秒。本文记录用Python 3.10 + asyncio + aiohttp对该API进行异步改造的全过程。通过将串行I/O改为协程并发,在保持代码可读性的前提下,P95延迟从4.1秒降至0.8秒,QPS从120提升至580。你会看到具体的before/after代码对比、连接池配置细节,以及解决"
FastAPI与Flask接口从800ms到45ms的压测调优全记录
一个线上商品列表接口,Flask+SQLAlchemy首次请求耗时800ms,压测QPS仅120。通过Profiling定位到N+1查询、重复序列化和对象拷贝三大瓶颈,结合异步改造、查询优化和Redis缓存,最终将P99延迟降到45ms,QPS提升至2100。本文记录了从Flask迁移到FastAPI的调优过程,附完整代码与wrk压测数据。
FastAPI/Flask接口性能调优:Profiling、数据库与缓存全链路压测
接到一个订单查询API,RT从50ms飙升到8.2s,TPS跌到个位数。本文记录从Flask迁移到FastAPI的全过程:使用py-spy定位CPU热点、SQLAlchemy懒加载N+1优化、Redis缓存热点数据。压测数据:QPS从120提升至3800,P99延迟降低97%。包含Python3.11、FastAPI 0.104、Redis 7.2的生产级配置。