实战教程大纲

实战教程系列:从零到生产,构建企业级 AI 应用

基于老李和小王的探索历程,我们将之前文章中涉及的案例提炼为 5 个循序渐进的实战项目,覆盖 RAG、知识库、Agent、MCP 和多模态检索。每个项目包含清晰的目标、前置知识、章节大纲和核心代码示例。


项目一:企业级 RAG 系统——从文档到精准问答

描述
搭建一个完整的检索增强生成系统,将公司内部文档转化为可精准问答的 AI 助手。从文档分块、向量化入库,到混合检索与重排序,最后通过 RAGAS 评测体系验证效果,并部署生产环境。

前置知识:Python 基础、向量嵌入概念(建议阅读《向量嵌入:把文字变成数字的魔法》)

章节大纲

  1. 文档分块的艺术

    • 固定大小分块 vs 语义分块 vs 递归分块
    • 用烤串比喻理解重叠窗口
    • 实战:使用 LangChain 的 RecursiveCharacterTextSplitter
  2. 向量数据库选型与搭建

    • 为什么 PostgreSQL + pgvector 不够用?
    • 主流向量数据库对比(Chroma, Qdrant, Milvus)
    • 实战:用 Chroma 三步构建向量存储
  3. 检索策略:从关键词到混合搜索

    • 稠密检索 vs 稀疏检索(BM25)的优劣
    • 混合搜索与 RRF 融合算法
    • 实战:Elasticsearch 混合搜索配置
  4. 重排序:让结果从“还行”到“精准”

    • Bi-Encoder vs Cross-Encoder
    • 两阶段检索架构
    • 实战:集成 BGE-Reranker 进行精排
  5. RAG 系统评测

    • 为什么“看着挺好”不靠谱?
    • RAGAS 指标:忠实度、答案相关性、上下文召回率
    • 实战:用 RAGAS 跑通自动化评测,集成 CI 门禁
  6. 生产环境七大坑与监控

    • 索引更新、碎片化、成本爆炸、延迟炸弹……
    • 监控仪表盘搭建:检索延迟、召回率、API 调用量
    • 实战:给 RAG 系统加上告警和缓存

核心代码示例

python
# 完整 RAG Pipeline 伪代码
from langchain.text_splitter import RecursiveCharacterTextSplitter
from chromadb import Client
from FlagEmbedding import FlagReranker
from ragas import evaluate

splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(docs)

vector_db = Client().create_collection("kb")
vector_db.add(documents=chunks, embeddings=embeddings)

def hybrid_search(query):
    dense_results = vector_db.query(query, top_k=20)
    sparse_results = bm25.search(query, top_k=20)
    fused = reciprocal_rank_fusion(dense_results, sparse_results)
    reranked = reranker.compute_score([[query, doc] for doc in fused])
    return reranked[:5]

eval_result = evaluate(dataset, metrics=[faithfulness, answer_relevancy])

项目二:智能知识库——让知识活起来

描述
构建一个可管理、可进化、可溯源的企业知识库。涵盖知识分类、版本管理、结构化与非结构化数据处理、知识图谱及质量保证,最终将知识库通过 MCP 暴露给 AI 应用。

前置知识:RAG 基础、数据库概念

章节大纲

  1. 知识库 vs RAG:图书馆与借书服务

    • 知识库的职责:存储、组织、更新、权限
    • 知识库四种形态:文档库、FAQ 库、图谱库、混合库
    • 实战:设计一个三层知识分类体系(领域→主题→概念)
  2. 结构化与非结构化数据的处理管道

    • 结构化(员工表)、半结构化(Markdown)、非结构化(会议纪要)
    • 不同数据的存储与索引策略
    • 实战:用 SpaCy + LLM 实现实体抽取
  3. 知识版本管理:latest 不是策略

    • 用 Git 管理文档版本
    • 时间旅行查询:“2023 年的政策是什么?”
    • 实战:基于 Git 的 Markdown 知识库,打 tag 发布
  4. 知识图谱与 Graph RAG

    • 节点、边、属性 vs 向量孤岛
    • 用 LLM 自动抽取三元组构建图谱
    • 实战:Neo4j + LLM 实现 Text2Cypher 查询
  5. 知识质量保证:垃圾进,垃圾出

    • 质量四维度:准确、完整、一致、新鲜
    • 自动化质检管道(去重、矛盾检测、过期标记)
    • 实战:每周自动生成知识体检报告
  6. 知识同步:让知识库与变化的世界同步

    • 定时、事件驱动、CDC 三种同步模式
    • 增量更新与冲突处理
    • 实战:监听 Git Webhook 实时更新向量库
  7. 用 MCP 暴露知识库

    • 将知识库封装为 MCP Server(Resources + Tools)
    • 让任何 AI 应用都能按需访问知识
    • 实战:用 TypeScript 编写知识库 MCP Server,接入 Claude Desktop

核心代码示例

python
# 自动打标签 + 版本管理示意
def auto_tag_and_commit(doc, repo):
    tags = llm.generate(f"为这篇文档生成3个标签:{doc.content}")
    doc.tags = tags
    repo.add(doc)
    repo.commit(f"feat: {doc.title} - 标签 {tags}")
    repo.tag(f"v{datetime.now().strftime('%Y%m%d')}")

项目三:AI Agent 开发——从实习生到多面手

描述
开发一个能够自主规划、调用工具、拥有记忆的 AI Agent。从 ReAct 推理循环开始,逐步加入工具调用、记忆系统、任务规划、安全护栏,最后构建一个多 Agent 协作的编辑部系统。

前置知识:LLM 基础、Python 异步编程

章节大纲

  1. Agent 本质:不是套壳的 LLM

    • 实习生的比喻:感知 → 推理 → 决策 → 执行
    • 为什么 cron job 不是 Agent?
    • 实战:20 行代码的天气查询 Agent
  2. ReAct 模式:先想,再动,再想

    • Thought → Action → Observation 循环
    • Prompt 工程:如何编写 ReAct 系统指令
    • 实战:订机票 Agent 的完整轨迹
  3. 工具调用:给 Agent 装上瑞士军刀

    • JSON Schema 定义工具
    • 工具设计黄金法则(单一职责、幂等、错误处理)
    • 实战:为 Agent 添加搜索、计算器、数据库三个工具
  4. 记忆系统:短期、长期和工作记忆

    • 便签纸、笔记本、档案室的比喻
    • 会话摘要 + 向量数据库持久化用户偏好
    • 实战:带三层记忆的个人助手 Agent
  5. 任务规划:把大象放进冰箱

    • Plan-then-Execute vs Tree of Thoughts
    • 子任务依赖管理与动态重规划
    • 实战:让 Agent 自动撰写竞品分析报告
  6. 安全护栏:别让 Agent 变成脱缰野马

    • 输入层、推理层、执行层三层护栏
    • 分级权限与二次确认
    • 实战:用 Guardrails-AI 给客服 Agent 加上金额拦截
  7. 多 Agent 系统:编辑部协作

    • 搜索员、分析师、写手三个角色
    • 协调者模式(AutoGen 群聊)
    • 实战:AutoGen 实现季度报告自动生成

核心代码示例

python
# ReAct 循环骨架
def react_loop(query, tools, max_steps=10):
    messages = [{"role": "system", "content": REACT_PROMPT}]
    for _ in range(max_steps):
        response = llm.generate(messages)
        if "Final Answer" in response:
            return response
        action = parse_action(response)
        observation = execute_tool(action)
        messages.append({"role": "assistant", "content": response})
        messages.append({"role": "user", "content": f"Observation: {observation}"})

项目四:MCP 全栈开发——连接一切 AI 应用与工具

描述
深入理解并实践 Model Context Protocol,从零编写 MCP Server,掌握 Resources、Tools、Prompts、Transport、Sampling 等核心特性,最终将公司内部服务(数据库、API、文件系统)全部接入 MCP 生态。

前置知识:TypeScript/JavaScript 基础,了解客户端-服务端模型

章节大纲

  1. MCP 是什么?AI 的 USB-C 接口

    • MCP vs 传统插件系统
    • Client、Server、Transport 三大概念
    • 实战:Hello World MCP Server(30 行代码)
  2. Resources:给数据一个门牌号

    • URI 模板与参数化访问
    • 内容类型与二进制支持
    • 实战:把产品文档抽成 docs://products/{id} 资源
  3. Tools 与 Prompts:菜刀和菜谱

    • Tool 负责执行,Prompt 负责引导
    • 巨型 Tool 拆分与 Prompt 编排
    • 实战:报表导出功能(三个 Tool + 一个 Prompt)
  4. Transport 选型:stdio、SSE 和 Streamable HTTP

    • 性能对比与适用场景
    • 本地用 stdio,远程用 SSE
    • 实战:混合部署架构——本地文件 Server(stdio) + 远程数据库 Server(SSE)
  5. 安全:OAuth 舞蹈、权限迷宫和信任链

    • Tool 级别权限分级(只读、写入、管理)
    • OAuth 2.0 授权码流程
    • 实战:给数据库 Server 加上读写分离与审批
  6. Sampling:让 Server 反过来请教 LLM

    • 逆调用与决策辅助
    • 文件删除前的风险评估
    • 实战:文件清理 Server 在执行前请求 LLM 判断
  7. 真实世界案例剖析

    • 订单查询 MCP Server(客服团队)
    • API 网关 MCP Server(运维团队)
    • 项目文件管理 MCP Server(开发团队)
    • 通用模式:权限包裹、限制声明、审计日志

核心代码示例

typescript
// 订单查询 Server 的安全核心
server.setRequestHandler("tools/call", async (request) => {
  const { name, arguments: args } = request.params;
  if (name === "query_order") {
    const sql = `SELECT * FROM orders WHERE user_id = ${args.userId}`;
    if (/INSERT|UPDATE|DELETE|DROP/i.test(sql)) throw new Error("禁止写操作");
    const result = await db.query(sql);
    return { content: [{ type: "text", text: JSON.stringify(maskSensitive(result)) }] };
  }
});

项目五:多模态知识库与智能体——图文表代码,一个都不少

描述
扩展传统文本知识库,将图片、表格、代码片段纳入检索范围。利用 CLIP 实现图文互搜,结合浏览器 Agent 自动抓取外部信息,最后构建一个能理解多种模态的智能助手。

前置知识:RAG 基础、Agent 基础、深度学习初步

章节大纲

  1. 多模态嵌入:文字、图片共享同一个语义空间

    • CLIP 模型原理
    • 实战:用自然语言搜索架构图
  2. 表格与代码的特殊处理

    • 结构化提取 + 语义索引混合
    • 实战:自动回答“支付回调的 QPS 上限是多少?”
  3. 浏览器 Agent:教 AI 点点点

    • Playwright + 视觉理解定位元素
    • 安全模式与误操作防护
    • 实战:自动抓取竞品价格并生成报表
  4. 代码生成 Agent:你的新初级开发

    • SWE-Agent 工作流:从 Issue 到 PR
    • 测试驱动修复与自主 debug
    • 实战:让 Agent 修一个真实 backlog Bug
  5. 多模态知识库的构建与暴露

    • 混合存储:文字向量 + 图片向量 + 结构化表
    • 多模态 RAG 检索流程
    • 实战:用 MCP 包装多模态知识库,供 Claude 调用
  6. 综合实战:搭建一个全能的研发助手

    • 集成:知识库(MCP)+ 代码 Agent + 浏览器 Agent
    • 协作流程:用户提问 → 检索文档/代码/页面 → 生成回答
    • 实战:处理一个真实的开发任务“给系统增加一个新 API,并更新文档”

核心代码示例

python
# 多模态检索示意
def multimodal_search(query):
    text_results = text_vector_db.search(query, top_k=5)
    image_results = image_vector_db.search(query, top_k=3)
    table_results = table_index.search(query, top_k=2)
    return fuse_results(text_results, image_results, table_results)

学习路径建议

  • 初学者:项目一 → 项目二(前 4 章)→ 项目三(前 3 章)
  • 进阶者:项目二(后 3 章)→ 项目四 → 项目五
  • 架构师/团队负责人:完整走过所有项目,重点阅读生产部署、安全、评测章节

每个项目均可独立实践,代码示例均可在本地运行。老李和小王的故事将继续陪伴你的学习旅程——从怀疑到相信,从 Hello World 到生产环境。

MCP 是什么?AI 应用的"USB-C 接口"
浏览器 Agent:教 AI 学会"点点点"