527 lines
41 KiB
HTML
527 lines
41 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
<title>RAG 入门:原理、流程与使用</title>
|
||
<style>
|
||
:root{
|
||
--blue:#0b63f6;
|
||
--blue2:#0f8bff;
|
||
--cyan:#15c8c2;
|
||
--green:#12a57d;
|
||
--navy:#061b4e;
|
||
--ink:#102047;
|
||
--muted:#51627f;
|
||
--line:#c8dcff;
|
||
--soft:#f3f8ff;
|
||
--glass:rgba(255,255,255,.86);
|
||
--shadow:0 20px 46px rgba(16,45,100,.16),0 2px 10px rgba(16,45,100,.08);
|
||
}
|
||
*{box-sizing:border-box}
|
||
html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#eef3fb;color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans SC","Microsoft YaHei",Arial,sans-serif}
|
||
body{display:grid;place-items:center}
|
||
h1,h2,h3,h4,p{margin:0}
|
||
.deck{position:relative;width:100vw;height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 8% 15%,rgba(11,99,246,.13),transparent 24%),radial-gradient(circle at 90% 80%,rgba(21,200,194,.16),transparent 28%),#edf3fb}
|
||
.slide{position:relative;display:none;width:min(100vw,calc(100vh * 16 / 9));aspect-ratio:16/9;max-height:100vh;background:#fff;overflow:hidden;box-shadow:var(--shadow);padding:46px 56px 42px}
|
||
.slide.active{display:block}
|
||
.slide::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(12,97,246,.05) 1px,transparent 1px),linear-gradient(rgba(12,97,246,.05) 1px,transparent 1px);background-size:36px 36px;mask-image:radial-gradient(ellipse at 45% 40%,black 18%,transparent 82%);pointer-events:none}
|
||
.slide::after{content:"";position:absolute;left:-120px;bottom:-70px;width:580px;height:180px;background:repeating-linear-gradient(155deg,rgba(11,99,246,.11) 0 2px,transparent 2px 12px);transform:skewX(-18deg);opacity:.55;pointer-events:none}
|
||
.slide > *{position:relative;z-index:1}
|
||
.slide-inner{height:100%;display:flex;flex-direction:column;gap:18px}
|
||
.top{height:66px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:22px;border-bottom:2px solid #dbe8ff;padding-bottom:14px}
|
||
.chapter{height:56px;min-width:122px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:30px;font-weight:900;letter-spacing:.03em;background:linear-gradient(135deg,#0054e6,#0d82ff);clip-path:polygon(0 0,82% 0,100% 50%,82% 100%,0 100%);box-shadow:0 10px 22px rgba(11,99,246,.24)}
|
||
.head h2{font-size:34px;line-height:1.05;font-weight:900;letter-spacing:0;color:#061b4e}
|
||
.head p{font-size:15px;color:var(--muted);margin-top:6px}
|
||
.brand{display:flex;align-items:center;gap:10px;color:var(--blue);font-weight:900}
|
||
.brand-mark{width:44px;height:44px;border:2px solid var(--blue);border-radius:12px;display:grid;place-items:center;background:#fff;font-weight:900}
|
||
.content{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center}
|
||
.footer{height:42px;display:flex;align-items:flex-end;justify-content:space-between;color:#7d91b5;font-size:11px;letter-spacing:.14em;text-transform:uppercase;border-top:1px solid #dbe8ff;padding-top:12px}
|
||
.page-corner{position:absolute;right:0;bottom:0;width:86px;height:52px;background:linear-gradient(135deg,#0b63f6,#0050ca);clip-path:polygon(38% 0,100% 0,100% 100%,0 100%);color:#fff;font-size:18px;font-weight:900;display:flex;align-items:flex-end;justify-content:flex-end;padding:0 18px 12px;z-index:3}
|
||
.kicker{font-size:13px;font-weight:900;letter-spacing:.18em;color:var(--blue);text-transform:uppercase;margin-bottom:8px}
|
||
.big-title{font-size:58px;line-height:1.08;font-weight:950;color:#061b4e;letter-spacing:0}
|
||
.sub{font-size:20px;line-height:1.55;color:var(--muted);max-width:760px;margin-top:14px}
|
||
.accent{background:linear-gradient(135deg,var(--blue),var(--cyan));-webkit-background-clip:text;background-clip:text;color:transparent}
|
||
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
|
||
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
|
||
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
|
||
.card{background:var(--glass);border:1.5px solid var(--line);border-radius:14px;box-shadow:0 12px 26px rgba(38,91,160,.09);padding:18px}
|
||
.card h3{font-size:20px;color:#08205d;font-weight:900}
|
||
.card h4{font-size:17px;color:#08205d;font-weight:900}
|
||
.card p,.card li{font-size:13px;line-height:1.55;color:var(--muted)}
|
||
.tag{display:inline-flex;align-items:center;justify-content:center;height:28px;padding:0 12px;border-radius:999px;background:#eaf3ff;color:var(--blue);font-size:12px;font-weight:900}
|
||
.tag.green{background:#e7fbf5;color:var(--green)}
|
||
.tag.cyan{background:#e7fbff;color:#0796a5}
|
||
.tag.warn{background:#fff4de;color:#d27a00}
|
||
.tag.red{background:#fff0f4;color:#d81948}
|
||
.icon{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;background:#fff;border:1px solid #c8dcff;box-shadow:0 8px 18px rgba(11,99,246,.12);color:var(--blue);font-size:23px;font-weight:950;margin-bottom:10px}
|
||
.ribbon-row{display:grid;grid-template-columns:175px 1fr;gap:18px;align-items:center;margin:14px 0}
|
||
.ribbon{height:78px;display:flex;align-items:center;gap:14px;color:#fff;background:linear-gradient(135deg,var(--blue),#0050d8);clip-path:polygon(0 0,88% 0,100% 50%,88% 100%,0 100%);border-radius:10px 0 0 10px;padding:0 22px;font-size:22px;font-weight:950}
|
||
.ribbon.green{background:linear-gradient(135deg,#08a88f,#06c1b8)}
|
||
.ribbon.navy{background:linear-gradient(135deg,#12327a,#0b63f6)}
|
||
.ribbon-line{min-height:78px;border:1.5px solid var(--line);border-radius:12px;background:rgba(255,255,255,.78);display:grid;grid-template-columns:90px 1fr;align-items:center;padding:14px 22px}
|
||
.dot-list{display:grid;gap:7px}
|
||
.dot-list span{position:relative;padding-left:16px;color:#1b2b58;font-size:14px;line-height:1.4}
|
||
.dot-list span::before{content:"";position:absolute;left:0;top:.62em;width:6px;height:6px;border-radius:50%;background:var(--blue)}
|
||
.diagram-title{height:34px;display:inline-flex;align-items:center;padding:0 18px;border-radius:10px;background:linear-gradient(135deg,var(--blue),#0053df);color:#fff;font-weight:950;box-shadow:0 10px 18px rgba(11,99,246,.22)}
|
||
.stack{display:grid;gap:12px}
|
||
.stack-layer{position:relative;border:1.5px solid #a7c8ff;border-radius:20px;background:linear-gradient(180deg,#fff,rgba(237,247,255,.92));box-shadow:0 14px 26px rgba(11,99,246,.12);padding:18px 20px}
|
||
.stack-layer::after{content:"";position:absolute;left:42px;right:42px;bottom:-11px;height:18px;border-radius:0 0 22px 22px;background:linear-gradient(90deg,rgba(11,99,246,.18),rgba(21,200,194,.18));z-index:-1}
|
||
.stack-items{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:12px}
|
||
.mini{background:#fff;border:1px solid #d7e6ff;border-radius:12px;padding:13px;text-align:center;min-height:92px}
|
||
.mini strong{display:block;font-size:16px;color:#08205d;margin-bottom:4px}
|
||
.mini span{font-size:12px;line-height:1.35;color:var(--muted)}
|
||
.side-notes{display:grid;gap:20px}
|
||
.side-note{display:grid;grid-template-columns:56px 1fr;gap:12px;align-items:center}
|
||
.side-note .round{width:52px;height:52px;border-radius:50%;border:2px solid #d7e6ff;background:#fff;display:grid;place-items:center;color:var(--blue);font-weight:950;font-size:20px}
|
||
.side-note strong{display:block;color:var(--blue);font-size:16px}
|
||
.side-note span{font-size:12px;color:var(--muted)}
|
||
.value-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:18px;border:1px solid #d8e6ff;border-radius:14px;background:rgba(255,255,255,.76);padding:12px 14px}
|
||
.value{display:grid;grid-template-columns:42px 1fr;gap:10px;align-items:center;border-right:1px solid #d8e6ff}
|
||
.value:last-child{border-right:0}
|
||
.value .vicon{width:38px;height:38px;border-radius:10px;background:#eaf3ff;color:var(--blue);display:grid;place-items:center;font-weight:950}
|
||
.value strong{display:block;font-size:15px;color:var(--blue)}
|
||
.value span{font-size:11px;color:var(--muted)}
|
||
.flow{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;align-items:stretch}
|
||
.step{position:relative;min-height:142px;padding:16px;border:1.5px solid #bdd7ff;border-radius:14px;background:#fff;box-shadow:0 10px 22px rgba(11,99,246,.08)}
|
||
.step::after{content:"";position:absolute;right:-13px;top:50%;width:14px;height:2px;background:#8db9ff}
|
||
.step:last-child::after{display:none}
|
||
.step .num{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,var(--blue),var(--cyan));color:#fff;display:grid;place-items:center;font-weight:950;margin-bottom:10px}
|
||
.step h3{font-size:18px;color:#08205d;font-weight:950}
|
||
.step p{font-size:12px;line-height:1.45;color:var(--muted);margin-top:6px}
|
||
.step.hot{border-color:var(--cyan);box-shadow:0 0 0 4px rgba(21,200,194,.12),0 10px 22px rgba(11,99,246,.08)}
|
||
.arrow{font-size:24px;color:#75a7ff;font-weight:950;text-align:center}
|
||
.compare{display:grid;grid-template-columns:1fr 82px 1fr;gap:16px;align-items:center}
|
||
.compare .mid{height:82px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,var(--blue),var(--cyan));color:#fff;font-size:26px;font-weight:950;box-shadow:0 12px 24px rgba(11,99,246,.24)}
|
||
.center-badge{width:150px;height:150px;border-radius:36px;background:linear-gradient(135deg,#0b63f6,#12c8c2);color:#fff;display:grid;place-items:center;text-align:center;font-size:28px;font-weight:950;box-shadow:0 20px 38px rgba(11,99,246,.28);margin:auto}
|
||
.limit-grid{display:grid;grid-template-columns:1fr 170px 1fr;gap:18px;align-items:center}
|
||
.limit-col{display:grid;gap:14px}
|
||
.limit{display:grid;grid-template-columns:50px 1fr;gap:12px;align-items:center;border:1.5px solid #cfe0ff;border-radius:14px;background:#fff;padding:14px}
|
||
.limit .n{width:46px;height:46px;border-radius:12px;background:#eaf3ff;color:var(--blue);display:grid;place-items:center;font-weight:950}
|
||
.pipeline{display:grid;grid-template-columns:1.1fr 1.2fr 1.1fr;gap:18px;align-items:center}
|
||
.pipe-card{border:1.5px solid #cfe0ff;border-radius:18px;background:#fff;padding:18px;min-height:260px}
|
||
.bad-list{display:grid;gap:10px;margin-top:14px}
|
||
.bad-list span{border:1px dashed #ffb4c4;border-radius:10px;background:#fff7fa;color:#a6193c;padding:10px;font-size:13px}
|
||
.filter{display:grid;place-items:center;min-height:280px}
|
||
.filter .funnel{width:190px;height:230px;background:linear-gradient(180deg,#e9f3ff,#fff);clip-path:polygon(8% 0,92% 0,62% 48%,62% 100%,38% 100%,38% 48%);border:2px solid #9fc3ff;filter:drop-shadow(0 12px 20px rgba(11,99,246,.16));display:grid;place-items:center;color:var(--blue);font-size:28px;font-weight:950}
|
||
.chunks{display:grid;grid-template-columns:1.1fr .9fr;gap:18px;align-items:center}
|
||
.doc{border:1.5px solid #cfe0ff;border-radius:18px;background:#fff;padding:18px}
|
||
.slice{border-left:5px solid var(--blue);border-radius:10px;background:#f6faff;padding:12px;margin-top:10px}
|
||
.vector-bars{display:grid;grid-template-columns:repeat(12,1fr);gap:6px;margin-top:16px}
|
||
.bar{height:56px;border-radius:7px;background:var(--blue);opacity:.25}
|
||
.bar:nth-child(2n){opacity:.45}.bar:nth-child(3n){opacity:.75}.bar:nth-child(5n){opacity:.9}
|
||
.rank-list{display:grid;gap:10px}
|
||
.rank{display:grid;grid-template-columns:42px 1fr auto;gap:12px;align-items:center;border:1.5px solid #cfe0ff;border-radius:12px;background:#fff;padding:12px}
|
||
.rank .rnum{width:38px;height:38px;border-radius:10px;background:#eaf3ff;color:var(--blue);display:grid;place-items:center;font-weight:950}
|
||
.score{font-size:20px;font-weight:950;color:var(--green)}
|
||
.prompt-box{background:#071d48;color:#e7f0ff;border-radius:18px;padding:18px 20px;font-family:"SFMono-Regular",Consolas,"Liberation Mono",monospace;font-size:13px;line-height:1.65;box-shadow:0 18px 34px rgba(7,29,72,.24)}
|
||
.prompt-box b{color:#7dd3fc}.prompt-box mark{background:rgba(250,204,21,.18);color:#fde68a;padding:1px 4px;border-radius:4px}
|
||
.agent-map{display:grid;grid-template-columns:1fr 70px 1fr 70px 1fr;gap:10px;align-items:center}
|
||
.agent-card{border:1.5px solid #cfe0ff;border-radius:18px;background:#fff;padding:18px;text-align:center;min-height:190px}
|
||
.agent-card .icon{margin:0 auto 12px}
|
||
.tool-bus{display:grid;grid-template-columns:1fr 1.3fr 1fr;gap:18px;align-items:center}
|
||
.bus{height:96px;border-radius:22px;background:linear-gradient(135deg,var(--blue),var(--cyan));color:#fff;display:grid;place-items:center;text-align:center;font-size:26px;font-weight:950;box-shadow:0 16px 30px rgba(11,99,246,.24)}
|
||
.tools{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
|
||
.tool{border:1.5px solid #cfe0ff;background:#fff;border-radius:14px;padding:15px;text-align:center;font-weight:900;color:#08205d}
|
||
.tool span{display:block;font-size:12px;color:var(--muted);font-weight:500;margin-top:4px}
|
||
.cover{padding:58px 70px 52px}
|
||
.cover .slide-inner{justify-content:center}
|
||
.cover-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:34px;align-items:center}
|
||
.cover-panel{border:1.5px solid #cfe0ff;background:rgba(255,255,255,.82);border-radius:24px;padding:26px;box-shadow:0 14px 30px rgba(11,99,246,.12)}
|
||
.cover-visual{position:relative;height:440px}
|
||
.orb{position:absolute;border-radius:50%;background:linear-gradient(135deg,var(--blue),var(--cyan));box-shadow:0 24px 44px rgba(11,99,246,.24)}
|
||
.orb.one{width:205px;height:205px;left:160px;top:64px;display:grid;place-items:center;color:#fff;font-size:54px;font-weight:950}
|
||
.ring{position:absolute;border:2px dashed #9ac1ff;border-radius:50%;inset:22px;animation:spin 18s linear infinite}
|
||
@keyframes spin{to{transform:rotate(360deg)}}
|
||
.orbit-card{position:absolute;width:150px;border:1px solid #cfe0ff;border-radius:16px;background:#fff;padding:14px;text-align:center;box-shadow:0 12px 22px rgba(11,99,246,.13)}
|
||
.orbit-card.a{left:16px;top:36px}.orbit-card.b{right:18px;top:56px}.orbit-card.c{left:40px;bottom:52px}.orbit-card.d{right:42px;bottom:28px}
|
||
.orbit-card strong{display:block;color:var(--blue);font-size:18px}.orbit-card span{font-size:12px;color:var(--muted)}
|
||
.nav-controls{position:fixed;left:50%;bottom:10px;transform:translateX(-50%);z-index:30;display:flex;align-items:center;gap:6px;padding:6px;border:1px solid rgba(16,32,71,.12);border-radius:999px;background:rgba(255,255,255,.74);box-shadow:0 8px 24px rgba(16,32,71,.12);backdrop-filter:blur(10px);opacity:.72;transition:opacity .18s ease,background .18s ease}
|
||
.nav-controls:hover,.nav-controls:focus-within{opacity:1;background:rgba(255,255,255,.94)}
|
||
.nav-btn{width:32px;height:32px;border:0;border-radius:50%;background:#061b4e;color:#fff;font-size:19px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer}
|
||
.nav-btn:disabled{opacity:.32;cursor:not-allowed}
|
||
.nav-index{min-width:58px;text-align:center;font-size:13px;font-weight:900;color:var(--muted)}
|
||
.progress{position:fixed;left:0;right:0;bottom:0;height:4px;background:#dbe6f6;z-index:25}
|
||
.progress span{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--blue),var(--cyan));transition:width .2s ease}
|
||
.notes{display:none}
|
||
@media (max-aspect-ratio:16/9){
|
||
.slide{width:calc(100vh * 16 / 9);height:100vh}
|
||
}
|
||
@media (max-width:900px){
|
||
body{overflow:auto;display:block}
|
||
html,body{height:auto;min-height:100%;overflow:auto}
|
||
.deck{display:block;height:auto;min-height:100vh;padding:0;background:#fff}
|
||
.slide{width:100%;height:auto;aspect-ratio:auto;min-height:100vh;box-shadow:none;padding:28px 22px 34px}
|
||
.slide.active{display:block}
|
||
.top{height:auto;grid-template-columns:1fr;gap:10px}
|
||
.chapter{width:112px}
|
||
.head h2{font-size:28px}
|
||
.brand{display:none}
|
||
.big-title{font-size:40px}
|
||
.content{justify-content:flex-start;padding-top:24px}
|
||
.cover-grid,.grid2,.grid3,.grid4,.pipeline,.chunks,.tool-bus,.limit-grid,.agent-map{grid-template-columns:1fr}
|
||
.flow{grid-template-columns:1fr}
|
||
.step::after,.arrow{display:none}
|
||
.ribbon-row{grid-template-columns:1fr}
|
||
.ribbon{clip-path:none;border-radius:12px}
|
||
.ribbon-line{grid-template-columns:1fr}
|
||
.value-strip{grid-template-columns:1fr}
|
||
.value{border-right:0;border-bottom:1px solid #d8e6ff;padding-bottom:8px}
|
||
.page-corner{display:none}
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="deck" id="deck">
|
||
|
||
<section class="slide cover active" data-title="封面">
|
||
<div class="slide-inner">
|
||
<div class="cover-grid">
|
||
<div>
|
||
<div class="kicker">RAG · LLM · Prompt · Agent · MCP</div>
|
||
<h1 class="big-title">RAG 入门:让 AI <span class="accent">先查资料</span> 再回答</h1>
|
||
<p class="sub">从 LLM 的限制讲起,串起知识库建设、语义检索、排序、提示词工程、Agent 和 MCP。</p>
|
||
<div class="value-strip" style="grid-template-columns:repeat(3,1fr);margin-top:28px">
|
||
<div class="value"><div class="vicon">01</div><div><strong>先懂限制</strong><span>上下文、幻觉、注意力</span></div></div>
|
||
<div class="value"><div class="vicon">02</div><div><strong>再懂流程</strong><span>建库、检索、生成</span></div></div>
|
||
<div class="value"><div class="vicon">03</div><div><strong>最后扩展</strong><span>Agent、MCP、工具</span></div></div>
|
||
</div>
|
||
</div>
|
||
<div class="cover-panel">
|
||
<div class="cover-visual">
|
||
<div class="orb one"><div class="ring"></div>RAG</div>
|
||
<div class="orbit-card a"><strong>LLM</strong><span>理解和生成</span></div>
|
||
<div class="orbit-card b"><strong>知识库</strong><span>资料与来源</span></div>
|
||
<div class="orbit-card c"><strong>检索</strong><span>找相关片段</span></div>
|
||
<div class="orbit-card d"><strong>提示词</strong><span>约束回答</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="footer"><span>RAG Primer</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="page-corner"></div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="目录">
|
||
<div class="slide-inner">
|
||
<div class="top"><div class="chapter">01</div><div class="head"><h2>学习路径</h2><p>由浅入深:先理解问题,再理解方案,最后理解扩展能力。</p></div><div class="brand"><div class="brand-mark">AI</div><span>RAG 入门</span></div></div>
|
||
<div class="content">
|
||
<div class="flow">
|
||
<div class="step hot"><div class="num">1</div><h3>基础概念</h3><p>RAG 是什么;LLM 是什么;两者分别负责什么。</p></div>
|
||
<div class="step"><div class="num">2</div><h3>LLM 限制</h3><p>上下文有限、会幻觉、长内容专注度下降、顺序不稳定。</p></div>
|
||
<div class="step"><div class="num">3</div><h3>离线建库</h3><p>资料准备、清洗、切片、元数据、向量化入库。</p></div>
|
||
<div class="step"><div class="num">4</div><h3>在线问答</h3><p>用户提问、语义检索、候选排序、拼上下文、生成答案。</p></div>
|
||
<div class="step"><div class="num">5</div><h3>能力扩展</h3><p>提示词工程、多个 LLM 分工、Agent 编排、MCP 连接工具。</p></div>
|
||
</div>
|
||
<div class="value-strip">
|
||
<div class="value"><div class="vicon">懂</div><div><strong>概念</strong><span>知道每个词在干什么</span></div></div>
|
||
<div class="value"><div class="vicon">看</div><div><strong>流程</strong><span>知道一次问答怎么跑</span></div></div>
|
||
<div class="value"><div class="vicon">抓</div><div><strong>关键</strong><span>切片、排序、提示词</span></div></div>
|
||
<div class="value"><div class="vicon">扩</div><div><strong>边界</strong><span>Agent 和工具调用</span></div></div>
|
||
</div>
|
||
</div>
|
||
<div class="footer"><span>Roadmap</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="page-corner"></div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="RAG解释">
|
||
<div class="slide-inner">
|
||
<div class="top"><div class="chapter">02</div><div class="head"><h2>RAG 是什么</h2><p>RAG = Retrieval-Augmented Generation,检索增强生成。</p></div><div class="brand"><div class="brand-mark">R</div><span>先查再答</span></div></div>
|
||
<div class="content">
|
||
<div class="pipeline">
|
||
<div class="pipe-card"><span class="tag">Retrieval</span><div class="icon">查</div><h3>检索</h3><p>先从知识库中找到和问题相关的资料片段。</p></div>
|
||
<div class="filter"><div class="funnel">RAG<br><span style="font-size:14px">筛选相关资料</span></div></div>
|
||
<div class="pipe-card"><span class="tag green">Generation</span><div class="icon">答</div><h3>生成</h3><p>LLM 只基于筛出来的资料组织自然语言答案。</p></div>
|
||
</div>
|
||
<div class="value-strip">
|
||
<div class="value"><div class="vicon">≠</div><div><strong>不是训练模型</strong><span>知识不写进模型参数</span></div></div>
|
||
<div class="value"><div class="vicon">≠</div><div><strong>不是全量塞资料</strong><span>只取相关片段</span></div></div>
|
||
<div class="value"><div class="vicon">=</div><div><strong>动态查资料</strong><span>每次提问实时检索</span></div></div>
|
||
<div class="value"><div class="vicon">✓</div><div><strong>降低幻觉</strong><span>让答案有依据</span></div></div>
|
||
</div>
|
||
</div>
|
||
<div class="footer"><span>RAG = Retrieval + Augmented + Generation</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="page-corner"></div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="LLM 是什么">
|
||
<div class="slide-inner">
|
||
<div class="top"><div class="chapter">03</div><div class="head"><h2>LLM 是什么</h2><p>大语言模型擅长理解上下文和生成表达,但不是企业事实库。</p></div><div class="brand"><div class="brand-mark">LLM</div><span>语言引擎</span></div></div>
|
||
<div class="content">
|
||
<div class="compare">
|
||
<div class="card" style="min-height:300px"><span class="tag">能力</span><div class="icon">AI</div><h3>理解与表达</h3><div class="dot-list" style="margin-top:14px"><span>读懂问题意图</span><span>总结、改写、解释、翻译</span><span>把零散资料组织成答案</span></div></div>
|
||
<div class="mid">≠</div>
|
||
<div class="card" style="min-height:300px"><span class="tag red">边界</span><div class="icon">DB</div><h3>企业事实系统</h3><div class="dot-list" style="margin-top:14px"><span>不会天然知道内部文档</span><span>不知道最新政策和数据</span><span>不能保证每句话都有来源</span></div></div>
|
||
</div>
|
||
<div class="value-strip">
|
||
<div class="value"><div class="vicon">读</div><div><strong>读懂上下文</strong><span>理解语义,不是简单关键词</span></div></div>
|
||
<div class="value"><div class="vicon">写</div><div><strong>生成答案</strong><span>组织语言和结构</span></div></div>
|
||
<div class="value"><div class="vicon">缺</div><div><strong>缺事实来源</strong><span>私有知识需要外部供给</span></div></div>
|
||
<div class="value"><div class="vicon">接</div><div><strong>接 RAG</strong><span>把资料交给 LLM 使用</span></div></div>
|
||
</div>
|
||
</div>
|
||
<div class="footer"><span>LLM handles language, not source-of-truth</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="page-corner"></div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="LLM 的限制">
|
||
<div class="slide-inner">
|
||
<div class="top"><div class="chapter">04</div><div class="head"><h2>LLM 的对话限制</h2><p>正因为有这些限制,不能把所有知识一次性丢给 LLM。</p></div><div class="brand"><div class="brand-mark">!</div><span>为什么需要 RAG</span></div></div>
|
||
<div class="content">
|
||
<div class="limit-grid">
|
||
<div class="limit-col">
|
||
<div class="limit"><div class="n">01</div><div><h4>上下文有限</h4><p>输入窗口有限;资料过多会变慢、变贵、变乱。</p></div></div>
|
||
<div class="limit"><div class="n">02</div><div><h4>会有幻觉</h4><p>资料不足或指令不清时,会编出看似合理的内容。</p></div></div>
|
||
</div>
|
||
<div class="center-badge">不能<br>全量塞<br>资料</div>
|
||
<div class="limit-col">
|
||
<div class="limit"><div class="n">03</div><div><h4>专注度下降</h4><p>长资料和噪声会稀释重点,关键信息被忽略。</p></div></div>
|
||
<div class="limit"><div class="n">04</div><div><h4>顺序不稳定</h4><p>内容位置、相似片段、前后冲突都会影响答案。</p></div></div>
|
||
</div>
|
||
</div>
|
||
<div class="value-strip">
|
||
<div class="value"><div class="vicon">少</div><div><strong>少量</strong><span>只给必要资料</span></div></div>
|
||
<div class="value"><div class="vicon">准</div><div><strong>准确</strong><span>优先高相关来源</span></div></div>
|
||
<div class="value"><div class="vicon">新</div><div><strong>新鲜</strong><span>版本和时间可控</span></div></div>
|
||
<div class="value"><div class="vicon">规</div><div><strong>规则</strong><span>提示词约束回答边界</span></div></div>
|
||
</div>
|
||
</div>
|
||
<div class="footer"><span>Context · Hallucination · Attention · Order</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="page-corner"></div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="为什么需要 RAG">
|
||
<div class="slide-inner">
|
||
<div class="top"><div class="chapter">05</div><div class="head"><h2>从限制到方案</h2><p>RAG 的核心不是让模型记住全部知识,而是让模型按需查资料。</p></div><div class="brand"><div class="brand-mark">→</div><span>方案转化</span></div></div>
|
||
<div class="content">
|
||
<div class="pipeline">
|
||
<div class="pipe-card"><span class="tag red">错误做法</span><h3 style="margin-top:16px">全部塞给 LLM</h3><div class="bad-list"><span>长文档堆叠,重点被稀释</span><span>过期资料混入,结果不可信</span><span>无权限内容可能泄露</span><span>成本高,速度慢</span></div></div>
|
||
<div class="filter"><div class="funnel">检索<br>过滤<br>排序</div></div>
|
||
<div class="pipe-card"><span class="tag green">RAG 做法</span><h3 style="margin-top:16px">只给相关资料</h3><div class="bad-list"><span style="border-color:#8fe0cf;background:#f1fffb;color:#0b8066">按问题查资料</span><span style="border-color:#8fe0cf;background:#f1fffb;color:#0b8066">按相关性排序</span><span style="border-color:#8fe0cf;background:#f1fffb;color:#0b8066">拼成小上下文</span><span style="border-color:#8fe0cf;background:#f1fffb;color:#0b8066">让 LLM 基于依据回答</span></div></div>
|
||
</div>
|
||
</div>
|
||
<div class="footer"><span>RAG turns big documents into precise context</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="page-corner"></div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="后台建库">
|
||
<div class="slide-inner">
|
||
<div class="top"><div class="chapter">06</div><div class="head"><h2>后台建库:把资料整理成可检索系统</h2><p>RAG 不是只有一个问答框,前期知识库整理决定最终效果。</p></div><div class="brand"><div class="brand-mark">KB</div><span>离线流程</span></div></div>
|
||
<div class="content">
|
||
<div class="ribbon-row">
|
||
<div class="ribbon">资料层</div>
|
||
<div class="ribbon-line"><div class="icon">文</div><div class="dot-list"><span>产品手册、FAQ、制度、接口文档、案例、流程说明</span><span>确认来源、版本、时间、权限和适用范围</span></div></div>
|
||
</div>
|
||
<div class="ribbon-row">
|
||
<div class="ribbon green">处理层</div>
|
||
<div class="ribbon-line"><div class="icon">洗</div><div class="dot-list"><span>清洗重复、过期、广告、目录噪声和格式错误</span><span>长文档拆成能独立表达意思的小片段</span></div></div>
|
||
</div>
|
||
<div class="ribbon-row">
|
||
<div class="ribbon navy">索引层</div>
|
||
<div class="ribbon-line"><div class="icon">库</div><div class="dot-list"><span>每个切片转成语义向量,写入向量库</span><span>同时保留元数据,用于过滤、排序和引用来源</span></div></div>
|
||
</div>
|
||
<div class="value-strip">
|
||
<div class="value"><div class="vicon">质</div><div><strong>资料质量</strong><span>决定检索上限</span></div></div>
|
||
<div class="value"><div class="vicon">粒</div><div><strong>切片粒度</strong><span>决定召回精度</span></div></div>
|
||
<div class="value"><div class="vicon">源</div><div><strong>元数据</strong><span>决定过滤和引用</span></div></div>
|
||
<div class="value"><div class="vicon">库</div><div><strong>向量库</strong><span>支持语义检索</span></div></div>
|
||
</div>
|
||
</div>
|
||
<div class="footer"><span>Prepare · Clean · Chunk · Embed · Index</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="page-corner"></div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="切片和向量库">
|
||
<div class="slide-inner">
|
||
<div class="top"><div class="chapter">07</div><div class="head"><h2>切片 + 向量化</h2><p>把长文档拆成小卡片,再给每张卡片标上“语义坐标”。</p></div><div class="brand"><div class="brand-mark">V</div><span>语义检索</span></div></div>
|
||
<div class="content">
|
||
<div class="chunks">
|
||
<div class="doc">
|
||
<span class="tag">原始资料:退款政策</span>
|
||
<div class="slice"><h4>切片 A:退费条件</h4><p>购买后 7 天内,且未使用核心服务,可以申请全额退款。</p></div>
|
||
<div class="slice"><h4>切片 B:不可退场景</h4><p>已开具发票、已交付定制服务、超过合同期限,不支持自动退款。</p></div>
|
||
<div class="slice"><h4>切片 C:审批路径</h4><p>超过 5 万元的退款申请,需要客户成功经理和财务双审批。</p></div>
|
||
</div>
|
||
<div class="doc">
|
||
<span class="tag green">向量化结果</span>
|
||
<h3 style="margin-top:14px">语义相近,距离更近</h3>
|
||
<p style="font-size:13px;line-height:1.65;color:var(--muted);margin-top:10px">用户问“买了 3 天没用能退吗”,即使没有出现“退费条件”这几个字,也能找到切片 A。</p>
|
||
<div class="vector-bars"><i class="bar"></i><i class="bar"></i><i class="bar"></i><i class="bar"></i><i class="bar"></i><i class="bar"></i><i class="bar"></i><i class="bar"></i><i class="bar"></i><i class="bar"></i><i class="bar"></i><i class="bar"></i></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="footer"><span>Chunking + Embedding</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="page-corner"></div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="用户提问时怎么查">
|
||
<div class="slide-inner">
|
||
<div class="top"><div class="chapter">08</div><div class="head"><h2>用户提问时怎么查</h2><p>召回只是先捞候选,排序 / 重排决定哪些资料真正进入上下文。</p></div><div class="brand"><div class="brand-mark">S</div><span>在线检索</span></div></div>
|
||
<div class="content">
|
||
<div class="flow">
|
||
<div class="step"><div class="num">1</div><h3>问题改写</h3><p>把口语问题改成适合检索的查询。</p></div>
|
||
<div class="step"><div class="num">2</div><h3>问题向量化</h3><p>用户问题也转成语义向量。</p></div>
|
||
<div class="step"><div class="num">3</div><h3>召回候选</h3><p>从向量库找语义距离近的片段。</p></div>
|
||
<div class="step hot"><div class="num">4</div><h3>排序 / 重排</h3><p>按相关性、时效、权限、来源可信度重新排序。</p></div>
|
||
<div class="step"><div class="num">5</div><h3>拼上下文</h3><p>只把最有用的几段交给 LLM。</p></div>
|
||
</div>
|
||
<div class="grid2" style="margin-top:18px">
|
||
<div class="card"><h3>排序后的候选资料</h3><div class="rank-list" style="margin-top:12px"><div class="rank"><div class="rnum">1</div><div><h4>退款政策 v2026Q2</h4><p>最相关,版本最新</p></div><div class="score">96</div></div><div class="rank"><div class="rnum">2</div><div><h4>大客户审批流程</h4><p>金额超过 5 万时使用</p></div><div class="score">78</div></div></div></div>
|
||
<div class="card"><h3>排序看什么</h3><div class="dot-list" style="margin-top:12px"><span>相关性:是否真的回答这个问题</span><span>时效性:新版本优先,过期资料降权</span><span>权限:用户不能看的资料先过滤</span><span>可信度:制度、合同、权威来源优先</span></div></div>
|
||
</div>
|
||
</div>
|
||
<div class="footer"><span>Retrieve · Rerank · Context Assembly</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="page-corner"></div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="提示词工程">
|
||
<div class="slide-inner">
|
||
<div class="top"><div class="chapter">09</div><div class="head"><h2>提示词工程:规定资料怎么用</h2><p>RAG 找资料,系统提示词规定 LLM 的角色、边界、格式和兜底方式。</p></div><div class="brand"><div class="brand-mark">P</div><span>生成约束</span></div></div>
|
||
<div class="content">
|
||
<div class="grid2">
|
||
<div class="prompt-box">
|
||
<b>SYSTEM</b><br>
|
||
你是客服助手。只能基于 CONTEXT 回答;资料不足时说“不确定”,不要编造。<br><br>
|
||
<b>CONTEXT</b><br>
|
||
<mark>[退款政策 v2026Q2]</mark> 购买后 7 天内且未使用核心服务,可全额退款。<br><br>
|
||
<b>USER</b><br>
|
||
客户买了 3 天,还没使用,可以退吗?
|
||
</div>
|
||
<div class="stack">
|
||
<div class="stack-layer"><div class="diagram-title">提示词工程</div><div class="stack-items"><div class="mini"><strong>角色</strong><span>你是谁</span></div><div class="mini"><strong>边界</strong><span>只能基于资料</span></div><div class="mini"><strong>格式</strong><span>结论、理由、来源</span></div></div></div>
|
||
<div class="stack-layer"><div class="diagram-title" style="background:linear-gradient(135deg,#0aa58f,#14c8bf)">安全兜底</div><div class="stack-items"><div class="mini"><strong>不知道</strong><span>就说不确定</span></div><div class="mini"><strong>冲突</strong><span>说明版本差异</span></div><div class="mini"><strong>权限</strong><span>不泄露资料</span></div></div></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="footer"><span>System Prompt + Context + User Question</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="page-corner"></div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="Agent">
|
||
<div class="slide-inner">
|
||
<div class="top"><div class="chapter">10</div><div class="head"><h2>复杂任务需要 Agent</h2><p>当任务不只是“答一句话”,就需要规划、检索、执行、校验等分工。</p></div><div class="brand"><div class="brand-mark">A</div><span>任务编排</span></div></div>
|
||
<div class="content">
|
||
<div class="agent-map">
|
||
<div class="agent-card"><div class="icon">规</div><h3>规划者</h3><p>拆步骤,决定先查什么、再调用什么工具。</p></div>
|
||
<div class="arrow">→</div>
|
||
<div class="agent-card"><div class="icon">查</div><h3>检索者</h3><p>使用 RAG 找依据,必要时多轮检索。</p></div>
|
||
<div class="arrow">→</div>
|
||
<div class="agent-card"><div class="icon">执</div><h3>执行者</h3><p>查订单、建工单、读数据库、调用接口。</p></div>
|
||
</div>
|
||
<div class="value-strip">
|
||
<div class="value"><div class="vicon">R</div><div><strong>RAG</strong><span>提供知识入口</span></div></div>
|
||
<div class="value"><div class="vicon">P</div><div><strong>Prompt</strong><span>规定回答规则</span></div></div>
|
||
<div class="value"><div class="vicon">A</div><div><strong>Agent</strong><span>负责任务编排</span></div></div>
|
||
<div class="value"><div class="vicon">T</div><div><strong>Tools</strong><span>执行外部动作</span></div></div>
|
||
</div>
|
||
</div>
|
||
<div class="footer"><span>Agent = Plan + Retrieve + Act + Check</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="page-corner"></div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="MCP">
|
||
<div class="slide-inner">
|
||
<div class="top"><div class="chapter">11</div><div class="head"><h2>MCP:让 Agent 连接工具</h2><p>MCP 可以理解为模型/Agent 调用外部系统的一套统一连接方式。</p></div><div class="brand"><div class="brand-mark">M</div><span>工具连接</span></div></div>
|
||
<div class="content">
|
||
<div class="tool-bus">
|
||
<div class="card"><span class="tag">Agent</span><h3 style="margin-top:14px">会规划任务</h3><p style="margin-top:10px">但真正查数据、改状态、发通知,需要连接业务系统。</p></div>
|
||
<div class="bus">MCP<br><span style="font-size:14px;font-weight:700">统一工具接口 / 上下文供给 / 动作执行</span></div>
|
||
<div class="tools">
|
||
<div class="tool">CRM<span>客户资料</span></div>
|
||
<div class="tool">工单<span>创建 / 查询</span></div>
|
||
<div class="tool">数据库<span>读数据</span></div>
|
||
<div class="tool">文件<span>读文档</span></div>
|
||
<div class="tool">搜索<span>查外部信息</span></div>
|
||
<div class="tool">消息<span>发送通知</span></div>
|
||
</div>
|
||
</div>
|
||
<div class="value-strip">
|
||
<div class="value"><div class="vicon">知</div><div><strong>RAG</strong><span>查知识</span></div></div>
|
||
<div class="value"><div class="vicon">编</div><div><strong>Agent</strong><span>编排任务</span></div></div>
|
||
<div class="value"><div class="vicon">接</div><div><strong>MCP</strong><span>连接工具</span></div></div>
|
||
<div class="value"><div class="vicon">做</div><div><strong>业务系统</strong><span>完成动作</span></div></div>
|
||
</div>
|
||
</div>
|
||
<div class="footer"><span>Model Context Protocol</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="page-corner"></div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="总结">
|
||
<div class="slide-inner">
|
||
<div class="top"><div class="chapter">12</div><div class="head"><h2>入门之后,要抓住这条主线</h2><p>LLM 有限制,所以需要 RAG;RAG 把资料找准,再交给 LLM 生成。</p></div><div class="brand"><div class="brand-mark">✓</div><span>核心链路</span></div></div>
|
||
<div class="content">
|
||
<div class="flow">
|
||
<div class="step"><div class="num">1</div><h3>LLM</h3><p>负责理解和表达,但不是企业知识库。</p></div>
|
||
<div class="step"><div class="num">2</div><h3>限制</h3><p>上下文、幻觉、专注度、顺序带来风险。</p></div>
|
||
<div class="step"><div class="num">3</div><h3>RAG</h3><p>后台建库;前台检索;排序后拼上下文。</p></div>
|
||
<div class="step"><div class="num">4</div><h3>Prompt</h3><p>规定角色、边界、格式、兜底和安全。</p></div>
|
||
<div class="step"><div class="num">5</div><h3>Agent + MCP</h3><p>复杂任务用 Agent 编排,用 MCP 连接工具。</p></div>
|
||
</div>
|
||
<div class="stack-layer" style="margin-top:24px;text-align:center">
|
||
<div class="diagram-title">一句话总结</div>
|
||
<h3 style="font-size:30px;margin-top:18px;color:#061b4e">RAG 不是替代 LLM,而是给 LLM 配一套“会查资料的工作台”。</h3>
|
||
</div>
|
||
</div>
|
||
<div class="footer"><span>End</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="page-corner"></div>
|
||
</section>
|
||
|
||
</div>
|
||
<div class="progress"><span id="progress"></span></div>
|
||
<div class="nav-controls" aria-label="翻页导航">
|
||
<button class="nav-btn" id="prevBtn" type="button" aria-label="上一页">‹</button>
|
||
<span class="nav-index" id="navIndex">1 / 13</span>
|
||
<button class="nav-btn" id="nextBtn" type="button" aria-label="下一页">›</button>
|
||
</div>
|
||
<script>
|
||
(function(){
|
||
const slides = Array.from(document.querySelectorAll('.slide'));
|
||
const progress = document.getElementById('progress');
|
||
const prevBtn = document.getElementById('prevBtn');
|
||
const nextBtn = document.getElementById('nextBtn');
|
||
const navIndex = document.getElementById('navIndex');
|
||
let idx = 0;
|
||
function render(){
|
||
slides.forEach((s,i)=>s.classList.toggle('active',i===idx));
|
||
document.querySelectorAll('.page').forEach(el=>{el.textContent=(idx+1)+' / '+slides.length});
|
||
document.querySelectorAll('.page-corner').forEach(el=>{el.textContent=String(idx+1).padStart(2,'0')});
|
||
navIndex.textContent = (idx+1)+' / '+slides.length;
|
||
prevBtn.disabled = idx === 0;
|
||
nextBtn.disabled = idx === slides.length - 1;
|
||
progress.style.width = ((idx+1)/slides.length*100)+'%';
|
||
if(location.hash !== '#/'+(idx+1)) history.replaceState(null,'','#/'+(idx+1));
|
||
}
|
||
function go(n){idx=Math.max(0,Math.min(slides.length-1,n));render()}
|
||
function fromHash(){
|
||
const m = location.hash.match(/#\/(\d+)/);
|
||
if(m) idx = Math.max(0,Math.min(slides.length-1,Number(m[1])-1));
|
||
render();
|
||
}
|
||
window.addEventListener('hashchange',fromHash);
|
||
prevBtn.addEventListener('click',()=>go(idx-1));
|
||
nextBtn.addEventListener('click',()=>go(idx+1));
|
||
document.addEventListener('keydown',e=>{
|
||
if(['ArrowRight','PageDown',' '].includes(e.key)){e.preventDefault();go(idx+1)}
|
||
if(['ArrowLeft','PageUp'].includes(e.key)){e.preventDefault();go(idx-1)}
|
||
if(e.key==='Home'){e.preventDefault();go(0)}
|
||
if(e.key==='End'){e.preventDefault();go(slides.length-1)}
|
||
if(e.key==='f'||e.key==='F'){document.documentElement.requestFullscreen?.()}
|
||
});
|
||
fromHash();
|
||
})();
|
||
</script>
|
||
</body>
|
||
</html>
|