关键要点
- 写作/内容创作: Ollama + OpenWebUI。零配置、精美聊天界面、上下文窗口可调。
- 编程/代码审查: vLLM + FastAPI + VS Code插件。批量处理、并行推理、流式传输。
- 本地RAG: LlamaIndex + Ollama/vLLM + Qdrant向量数据库。分块、嵌入、检索一体化。
- AI智能体: LangGraph + vLLM后端。工具调用、记忆、规划循环。学习曲线较陈。
- 多用户API: nginx负载均衡器 + vLLM。支持并发请10+。扩展性最佳。
- 微调: HuggingFace Transformers + LoRA + Ollama推理。训练与serving分离。
- 实时流式: Ollama原生流式或vLLM + 令牌流式传输。聊天机器人最佳UX。
硬件分级决策表(2026年4月)
根据GPU/显存选择最佳堆栈。每种组合均有真实基准测试。编程和智能体工作流比写作更需要大模型;RAG质量更取决于嵌入模型而非LLM大小。
| 您的硬件 | 写作 | 编程 | RAG | 智能体 |
|---|---|---|---|---|
| 4–8 GB显存(GTX 1660、RTX 3050) | Ollama + Phi-4 Mini | Ollama + Qwen2.5-Coder-1.5B | LlamaIndex + Phi-4 Mini | 不推荐 |
| 12 GB显存(RTX 3060、RTX 4070) | Ollama + Llama 3.2 8B | vLLM + Qwen2.5-Coder-7B | LlamaIndex + Llama 3.2 8B | LangGraph + Ollama(较慢) |
| 16 GB显存(RTX 4070 Ti、RTX 4080) | Ollama + Mistral Small 3.1 | vLLM + Qwen2.5-Coder-14B | LlamaIndex + Mistral 3.1 | LangGraph + vLLM |
| 24 GB显存(RTX 3090、RTX 4090) | Ollama + Llama 3.3 70B Q4 | vLLM + Qwen2.5-Coder-32B | LlamaIndex + Llama 3.3 70B | LangGraph + vLLM(最快) |
**推荐堆栈: Ollama + OpenWebUI + Markdown编辑器**
选择理由:OpenWebUI提供最佳聊天体验。无需编程。长文写作的上下文窗口灵活性(4K–32K)超过LM Studio。比云端API更经济实惠。
- 124 GB显存:`ollama pull llama3.3:70b` — 质量最高,写作基准测试相当GPT-4(2023)。
- 216 GB显存:`ollama pull mistral-small3.1` — 128K上下文,24 GB以下最高质量。
- 38 GB显存:`ollama pull llama3.2:8b` — 写作质量良好,消费级硬件上运行流畅。
- 4通过Docker安装OpenWebUI:`docker run -d -p 3000:8080 ghcr.io/open-webui/open-webui:latest`
- 5在OpenWebUI设置中按文档长度配置上下文窗口(8K–32K Token)。
**推荐堆栈: vLLM + Qwen2.5-Coder + IDE插件**
Qwen2.5-Coder在HumanEval得劆8剸2%(2026年4月最佳开源代码模型)。vLLM批量推理比Ollama快3–5倍。原生OpenAI API兼容,完美适配现有IDE工具。实时补全流式传输已启用。
多文件并行代码审查
自动化多文件代码审查可利用vLLM批量处理:
- 1安装vLLM:`pip install vllm`
- 2启动Qwen2.5-Coder-7B服务:`python -m vllm.entrypoints.openai.api_server --model Qwen/Qwen2.5-Coder-7B-Instruct --port 8000`
- 316+ GB显存可使用更大的14B模型:`--model Qwen/Qwen2.5-Coder-14B-Instruct`
- 4将IDE插件(VS Code Continue.dev、Cursor等)连接至`http://localhost:8000/v1`。
- 5开启批量代码审查:单次API调用并行处理最多10个文件(`vllm`默认支持batch=10)。
# Review 10 files in parallel using vLLM batch processing
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="not-needed")
code_files = [
("utils.py", open("utils.py").read()),
("models.py", open("models.py").read()),
# ... up to 10 files
]
# vLLM processes all 10 in parallel (1 batch request)
reviews = []
for filename, code in code_files:
prompt = f"Review this code for bugs, style, and performance:
{code}"
response = client.chat.completions.create(
model="Qwen2.5-Coder-7B-Instruct",
messages=[{"role": "user", "content": prompt}],
temperature=0.2, # Deterministic for review tasks
)
reviews.append((filename, response.choices[0].message.content))
for filename, review in reviews:
print(f"=== {filename} ===
{review}
")推荐堆栈: LlamaIndex + Ollama/vLLM + Qdrant + FastAPI UI
LlamaIndex负责分块与检索。Qdrant高速、本地、隐私。Ollama免费生成Embedding,或用vLLM做LLM推理。
- 1安装LlamaIndex:`pip install llama-index`
- 2将文档(PDF、TXT、Markdown)加载到LlamaIndex。
- 3将文档分块(1024 Token默认),用本地模型生成Embedding。
- 4将Embedding存入Qdrant向量数据库(通过Docker本地运行)。
- 5通过LlamaIndex查询:检索最相似K个文档,带上上下文提示 LLM。
- 6包装成FastAPI端点,支持Web UI或IDE集成。
推荐堆栈: LangGraph + vLLM + 工具定义
LangGraph提供结构化的智能体流。vLLM足够快以支持连续10+次LLM调用。工具调用显式且易于调试。
- 1安装LangGraph:`pip install langchain langgraph`
- 2将工具(搜索、计算器、文件I/O)定义为函数签名。
- 3创建LLM为决策节点、工具为动作节点的智能体图。
- 4在紧密循环中使用vLLM后端实现低延迟 LLM调用。
- 5执行智能体循环:LLM → 工具选择 → 执行 → 循环直到完成。
推荐堆栈: vLLM + nginx负载均衡 + 监控
vLLM支持分布式serving。Nginx多路复用请求。双卡配置支持并发10+用户。监控每用户Token吸吐量。
中国企业应特别注意:根据2021年《数据安全法》和《个人信息保护法》,金融、医疗、法律等领域的敦感数据建议使用本地推理。自托管vLLM + nginx方案可实现数据不出本地服务器。
- 1将vLLM部署到固定端口,参数`--served-model-name model-name`。
- 2配置nginx对2+个vLLM实例做负载均衡(多卡时每卡一个实例)。
- 3使用OpenAI兼容`/v1/chat/completions`端点保证客户端兼容性。
- 4通过Prometheus端点监控(vLLM导出请求延迟、吸吐量指标)。
- 5为每个用户设置Token桶算法限流。
推荐堆栈: HuggingFace Transformers + LoRA + Ollama(推理)
LoRA将微调所需显存降伕10倍。Ollama轻松加载微调后模型。模块化:训练和serving分离。
注意(2026年4月): Meta已对Llama 2商业微调不再推荐。建议在Llama 3.2(`meta-llama/Llama-3.2-1B`或更大)或Qwen2.5(`Qwen/Qwen2.5-7B`)上微调,遵循pache 2.0许可证。两者均支持LoRA且可在Ollama中加载。
- 1使用`peft`库(LoRA)减少显存占用。
- 2训练阶段需要模型显存的4倍(优化器状态、梯度),与推理分开运行。
- 3将LoRA适配器导出到HuggingFace Hub或本地文件系统。
- 4将微调后模型加载到Ollama:`ollama create mymodel -f Modelfile`
- 5或使用HuggingFace TRL进行RLHF训练。
推荐堆栈: Ollama(原生流式)或vLLM + Server-Sent Events(SSE)
流式传输提升感知性能(用户看到Token逐个呈现)。Ollama配置最简单。vLLM Token吸吐量最高。
- 1Ollama:调用`/api/generate`并设置`stream: true`,Token以换行符分隔的JSON返回。
- 2vLLM:使用`/v1/chat/completions`并设置`stream: true`,返回OpenAI兼容SSE流。
- 3前端:使用EventSource API(JavaScript)消费流,每个Token更新UI。
- 4禁用批量处理(batch=1)实现最低延迟。
应该选Ollama还是vLLM?
Ollama适合聊天UI + 简单开发。vLLM適合API服务器 + 批量处理 + 高性能場景。两者不互斥,可同时运行。
Ollama可以用于生产环API吗?
可以,但vLLM更快(吐射2刀3–5倍)。Ollama适合<10 req/s。vLLM适合高10+ req/s场景。
代码审查最佳本地LLM是什么?
vLLM + Qwen2.5-Coder-7B-Instruct。Qwen2.5-Coder在HumanEval得劆8剸2%(开源最佳)。vLLM并行处理10个文件。RTX 3060 12GB成逗30–50 tok/s。
简单RAG是否需要向量数据库?
<100个文档:内存Embedding(np.ndarray)即可。>100个文档:建议Qdrant或Weaviate避免内存溢出。
LangGraph对于简单聊天机器人是否过于复杂?
是的。直接用Ollama或vLLM即可。LangGraph适合多步骤工作流(智能体循环、规划)场景。
可以同时使用Ollama和vLLM吗?
可以。例:Ollama负责聊天UI,vLLM负责批量 API。同一台机器不同端口并运。
相关阅读
- 编程最佳本地LLM 2026 — Qwen2.5-Coder vs DeepSeek-Coder HumanEval排名。
- 本地RAG配置 2026 — LlamaIndex + Qdrant + Ollama完整实现指南。
- LangGraph本地LLM智能体 — 逐步示例的智能体工作流框架。
- Ollama vs LM Studio — 后端对比:CLI vs GUI、速度、批量处理。
- Open WebUI vs SillyTavern — 聊天界面对比:专业与角色扮演。
- 本地LLM需要多少显存? — 按模型大小和用途划分硬件需求。
选择LLM堆栈时的常见错误
- 未配备vLLM就用Ollama作为生产API: Ollama上限<10 req/s。服务10+并发用户的生产环必须vLLM。部署前务必进行负载测试。
- 未配备vLLM后端就运行LangGraph: LangGraph智能体需褵10+次连续LLM调用。Ollama引入延迟瓶颈。亚秒级响应必须LangGraph + vLLM组合。
- 未管理内存在同一GPU混跑Ollama + vLLM: 两个工具均将权重加载到显存。两个70B模型实例占用5632 GB显存。建议使用独立GPU或Q2量化失空间。
- 写作时上下文窗口选择不当: 默认4K上下文限制头脑风暴。长文写作应在OpenWebUI设置中配置16K–32K Token窗口。代价:每个Token推理慢2–3倍。
- 误以为所有后端速度相同: vLLM与Ollama使用不同的内核。同硬件上vLLM推理速度快2–3倍。速度差异源于后端,不是前端(OpenWebUI、LM Studio仅是UI)。
参考资料
- Ollama GitHub — 官方文档、流式API规范、模型库。
- vLLM GitHub — OpenAI API兼容性、批量处理、连续批处理文档。
- Qwen2.5-Coder技术报告 — 阿里巴巴通义千问。HumanEval 82%,代码专用。Apache 2.0许可。
- LlamaIndex文档 — 文档索引、分块、RAG检索框架。
- LangGraph文档 — 智能体工作流、状态机、工具调用模式。
- Qdrant文档 — 本地Embedding存储用向量数据库,Docker就绪,Apache 2.0。
- Continue.dev文档 — 使用本地LLM后端的VS Code / JetBrains IDE插件。