饮墨

子安饮墨馀三斗,留与卿儿作赋来

3步搭建生产级RAG管道:Python + ChromaDB + LLM实战

痛点

你用 LLM 做了个内部知识问答系统,Demo 跑得挺好,上线后用户反馈"回答经常胡说八道"。根本原因:LLM 没有你的私有数据,纯靠参数记忆回答,幻觉不可避免。

RAG(Retrieval-Augmented Generation)是当前最务实的解法——先检索相关文档片段,再喂给 LLM 生成答案。但从 Demo 到生产,坑不少:分块策略影响召回率、Embedding 模型选型决定语义精度、检索结果排序直接影响最终回答质量。

本文给出一套 Python 可直接落地的 RAG 管道方案,覆盖文档分块、向量存储、检索增强到 LLM 生成的全流程。

方案概览

技术栈选型:

...
组件

Read more

用 Caddy 替代 Nginx 做反向代理:自动 HTTPS、零证书管理,3 步上线实操

痛点

运维老手都知道 Nginx + Certbot 的经典组合:配反向代理、写 cron 续签证书、每次加站点就要改一堆配置。问题来了:

  1. 证书管理是负担 — certbot renew 偶尔失败、DNS 验证要额外配置、多域名续签容易漏
  2. 配置语法重 — 一个简单的反代要写 10+ 行,server_name / proxy_pass / proxy_set_header 一个不能少
  3. reload 有风险 — 配置写错一个分号,nginx -t 过了但上线后 502,线上排查浪费时间

Caddy 是一个用 Go 编写的现代 Web 服务器,核心卖点:自动 HTTPS(含证书申请 + ...

Read more

用 Tailscale 组建零配置跨云内网:替代传统 VPN 的 3 个运维场景实操

痛点

跨云、跨地域服务器互联是运维老大难问题。传统方案要么搭 IPSec/WireGuard 手动维护密钥和路由表,要么买云厂商的 VPN Gateway 按小时计费。一旦节点数超过 10 台,配置复杂度指数上升:

  • IPSec 隧道每增加一个节点,需要 N-1 条新隧道配置
  • WireGuard 手动方案需要分发公钥、维护 AllowedIPs、处理 NAT 穿透
  • 云厂商 VPN Gateway 单通道价格 $36-72/月,3 朵云互联成本直接翻 3 倍

核心需求: 10-50 台分布在 AWS、阿里云、自建 IDC 的服务器需要安全互联,要求零手动密钥管理、自动 NAT 穿透、节点...

Read more

3 个运维场景用 Podman 替代 Docker:无 daemon、rootless、systemd 原生集成实操

痛点

Docker 在生产环境有几个绕不开的问题:

  1. dockerd 单点故障 — daemon 挂了,所有容器失联,docker ps 都执行不了,运维只能盲操作
  2. Root 权限依赖 — 默认要 root 或 docker 组,一旦容器逃逸直接拿到宿主机最高权限
  3. 与 systemd 割裂 — 容器生命周期靠 dockerd 管理,和系统服务管理体系两套逻辑,重启策略、日志收集都要单独配

Podman 是红帽主导的开源容器引擎,API 兼容 Docker,但架构完全不同 — 无 daemon、fork-exec 模型、原生支持 rootless 和 systemd 集成。以下用 3 个...

Read more

用 Ansible Semaphore 替代 AWX/Tower:3 步搭建轻量 Ansible Web 管理平台,告别命令行裸跑

Ansible 好用,但团队规模一上来,谁跑了什么 Playbook、改了哪台机器、上次部署是啥时候——全靠口头交接和 history | grep ansible。AWX(Tower 开源版)太重,光部署就要 K8s + PostgreSQL + Redis。Semaphore 只需要一个二进制 + SQLite,5 分钟就能给 Ansible 加上 Web UI、权限管控、执行历史和 Webhook 触发。


痛点:Ansible 裸跑的 3 个致命问题

团队 5 个人共用一台跳板机跑 Ansible:

  1. 无审计 — 谁在凌晨 3 点跑了 site.yml 把生产数据库配置覆盖了...

Read more

Kubernetes HPA 自定义指标弹性伸缩:3步实现基于业务QPS的自动扩缩容

痛点

你的服务跑在 Kubernetes 上,HPA 配了 CPU 80% 自动扩容——看起来没问题,直到某天流量洪峰来了,CPU 还在 40%,但接口响应已经飙到 5 秒。原因很简单:CPU 利用率并不总是能准确反映业务负载。对于 IO 密集型、依赖外部服务的应用,基于 CPU/Memory 的默认 HPA 策略就是个摆设。

真实场景: 某电商促销活动,网关服务每秒请求量从 500 QPS 飙到 8000 QPS。Pod 的 CPU 只到 50%(因为大量时间在等后端响应),HPA 纹丝不动,用户看到的是一堆超时。运维被迫手动 kubectl scale,错过了黄金 30 秒。

解决方...

Read more

3 步用 Cloudflare Tunnel 安全暴露内网服务:零公网 IP、零开端口,替代传统反向代理

痛点:暴露内网服务的老路越走越窄

运维团队经常面对一个需求:把内网的 Grafana、Jenkins、内部 API 安全暴露给远程团队访问。

传统方案:

方案 问题
公网 IP + Nginx 反代 需要开端口、配 TLS、防 DDoS,攻击面大
VPN(WireGuard/OpenVPN) 客户端配置复杂,移动端体验差,排错成本高
SSH 隧道 临时可以,生产不稳定,断线无自动恢复
frp/ngrok 依赖中转服务器,带宽受限,安全性参差

核心矛盾:想让特定人访问内网服务,又不想在防火墙上开任何入站端口。

Cloudflare Tunnel(原 Argo...

Read more

Kubernetes Gateway API 替代 Ingress:3 步迁移到下一代流量管理标准,附生产避坑指南

痛点:Ingress 越用越力不从心

你是否遇到过这些场景:

  • 一个集群跑了 3 种 Ingress Controller(Nginx、Traefik、ALB),annotation 写法完全不同,运维人员换个组就得重新学
  • 想做流量灰度(90%→v1,10%→v2),Ingress 的 annotation hack 方式既丑陋又不可移植
  • 平台团队想统一管控入口流量策略,但 Ingress 把「基础设施配置」和「应用路由」混在一个对象里,权限没法分

Kubernetes Ingress API 诞生于 2015 年,设计之初只考虑了 HTTP 反向代理这一种场景。十年过去,它的 spe...

Read more

用 DuckDB 替代 awk+pandas 做运维数据分析:本地 SQL 查询 10GB 日志只要 3 秒

痛点:运维数据分析工具链太重或太弱

运维日常绑着两种数据分析路径:

路径一:awk/grep/sort 组合拳 — 处理小文件够用,但一旦面对 GB 级 CSV 导出(比如 CloudWatch 费用报表、CDN 日志聚合、Prometheus 远端存储导出),管道写到崩溃,性能也拉胯。

路径二:Python pandas — 功能强大,但 10GB 的 CSV 直接 pd.read_csv() 内存炸了。要么加 chunksize 分片处理,代码量翻倍;要么上 Spark/Dask,环境搭建比分析本身还耗时。

真正的需求很简单:在本地用 SQL 快速查询大文件(CSV/Parquet/...

Read more

用 uv 替代 pip+venv+pyenv:Python 依赖管理提速 10 倍的 3 步实操

痛点:pip 安装慢、venv 散落、pyenv 编译耗时

运维团队写 Python 脚本越来越多——监控采集、自动化任务、AI Agent 工具。但 Python 工具链一直是痛:

  • pip install 一个带 C 扩展的包动辄 2 分钟,CI 流水线里依赖安装比业务逻辑还慢
  • 每个项目手动 python -m venv .venv,忘了激活就污染全局
  • 多版本 Python 靠 pyenv 从源码编译,一台新机器初始化半小时起步
  • requirements.txt 没有锁文件机制,线上和开发环境依赖版本漂移

2024 年 Astral 团队(Ruff 的作者)发布了 uv——一个用 ...

Read more