[ PROMPT_NODE_22524 ]
llm-app-patterns
[ SKILL_DOCUMENTATION ]
# ? LLM 应用模式
> 构建 LLM 应用的生产级模式,灵感来源于 [Dify](https://github.com/langgenius/dify) 和行业最佳实践。
## 何时使用此技能
在以下场景使用此技能:
- 设计基于 LLM 的应用程序
- 实现 RAG(检索增强生成)
- 使用工具构建 AI 智能体
- 设置 LLMOps 监控
- 在不同的智能体架构之间进行选择
---
## 1. RAG 工作流架构
### 概述
RAG(检索增强生成)将 LLM 的响应建立在您的数据基础之上。
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 数据摄入 │────▶│ 检索上下文│────▶│ 生成响应 │
│ Documents │ │ Context │ │ Response │
└─────────────┘ └─────────────┘ └─────────────┘
│ │ │
▼ ▼ ▼
┌─────────┐ ┌───────────┐ ┌───────────┐
│ 分块处理│ │ 向量搜索 │ │ LLM │
│Embedding│ │ Search │ │ + Context│
└─────────┘ └───────────┘ └───────────┘
### 1.1 文档摄入
python
# 分块策略
class ChunkingStrategy:
# 固定大小分块(简单但可能破坏上下文)
FIXED_SIZE = "fixed_size" # 例如:512 tokens
# 语义分块(保留语义)
SEMANTIC = "semantic" # 按段落/章节拆分
# 递归拆分(尝试多种分隔符)
RECURSIVE = "recursive" # ["nn", "n", " ", ""]
# 文档感知(尊重结构)
DOCUMENT_AWARE = "document_aware" # 标题、列表等
# 推荐设置
CHUNK_CONFIG = {
"chunk_size": 512, # tokens
"chunk_overlap": 50, # 分块间的 token 重叠
"separators": ["nn", "n", ". ", " "],
}
### 1.2 嵌入与存储
python
# 向量数据库选择
VECTOR_DB_OPTIONS = {
"pinecone": {
"use_case": "生产环境,托管服务",
"scale": "数十亿向量",
"features": ["混合搜索", "元数据过滤"]
},
"weaviate": {
"use_case": "自托管,多模态",
"scale": "数百万向量",
"features": ["GraphQL API", "模块化"]
},
"chromadb": {
"use_case": "开发,原型设计",
"scale": "数千向量",
"features": ["简单 API", "内存模式"]
},
"pgvector": {
"use_case": "现有 Postgres 基础设施",
"scale": "数百万向量",