不足(当前常见限制):
- 推理与记忆能力受限:难以稳定利用长期经验指导复杂决策
6. Prompt 基础:任务说明四要素
- 任务说明:直接清晰描述期望模型完成的任务
- 上下文:提供相关背景信息
- 问题:描述具体问题/需要处理的信息
- 输出格式:明确需要的展示形式(列表/表格/JSON/步骤等)
7. RAG:检索增强生成(Retrieval-Augmented Generation)
7.1 为什么需要 RAG?(模型缺陷)
- 知识过时:训练数据有时间边界,可能产生偏差
- 知识边界:模型内部知识不可能覆盖所有领域与细节
类比人类:遇到不确定问题时,我们会搜索/查资料;RAG 让模型也能“先检索再回答”。
7.2 LangChain 与 LlamaIndex
- LangChain:更侧重“用 LLM 构建应用”的整体流程与组件组合
- LlamaIndex:更侧重“数据索引与检索系统”,便于快速搭建检索链路
7.3 RAG 落地完整流程(建议版)
1) 资料接入(Ingestion)
- 上传/采集:Word/Excel/PPT(或网盘/数据库/网页)
- 解析抽取:转成纯文本,必要时保留结构(标题、表格、页码/页签、段落层级)
- 清洗规范化:去空行/重复、统一编码与换行、脱敏、过滤噪声(页眉页脚、目录页等)
- 打元数据:至少包含
source、type、section、time,可选page等
2) 切分(Chunking)
- 切分策略:优先按段落/标题/表格行,其次按字符长度补齐;中文可结合标点
- Chunk 参数:常用
chunk_size600–1200、overlap80–200(按材料密度调) - 去重与合并:过短 chunk 合并;高度重复内容去重,避免检索噪声
3) 向量化与入库(Embedding + Indexing)
- 选择 Embedding:
- 本地模型(
sentence-transformers):稳定、可离线、避免网关不支持/embeddings的问题 - 远程 Embedding(OpenAI 兼容):省资源但依赖接口可用性与成本
- 本地模型(
- 写入向量库:Chroma/FAISS/PGVector 等,保存
chunk_text + metadata + embedding - 持久化与版本:按“知识库版本/上传批次”管理,支持重建与增量更新
4) 提问与检索(Query + Retrieve)
- 问题规范化:去噪、必要时改写(Query Rewrite),把口语问题变成“可检索问题”
- 检索策略:向量相似度(top-k);可选 BM25/关键词与向量混合检索(Hybrid)
- 过滤与约束:按 metadata 过滤(仅检索本次上传/指定资料集)
5) 重排与证据选择(Rerank / Evidence)
- 重排(可选但常有效):用 cross-encoder / reranker 对 top-k 再排序
- 证据裁剪:挑选最相关 chunk,控制总 token;必要时做摘要压缩(Context Compression)
6) 组装提示词并生成(Prompt + Generate)
- 系统指令:强调“必须基于检索证据回答;找不到要明确说资料未包含”
- 上下文注入:证据按“来源 + 内容”拼接进 prompt
- 回答策略:先结论再要点;必要时附引用(source/sheet/slide)
7) 结果输出与可解释性(Answer + Citations)
- 答案 + 引用:列出命中的来源片段,便于核对
- 失败可见:检索为空或相似度低,明确提示“资料中未找到”并建议补充资料
8) 评估与迭代(Evaluation)
- 离线评估:构造 QA 集,关注命中率、引用正确率、回答一致性
- 线上观测:记录 query、命中文档、点击/采纳反馈、失败原因
- 迭代点:切分策略、embedding 模型、top-k、重排、提示词、去重与过滤规则