RAG 为什么总拉胯?这个 19k星的 LLM 应用模式库告诉你真正的问题在哪
为什么你写的 RAG 总是效果拉胯?
做过 RAG 的同学大概率有过这种经历——vecdb 查出来一堆 chunks,LLM 却还是答非所问。不是模型不行,是你那条 RAG 链路从根上就设计错了。
今天挖到一个叫 llm-app-patterns 的 Skill,GitHub ⭐ 19,892,业界罕见的高热毒顶。它不是那种教你「怎么调 API」的玩具,而是一套覆盖 RAG 架构、Agent 模式、LLMOps 全链路的生产级工程手册。写它的团队参考了 Dify 的设计哲学和大量一线大厂的实践,把 RAG 踩坑经验全写进了代码。
RAG 不只是「查向量」那么简单
大多数人以为 RAG 就是:向量数据库 + 相似度检索 + 塞进 prompt。但实际上这链条里每个环节都有无数细节决定成败。
这个 Skill 第一个让我眼前一亮的地方是把 chunking 策略讲透了。它给出了 5 种分块方案:固定大小(简单但会切断语义)、语义分块(按段落切,保留含义)、递归分割(尝试多种分隔符)、文档感知(尊重文章结构)。还给了推荐配置:chunk_size=512、overlap=50,配上 separators 优先级。
然后是 embedding 选型。Skill 列出了 Pinecone(生产托管)、Weaviate(自部署多模态)、ChromaDB(开发阶段)、Pgvector(已有 Postgres 基础设施)四种常见方案,还对比了 OpenAI text-embedding-3-small/large 和免费本地 BGE-large 的成本与质量。这比自己一篇篇查文档快太多了。
检索的骚操作:混合搜索 + 多查询 + 压缩
基础语义搜索只是起点。Skill 给出三种进阶检索模式:
- 混合搜索:语义相似度 × 0.5 + BM25 关键词 × 0.5,再做 Reciprocal Rank Fusion 融合结果。alpha 参数可调,适用不同类型 query。
- 多查询检索:让 LLM 生成原问题的 3 个变体,同时查再合并去重,recall 显著提升。
- 上下文压缩:先粗召回 top-10,再让 LLM 提取相关片段,兼顾「全」和「准」。
这些在真实业务场景里都是血泪经验。
四大 Agent 架构一次搞清楚
Skill 第二个重磅内容是 Agent 架构模式,包含 ReAct(推理+行动交替)、Function Calling(结构化工具调用)、Plan-and-Execute(规划+执行分离)、Multi-Agent(多角色协作)。每种都给了完整的 Python 代码实现和适用场景分析。
特别是那个架构决策矩阵——什么场景用哪种模式、复杂度多少、成本几何,一目了然。再也不用纠结「这个任务用 ReAct 还是 Plan-Execute」这种问题了。
LLMOps:很多人第一步就跳过的坑
Skill 还用了整整一章讲监控和可观测性。latency_p50/p99、 hallucination_rate、cache_hit_rate、error_rate……这些指标听起来常识,但真正上线时能完整搭起来的团队少之又少。这里直接给出基于 OpenTelemetry 的分布式追踪代码模板,改改就能用。
总结
这个 Skill 核心价值就一句话:把 LLM 应用从「能跑」变成「能上线」的那些工程细节,全部系统化了。不管你是要搭 RAG、还是设计 Agent、还是做线上监控,都能直接参考它的代码和决策树,省去大量试错时间。
GitHub:https://github.com/davila7/claude-code-templates
评论区
登录后可评论。