内容纲要
✅ 一、RAG 与 Fine-tune 的区别?什么时候用?
📌 1. 本质区别:
维度 | RAG(Retrieval-Augmented Generation) | Fine-tune(微调) |
---|---|---|
方式 | 外接知识库:检索 → 拼接 → 生成 | 内化知识:更新模型权重 |
成本 | 相对较低,只用搭配向量库 | 高:需要标注数据、训练成本、算力 |
灵活性 | 非常灵活,知识更新快 | 更新慢,需重新训练 |
上限 | 依赖原模型能力 + prompt设计 | 可突破原模型限制,但受数据质量约束 |
📌 2. 什么时候用?
-
用RAG的情况:
- 知识经常更新(如公司制度、FAQ、新闻)
- 没有太多标注数据,但有大量“文档”
- 希望上线快,开发快,成本低
-
用Fine-tune的情况:
- 模型需要理解某些“复杂格式”、“特定语言风格”
- 想要“结构化输出”、“风格一致性”
- 数据明确、任务明确,且愿意承担训练成本(如问诊、代码生成等)
👉 推荐组合使用:
RAG 提供“新鲜知识”,Fine-tune 固定“任务格式和表达风格”,两者配合才是 LLM 实战王道。
✅ 二、向量检索如何加速?怎么选向量数据库?
📌 向量检索优化路径:
-
减少向量规模
- 文档切 chunk 时做摘要(chunk summarization)
- 只入库“有价值”的语义块(过滤空话、重复)
-
向量压缩
- 用 PCA、Product Quantization 降维或量化
- 或者用 dense + sparse 混合检索(如 hybrid search)
-
提高索引结构效率
- 使用高效 ANN 索引:
HNSW
,IVF
,Faiss
,ScaNN
- 使用高效 ANN 索引:
-
缓存机制
- 热问缓存(Redis / Memcached)
- Query embedding 缓存
📌 向量数据库选择建议:
产品 | 优点 | 适用场景 |
---|---|---|
FAISS | 免费、快、本地部署 | 小中型项目,实验、原型 |
Milvus | 高可用、支持分布式 | 中大型项目,需要服务化 |
Weaviate | 自带 RESTful API + 支持多模态 | 需要快速接入API,支持图片等 |
Pinecone | 云服务、无需管理 | 快速上线、无需运维的SaaS场景 |
Qdrant | Rust编写,速度快,向量+payload强 | 灵活检索+复杂过滤 |
👉 选择建议:
- 如果你在搞自己的平台(比如你之前做的 DataOps 平台),推荐用 Milvus + Faiss 混合搭建;
- SaaS工具快上,选 Pinecone / Weaviate;
- 本地调试快,先用 Faiss;
✅ 三、RAG 中 prompt 如何构建才能信息利用最大化?
构建 RAG prompt 的核心目标是:
“让模型充分理解上下文知识,精准回答,不发散”
📌 最佳实践:
-
系统提示提前引导(System Prompt):
你是某某公司的专家顾问,只根据提供的上下文回答问题,不要发挥。
-
使用结构化模板,统一格式:
【背景知识】 {retrieved_context} 【用户提问】 {user_question} 【回答要求】 - 严格基于背景知识; - 如果找不到答案,请说“根据资料未能找到”;
-
利用 Chunk Ranking 提前排序内容
- 基于相似度 + 权重分数选前K个 chunk 拼接
- 避免信息“挤爆上下文”
-
动态压缩 chunk
- 每个 chunk 最好 300~500 tokens 左右(别太短/太长)
-
考虑“融合总结型 Prompt”
- 如果检索出多个 chunk,用 prompt 先合成摘要,再回答问题。
✅ 四、Agent 会不会无限调用工具?怎么限制循环?
📌 默认是会“发疯乱调用”的,如果你不设限制!
✅ 限制方式:
-
限制最大调用次数 / 最大步数
- Langchain/AutoGen/Transformers Agents 都支持:
max_iterations = 5
- Langchain/AutoGen/Transformers Agents 都支持:
-
加入“反思节点”
- 在每轮后问模型:
当前任务是否已经完成?是否需要继续?
- 在每轮后问模型:
-
中间状态追踪 + 记忆机制
- 记录每一步的输出,防止 Agent“重复调用相同函数”
-
加惩罚机制(ReAct 风格)
- 模型若调用无效工具,在 prompt 中惩罚这类行为
-
手动/自动注入人类监督(Human-in-the-loop)
- 高风险任务中间加确认点
🧠 总结一句话:
📌 RAG 快速上线,Fine-tune 精细打磨;向量检索是效率核心,Prompt 设计决定信息利用率;Agent 要有“边界意识”,否则容易无限循环。