性能优化指南
本文档描述 Project Chameleon 的性能优化策略,包括基准指标、缓存策略与数据库优化。
性能基准
关键指标
| 指标 | 目标值 | 说明 |
|---|---|---|
| API 响应延迟 P95 | ≤ 500ms | 不含 LLM 生成时间 |
| RAG 检索延迟 P95 | ≤ 200ms | 向量检索 + 上下文构建 |
| 首 Token 延迟 | ≤ 1s | 流式输出首字节 |
| 吞吐量 | ≥ 100 QPS | 单实例并发能力 |
监控端点
通过 /metrics 端点暴露 Prometheus 格式指标:
http_request_duration_secondsrag_retrieval_latency_secondsllm_first_token_latency_seconds
多级缓存策略
缓存层级
| 层级 | 存储 | TTL | 用途 |
|---|---|---|---|
| L1 | 进程内存 | 60s | 热点查询结果 |
| L2 | Redis | 5min | 跨实例共享 |
| L3 | 磁盘 | 1h | 大体积数据 |
缓存键设计
# RAG 查询缓存
cache_key = f"rag:{hash(query)}:{top_k}"
# 嵌入向量缓存
cache_key = f"embed:{hash(text)}"
数据库优化
PostgreSQL 索引
-- 会话查询优化
CREATE INDEX idx_sessions_updated ON sessions(updated_at DESC);
-- 消息查询优化
CREATE INDEX idx_messages_session ON messages(session_id, created_at);
连接池配置
# SQLAlchemy 连接池
engine = create_engine(
DATABASE_URL,
pool_size=10,
max_overflow=20,
pool_timeout=30
)
异步与并发
异步 I/O
所有外部调用使用 async/await:
async def process_request(query: str) -> Response:
# 并行执行独立操作
rag_task = asyncio.create_task(rag_search(query))
context_task = asyncio.create_task(load_context())
results, context = await asyncio.gather(rag_task, context_task)
return generate_response(results, context)