595 lines
47 KiB
HTML
595 lines
47 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 知识库问答入门:AI 产品经理面试版</title>
|
||
<style>
|
||
:root{
|
||
--bg:#eef4ff;
|
||
--paper:#ffffff;
|
||
--ink:#071b4a;
|
||
--text:#102754;
|
||
--muted:#516381;
|
||
--blue:#1769ff;
|
||
--blue2:#0a4bd8;
|
||
--cyan:#12b9c9;
|
||
--green:#0f9f7a;
|
||
--orange:#f59e0b;
|
||
--red:#e54865;
|
||
--line:#c8dafe;
|
||
--soft:#f3f8ff;
|
||
--shadow:0 18px 44px rgba(17,55,122,.16),0 2px 10px rgba(17,55,122,.06);
|
||
}
|
||
*{box-sizing:border-box}
|
||
html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--bg);color:var(--text);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% 10%,rgba(23,105,255,.14),transparent 26%),radial-gradient(circle at 92% 86%,rgba(18,185,201,.14),transparent 26%),#eef4ff}
|
||
.slide{position:relative;display:none;width:min(100vw,calc(100vh * 16 / 9));height:min(100vh,calc(100vw * 9 / 16));background:var(--paper);box-shadow:var(--shadow);overflow:hidden}
|
||
.slide.active{display:block}
|
||
.slide::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(23,105,255,.045) 1px,transparent 1px),linear-gradient(rgba(23,105,255,.045) 1px,transparent 1px);background-size:34px 34px;mask-image:radial-gradient(ellipse at 44% 42%,black 10%,transparent 78%);pointer-events:none}
|
||
.slide::after{content:"";position:absolute;left:-90px;bottom:-70px;width:500px;height:150px;background:repeating-linear-gradient(155deg,rgba(23,105,255,.12) 0 2px,transparent 2px 11px);transform:skewX(-18deg);opacity:.45;pointer-events:none}
|
||
.canvas{position:relative;z-index:1;height:100%;padding:34px 48px 30px;display:flex;flex-direction:column;gap:16px}
|
||
.topbar{height:68px;display:grid;grid-template-columns:auto 1fr auto;gap:20px;align-items:center;border-bottom:2px solid #dbe8ff;padding-bottom:12px}
|
||
.sec{width:116px;height:54px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:29px;font-weight:950;background:linear-gradient(135deg,#0457e8,#178cff);clip-path:polygon(0 0,84% 0,100% 50%,84% 100%,0 100%);letter-spacing:.02em}
|
||
.title h2{font-size:29px;line-height:1.08;color:var(--ink);font-weight:950;letter-spacing:0}
|
||
.title p{margin-top:6px;color:var(--muted);font-size:14px;line-height:1.35}
|
||
.mark{display:flex;align-items:center;gap:9px;color:var(--blue);font-weight:950;font-size:13px}
|
||
.mark i,.mark .lucide-icon{width:38px;height:38px;border:2px solid var(--blue);border-radius:12px;display:grid;place-items:center;font-style:normal;background:#fff;padding:8px;color:var(--blue)}
|
||
.body{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center}
|
||
.foot{height:34px;border-top:1px solid #dbe8ff;padding-top:10px;display:flex;justify-content:space-between;align-items:flex-start;color:#7d90b4;font-size:10px;letter-spacing:.13em;text-transform:uppercase}
|
||
.corner{position:absolute;right:0;bottom:0;width:82px;height:50px;background:linear-gradient(135deg,var(--blue),var(--blue2));clip-path:polygon(38% 0,100% 0,100% 100%,0 100%);color:#fff;font-weight:950;font-size:17px;display:flex;align-items:flex-end;justify-content:flex-end;padding:0 16px 11px;z-index:2}
|
||
.kicker{color:var(--blue);font-size:13px;font-weight:950;letter-spacing:.18em;text-transform:uppercase;margin-bottom:10px}
|
||
.hero{display:grid;grid-template-columns:1.08fr .92fr;gap:28px;align-items:center}
|
||
.hero h1{font-size:50px;line-height:1.1;color:var(--ink);font-weight:950;letter-spacing:0}
|
||
.hero .lead{margin-top:18px;font-size:20px;line-height:1.55;color:var(--muted);max-width:760px}
|
||
.accent{background:linear-gradient(135deg,var(--blue),var(--cyan));-webkit-background-clip:text;background-clip:text;color:transparent}
|
||
.panel{border:1.5px solid var(--line);border-radius:18px;background:rgba(255,255,255,.86);box-shadow:0 12px 30px rgba(20,84,170,.10);padding:18px}
|
||
.panel.blue{background:linear-gradient(135deg,#eef6ff,#ffffff);border-color:#9dc2ff}
|
||
.panel.dark{background:#061c49;color:#eaf2ff;border-color:#061c49}
|
||
.panel.dark p,.panel.dark li{color:#c9dbff}
|
||
.panel h3{font-size:19px;color:var(--ink);font-weight:950;margin-bottom:8px}
|
||
.panel.dark h3{color:#fff}
|
||
.panel p,.panel li{font-size:14px;line-height:1.58;color:var(--muted)}
|
||
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
|
||
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
|
||
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
|
||
.tag{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:26px;padding:0 11px;border-radius:999px;background:#eaf3ff;color:var(--blue);font-size:12px;font-weight:950;margin-bottom:10px}
|
||
.tag .lucide-icon{width:14px;height:14px;stroke-width:2.4}
|
||
.tag.green{background:#e8fbf4;color:var(--green)}
|
||
.tag.orange{background:#fff4df;color:#bd6b00}
|
||
.tag.red{background:#fff0f4;color:var(--red)}
|
||
.tag.cyan{background:#e7fbff;color:#098fa0}
|
||
.mini-list{display:grid;gap:7px}
|
||
.mini-list span{position:relative;padding-left:15px;color:var(--text);font-size:14px;line-height:1.45}
|
||
.mini-list span::before{content:"";position:absolute;left:0;top:.62em;width:6px;height:6px;border-radius:50%;background:var(--blue)}
|
||
.flow{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;align-items:stretch}
|
||
.step{position:relative;border:1.5px solid #bdd6ff;border-radius:14px;background:#fff;padding:14px;min-height:132px;box-shadow:0 10px 22px rgba(23,105,255,.08)}
|
||
.step::after{content:"";position:absolute;right:-11px;top:50%;width:10px;height:2px;background:#83b2ff}
|
||
.step:last-child::after{display:none}
|
||
.num{width:32px;height:32px;border-radius:9px;background:linear-gradient(135deg,var(--blue),var(--cyan));color:#fff;display:grid;place-items:center;font-size:14px;font-weight:950;margin-bottom:9px}
|
||
.num .lucide-icon{width:17px;height:17px}
|
||
.step h3{font-size:16px;color:var(--ink);font-weight:950}
|
||
.step p{margin-top:6px;font-size:12.5px;line-height:1.45;color:var(--muted)}
|
||
.wide-flow{display:grid;grid-template-columns:1fr 58px 1fr 58px 1fr;gap:12px;align-items:center}
|
||
.arrow{height:48px;border-radius:999px;background:#eaf3ff;color:var(--blue);display:grid;place-items:center;font-size:26px;font-weight:950}
|
||
.compare{display:grid;grid-template-columns:1fr 82px 1fr;gap:16px;align-items:center}
|
||
.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 14px 28px rgba(23,105,255,.22)}
|
||
.problem-map{display:grid;grid-template-columns:1fr 170px 1fr;gap:16px;align-items:center}
|
||
.limit-stack{display:grid;gap:12px}
|
||
.limit{display:grid;grid-template-columns:46px 1fr;gap:12px;align-items:center;border:1.5px solid #cfe0ff;border-radius:14px;background:#fff;padding:13px}
|
||
.limit b{font-size:15px;color:var(--ink)}
|
||
.limit p{font-size:12.5px;line-height:1.42;color:var(--muted);margin-top:3px}
|
||
.badge-center{width:155px;height:155px;border-radius:34px;background:linear-gradient(135deg,var(--blue),var(--cyan));color:#fff;display:grid;place-items:center;text-align:center;font-size:24px;line-height:1.25;font-weight:950;box-shadow:0 18px 34px rgba(23,105,255,.25)}
|
||
.ribbon-row{display:grid;grid-template-columns:160px 1fr;gap:16px;align-items:center;margin:11px 0}
|
||
.ribbon{height:70px;border-radius:12px 0 0 12px;clip-path:polygon(0 0,88% 0,100% 50%,88% 100%,0 100%);display:flex;align-items:center;padding-left:20px;color:#fff;background:linear-gradient(135deg,var(--blue),#0051d9);font-size:20px;font-weight:950}
|
||
.ribbon.green{background:linear-gradient(135deg,#089d86,#12b9c9)}
|
||
.ribbon.orange{background:linear-gradient(135deg,#f59e0b,#ef7d00)}
|
||
.ribbon-box{min-height:70px;border:1.5px solid var(--line);border-radius:13px;background:#fff;display:grid;grid-template-columns:70px 1fr;align-items:center;gap:16px;padding:13px 18px}
|
||
.round-icon{width:54px;height:54px;border-radius:50%;background:#eef6ff;border:1.5px solid #bdd6ff;display:grid;place-items:center;color:var(--blue);font-weight:950;font-size:20px}
|
||
.round-icon .lucide-icon{width:25px;height:25px;stroke-width:2.2}
|
||
.matrix{display:grid;grid-template-columns:1.05fr .95fr;gap:16px;align-items:center}
|
||
.chunk{border-left:5px solid var(--blue);background:#f6faff;border-radius:10px;padding:11px 12px;margin-top:9px}
|
||
.chunk h4{font-size:14px;color:var(--ink);margin-bottom:4px}
|
||
.chunk p{font-size:12.3px;line-height:1.42;color:var(--muted)}
|
||
.vector{display:grid;grid-template-columns:repeat(12,1fr);gap:6px;margin-top:12px}
|
||
.bar{height:48px;border-radius:7px;background:var(--blue);opacity:.24}
|
||
.bar:nth-child(2n){opacity:.48}.bar:nth-child(3n){opacity:.76}.bar:nth-child(5n){opacity:.92}
|
||
.rank-list{display:grid;gap:9px}
|
||
.rank{display:grid;grid-template-columns:38px 1fr 52px;gap:10px;align-items:center;border:1.5px solid #cfe0ff;border-radius:12px;background:#fff;padding:10px}
|
||
.rank .r{width:34px;height:34px;border-radius:9px;background:#eaf3ff;color:var(--blue);display:grid;place-items:center;font-weight:950}
|
||
.rank strong{font-size:14px;color:var(--ink)}
|
||
.rank span{font-size:12px;color:var(--muted)}
|
||
.score{font-size:18px;font-weight:950;color:var(--green);text-align:right}
|
||
.prompt{background:#061c49;color:#e9f2ff;border-radius:16px;padding:16px 18px;font-family:"SFMono-Regular",Consolas,"Liberation Mono",monospace;font-size:12.5px;line-height:1.62;box-shadow:0 16px 30px rgba(6,28,73,.22)}
|
||
.prompt b{color:#7dd3fc}.prompt mark{background:rgba(250,204,21,.16);color:#fde68a;border-radius:4px;padding:1px 4px}
|
||
.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
|
||
.metric{border:1.5px solid #cfe0ff;border-radius:14px;background:#fff;padding:14px;min-height:142px}
|
||
.metric .big{font-size:28px;line-height:1;color:var(--blue);font-weight:950;margin-bottom:8px;display:flex;align-items:center;gap:8px}
|
||
.metric .big .lucide-icon{width:26px;height:26px;stroke-width:2.2}
|
||
.metric h3{font-size:16px;color:var(--ink);font-weight:950;margin-bottom:6px}
|
||
.metric p{font-size:12.5px;line-height:1.45;color:var(--muted)}
|
||
.agent-grid{display:grid;grid-template-columns:1fr 62px 1fr 62px 1fr;gap:10px;align-items:center}
|
||
.agent{min-height:176px;border:1.5px solid #cfe0ff;border-radius:16px;background:#fff;text-align:center;padding:16px}
|
||
.agent .round-icon{margin:0 auto 11px}
|
||
.agent h3{font-size:17px;color:var(--ink);font-weight:950}
|
||
.agent p{font-size:12.5px;line-height:1.45;color:var(--muted);margin-top:6px}
|
||
.bus-layout{display:grid;grid-template-columns:.95fr 1.2fr 1fr;gap:16px;align-items:center}
|
||
.bus{height:110px;border-radius:24px;background:linear-gradient(135deg,var(--blue),var(--cyan));color:#fff;display:grid;place-items:center;text-align:center;font-size:25px;font-weight:950;box-shadow:0 16px 30px rgba(23,105,255,.24)}
|
||
.bus span{font-size:13px;font-weight:700;margin-top:5px;opacity:.92}
|
||
.tool-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
|
||
.tool{border:1.5px solid #cfe0ff;border-radius:13px;background:#fff;padding:12px;text-align:center;color:var(--ink);font-weight:950}
|
||
.tool .lucide-icon{width:22px;height:22px;color:var(--blue);display:block;margin:0 auto 6px;stroke-width:2.2}
|
||
.tool span{display:block;font-size:11.5px;color:var(--muted);font-weight:500;margin-top:4px}
|
||
.answer-template{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
|
||
.answer-card{border:1.5px solid #bdd6ff;border-radius:15px;background:#fff;padding:13px;min-height:134px;box-shadow:0 10px 22px rgba(23,105,255,.08)}
|
||
.answer-card h3{font-size:16px;color:var(--ink);font-weight:950;margin-bottom:7px}
|
||
.answer-card p{font-size:12px;line-height:1.42;color:var(--muted)}
|
||
.takeaway{margin-top:16px;border:1.5px solid #9dc2ff;border-radius:18px;background:linear-gradient(135deg,#eef6ff,#fff);padding:18px;text-align:center}
|
||
.takeaway h3{font-size:27px;color:var(--ink);font-weight:950}
|
||
.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,.78);box-shadow:0 8px 24px rgba(16,32,71,.12);backdrop-filter:blur(10px);opacity:.76;transition:opacity .18s ease,background .18s ease}
|
||
.nav-controls:hover,.nav-controls:focus-within{opacity:1;background:rgba(255,255,255,.96)}
|
||
.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:60px;text-align:center;font-size:13px;font-weight:950;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 (min-width:901px) and (max-width:1100px){
|
||
.canvas{padding:24px 34px 22px;gap:10px}
|
||
.hero h1{font-size:38px;line-height:1.08}
|
||
.hero .lead{font-size:16px;line-height:1.42;margin-top:10px}
|
||
.panel{padding:12px}
|
||
.panel h3{font-size:16px;margin-bottom:5px}
|
||
.panel p,.panel li{font-size:12px;line-height:1.42}
|
||
.grid3{gap:8px}
|
||
.tag{min-height:22px;font-size:11px;margin-bottom:6px}
|
||
.foot{height:28px;padding-top:8px}
|
||
.corner{width:72px;height:42px;font-size:15px;padding:0 14px 9px}
|
||
}
|
||
@media (max-width:900px){
|
||
html,body{height:auto;min-height:100%;overflow:auto}
|
||
body{display:block;background:#fff}
|
||
.deck{display:block;height:auto;min-height:100vh;background:#fff}
|
||
.slide{width:100%;height:auto;min-height:100vh;box-shadow:none}
|
||
.canvas{padding:26px 20px 34px}
|
||
.topbar{height:auto;grid-template-columns:1fr;gap:10px}
|
||
.sec{width:110px}
|
||
.mark{display:none}
|
||
.body{justify-content:flex-start;padding-top:20px}
|
||
.hero,.grid2,.grid3,.grid4,.matrix,.problem-map,.bus-layout,.agent-grid,.wide-flow,.compare{grid-template-columns:1fr}
|
||
.flow,.metric-grid,.answer-template{grid-template-columns:1fr}
|
||
.step::after,.arrow,.mid{display:none}
|
||
.ribbon-row{grid-template-columns:1fr}
|
||
.ribbon{clip-path:none;border-radius:12px}
|
||
.ribbon-box{grid-template-columns:1fr}
|
||
.corner{display:none}
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="deck" id="deck">
|
||
|
||
<section class="slide active" data-title="封面">
|
||
<div class="canvas">
|
||
<div class="hero" style="flex:1;min-height:0">
|
||
<div>
|
||
<div class="kicker">AI 产品经理面试入门</div>
|
||
<h1>RAG 知识库问答:从 <span class="accent">LLM 缺陷</span> 到 Agent / MCP</h1>
|
||
<p class="lead">学完这份 PPT,面试里至少能答清四件事:为什么需要 RAG、RAG 如何工作、怎么评估效果、Agent / MCP 分别解决什么问题。</p>
|
||
<div class="grid3" style="margin-top:24px">
|
||
<div class="panel"><span class="tag"><i data-lucide="brain"></i>Why</span><h3>LLM 为什么不够用</h3><p>上下文、幻觉、私有知识、长上下文注意力。</p></div>
|
||
<div class="panel"><span class="tag green"><i data-lucide="search"></i>How</span><h3>RAG 怎么落地</h3><p>离线建库、在线检索、排序、提示词生成。</p></div>
|
||
<div class="panel"><span class="tag cyan"><i data-lucide="git-branch"></i>Extend</span><h3>复杂任务怎么扩展</h3><p>Agent 负责流程,MCP 负责连接工具。</p></div>
|
||
</div>
|
||
</div>
|
||
<div class="panel blue">
|
||
<div class="wide-flow" style="grid-template-columns:1fr;gap:12px">
|
||
<div class="panel"><span class="tag red"><i data-lucide="alert-triangle"></i>问题</span><h3>LLM 会说,但不知道你公司的最新事实</h3><p>在企业知识问答里,答案必须有依据、能追溯、能控权限。</p></div>
|
||
<div class="arrow">↓</div>
|
||
<div class="panel"><span class="tag green"><i data-lucide="file-search"></i>方案</span><h3>RAG 先找证据,再回答</h3><p>把知识库变成可检索、可引用、可更新的外部记忆。</p></div>
|
||
<div class="arrow">↓</div>
|
||
<div class="panel"><span class="tag cyan"><i data-lucide="plug"></i>扩展</span><h3>跨系统办事,再上 Workflow / Agent</h3><p>MCP 负责把外部工具和数据规范地接进来。</p></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="foot"><span>RAG Knowledge Base QA</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="corner"></div>
|
||
<div class="notes">开场直接说明:这份 PPT 是为了面试入门。主线不是技术炫技,而是产品经理需要讲得清的系统逻辑。</div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="学习路线">
|
||
<div class="canvas">
|
||
<div class="topbar"><div class="sec">01</div><div class="title"><h2>学习路线:从“模型会说话”到“系统能办事”</h2><p>每一段都对应面试里常见的追问。</p></div><div class="mark"><i data-lucide="route"></i>Interview Map</div></div>
|
||
<div class="body">
|
||
<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>LLM 的缺陷</h3><p>上下文有限、幻觉、私有知识缺失、注意力漂移。</p></div>
|
||
<div class="step"><div class="num">3</div><h3>RAG 的方案</h3><p>先检索知识库,再把资料交给 LLM 生成。</p></div>
|
||
<div class="step"><div class="num">4</div><h3>知识库流程</h3><p>资料准备、切片、向量化、检索、排序、引用。</p></div>
|
||
<div class="step"><div class="num">5</div><h3>Agent / MCP</h3><p>复杂任务要规划和工具连接,不只是问答。</p></div>
|
||
</div>
|
||
<div class="takeaway"><h3>面试答题顺序:先讲业务问题,再讲系统链路,最后讲指标和风险。</h3></div>
|
||
</div>
|
||
<div class="foot"><span>Learning Path</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="corner"></div>
|
||
<div class="notes">这页不要展开细节,只把学习路径建立起来。后面每页都服务这条路线。</div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="LLM 是什么">
|
||
<div class="canvas">
|
||
<div class="topbar"><div class="sec">02</div><div class="title"><h2>LLM 是语言引擎,不是企业事实库</h2><p>面试里先把边界说清,后面引出 RAG 才自然。</p></div><div class="mark"><i data-lucide="brain"></i>Language Model</div></div>
|
||
<div class="body">
|
||
<div class="compare">
|
||
<div class="panel"><span class="tag">它擅长</span><h3>理解语义,组织表达</h3><div class="mini-list"><span>把用户问题转成可处理的意图</span><span>总结、改写、解释、翻译、生成结构化答案</span><span>根据给定上下文做推理和表达</span></div></div>
|
||
<div class="mid">≠</div>
|
||
<div class="panel"><span class="tag red">它不是</span><h3>可靠的事实来源</h3><div class="mini-list"><span>不知道你的内部文档和实时制度</span><span>不能天然保证每句话有出处</span><span>拿不到资料时仍可能生成看似合理的答案</span></div></div>
|
||
</div>
|
||
<div class="takeaway"><h3>产品理解:LLM 负责“读懂和表达”,事实依据必须由外部知识或工具提供。</h3></div>
|
||
</div>
|
||
<div class="foot"><span>LLM Boundary</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="corner"></div>
|
||
<div class="notes">这一页是基础定义。讲成“语言引擎”比讲大量算法细节更适合面试入门。</div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="LLM 缺陷">
|
||
<div class="canvas">
|
||
<div class="topbar"><div class="sec">03</div><div class="title"><h2>为什么 LLM 不适合直接回答复杂企业知识问题</h2><p>在企业知识问答场景里,裸用模型通常不利于新鲜度、权限、成本和可追溯。</p></div><div class="mark"><i data-lucide="alert-triangle"></i>Limitations</div></div>
|
||
<div class="body">
|
||
<div class="problem-map">
|
||
<div class="limit-stack">
|
||
<div class="limit"><div class="num">1</div><div><b>上下文窗口有限</b><p>输入再长也有上限;越长越贵、越慢、越容易混乱。</p></div></div>
|
||
<div class="limit"><div class="num">2</div><div><b>事实会过期或缺失</b><p>内部知识、最新政策、业务数据通常不在模型参数里。</p></div></div>
|
||
</div>
|
||
<div class="badge-center">裸用<br>通常<br>不稳</div>
|
||
<div class="limit-stack">
|
||
<div class="limit"><div class="num">3</div><div><b>幻觉风险</b><p>资料不足、冲突或提示不清时,可能编造细节。</p></div></div>
|
||
<div class="limit"><div class="num">4</div><div><b>长上下文利用不均</b><p>重点可能被噪声稀释,中间信息尤其容易被忽略。</p></div></div>
|
||
</div>
|
||
</div>
|
||
<div class="takeaway"><h3>结论:企业问答要先筛出“小而准”的上下文,再交给 LLM。</h3></div>
|
||
</div>
|
||
<div class="foot"><span>Context · Hallucination · Freshness · Attention</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="corner"></div>
|
||
<div class="notes">这一页是引出 RAG 的关键。不能只说“LLM 有幻觉”,要把上下文、私有知识、注意力顺序一起讲出来。</div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="为什么不能全量塞资料">
|
||
<div class="canvas">
|
||
<div class="topbar"><div class="sec">04</div><div class="title"><h2>为什么不把所有知识一次性给 LLM</h2><p>RAG 不是任何场景都必须上;文档多、更新快、要权限和引用时才更有价值。</p></div><div class="mark"><i data-lucide="search"></i>Need Retrieval</div></div>
|
||
<div class="body">
|
||
<div class="grid4">
|
||
<div class="metric"><div class="big"><i data-lucide="clock"></i>慢</div><h3>响应变慢</h3><p>长上下文会拉高推理时间,用户体验变差。</p></div>
|
||
<div class="metric"><div class="big"><i data-lucide="dollar-sign"></i>贵</div><h3>成本变高</h3><p>每次都读大量文档,token 成本不可控。</p></div>
|
||
<div class="metric"><div class="big"><i data-lucide="shuffle"></i>乱</div><h3>答案变乱</h3><p>无关资料越多,模型越难抓住真正依据。</p></div>
|
||
<div class="metric"><div class="big"><i data-lucide="shield"></i>险</div><h3>权限风险</h3><p>不该给用户看的资料可能进入上下文。</p></div>
|
||
</div>
|
||
<div class="wide-flow" style="margin-top:20px">
|
||
<div class="panel"><span class="tag red">不适合的做法</span><h3>全量塞文档</h3><p>资料多、权限复杂时,把知识管理问题转移给模型,效果不可控。</p></div>
|
||
<div class="arrow">→</div>
|
||
<div class="panel blue"><span class="tag green">RAG 思路</span><h3>先筛资料</h3><p>先用检索和排序选出少量相关资料。</p></div>
|
||
<div class="arrow">→</div>
|
||
<div class="panel"><span class="tag cyan">生成答案</span><h3>基于证据回答</h3><p>让 LLM 在受控上下文里生成。</p></div>
|
||
</div>
|
||
<div class="takeaway"><h3>长上下文适合“资料少、位置已知、可以整包读完”;RAG 适合“资料多、常更新、答案位置不确定、要权限和引用”。两者经常组合:先检索,再把少量证据放进上下文。</h3></div>
|
||
</div>
|
||
<div class="foot"><span>Why Retrieval Before Generation</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="corner"></div>
|
||
<div class="notes">这一页回答面试常见追问:既然大模型能读长文本,为什么还要 RAG。</div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="知识库问答是什么">
|
||
<div class="canvas">
|
||
<div class="topbar"><div class="sec">05</div><div class="title"><h2>知识库问答产品,本质是“带证据的回答系统”</h2><p>RAG 不是一个模型功能,而是一条产品链路。</p></div><div class="mark"><i data-lucide="file-check"></i>Product View</div></div>
|
||
<div class="body">
|
||
<div class="wide-flow">
|
||
<div class="panel"><span class="tag">用户问题</span><h3>“这个退款能不能批?”</h3><p>用户通常用口语表达,不会精确匹配文档标题。</p></div>
|
||
<div class="arrow">→</div>
|
||
<div class="panel blue"><span class="tag green">知识库证据</span><h3>政策、流程、版本、权限</h3><p>系统先找到可用资料,并保留来源。</p></div>
|
||
<div class="arrow">→</div>
|
||
<div class="panel"><span class="tag cyan">LLM 答案</span><h3>结论 + 理由 + 来源</h3><p>回答不只是顺口,还要能追溯和复核。</p></div>
|
||
</div>
|
||
<div class="grid4" style="margin-top:18px">
|
||
<div class="metric"><div class="big"><i data-lucide="target"></i>准</div><h3>准确</h3><p>答案来自可信资料。</p></div>
|
||
<div class="metric"><div class="big"><i data-lucide="refresh-cw"></i>新</div><h3>及时</h3><p>多数知识更新可先更新知识库,不必依赖重训模型。</p></div>
|
||
<div class="metric"><div class="big"><i data-lucide="link"></i>源</div><h3>可追溯</h3><p>能展示引用来源。</p></div>
|
||
<div class="metric"><div class="big"><i data-lucide="lock"></i>权</div><h3>可控权限</h3><p>检索前先过滤用户权限。</p></div>
|
||
</div>
|
||
</div>
|
||
<div class="foot"><span>Knowledge Base QA</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="corner"></div>
|
||
<div class="notes">这一页把 RAG 落到产品形态。面试时要强调“带证据”,不是“聊天更聪明”。</div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="RAG 总架构">
|
||
<div class="canvas">
|
||
<div class="topbar"><div class="sec">06</div><div class="title"><h2>RAG = 离线建索引 + 在线检索生成</h2><p>把这句话讲清楚,基本就进入 RAG 的门了。</p></div><div class="mark"><i data-lucide="git-branch"></i>Architecture</div></div>
|
||
<div class="body">
|
||
<div class="grid2">
|
||
<div class="panel blue">
|
||
<span class="tag">离线:让资料可被找到</span>
|
||
<div class="flow" style="grid-template-columns:repeat(3,1fr);margin-top:8px">
|
||
<div class="step"><div class="num"><i data-lucide="filter"></i></div><h3>清洗</h3><p>去重、去噪、统一格式。</p></div>
|
||
<div class="step"><div class="num"><i data-lucide="scissors"></i></div><h3>切片</h3><p>长文档拆成小知识块。</p></div>
|
||
<div class="step"><div class="num"><i data-lucide="database"></i></div><h3>建索引</h3><p>建立向量、关键词或混合索引,并保存元数据。</p></div>
|
||
</div>
|
||
</div>
|
||
<div class="panel">
|
||
<span class="tag green">在线:让回答有依据</span>
|
||
<div class="flow" style="grid-template-columns:repeat(3,1fr);margin-top:8px">
|
||
<div class="step"><div class="num"><i data-lucide="search"></i></div><h3>检索</h3><p>按问题找候选片段。</p></div>
|
||
<div class="step"><div class="num"><i data-lucide="sliders"></i></div><h3>排序</h3><p>筛出最相关、最可信资料。</p></div>
|
||
<div class="step"><div class="num"><i data-lucide="message-square"></i></div><h3>生成</h3><p>LLM 基于上下文回答。</p></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="takeaway"><h3>RAG 的关键不是“有没有向量库”,而是资料能否被正确检索、正确排序、正确使用。</h3></div>
|
||
</div>
|
||
<div class="foot"><span>Offline Indexing + Online Retrieval</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="corner"></div>
|
||
<div class="notes">这一页建立总架构。面试时可以先用离线和在线两段讲,再展开细节。</div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="离线建库流程">
|
||
<div class="canvas">
|
||
<div class="topbar"><div class="sec">07</div><div class="title"><h2>离线建库:资料准备比模型选择更先决定上限</h2><p>这部分是 AI 产品经理最容易忽略,但最该会讲的。</p></div><div class="mark"><i data-lucide="database"></i>Indexing</div></div>
|
||
<div class="body">
|
||
<div class="ribbon-row"><div class="ribbon">资料盘点</div><div class="ribbon-box"><div class="round-icon"><i data-lucide="file-text"></i></div><div class="mini-list"><span>确定业务范围:客服 FAQ、产品手册、制度、合同、接口文档</span><span>标清来源、负责人、更新时间、适用对象</span></div></div></div>
|
||
<div class="ribbon-row"><div class="ribbon green">清洗治理</div><div class="ribbon-box"><div class="round-icon"><i data-lucide="filter"></i></div><div class="mini-list"><span>删除重复、过期、目录噪声、网页导航、无效表格</span><span>统一标题、层级、术语,避免同义词混乱</span></div></div></div>
|
||
<div class="ribbon-row"><div class="ribbon orange">索引入库</div><div class="ribbon-box"><div class="round-icon"><i data-lucide="database"></i></div><div class="mini-list"><span>切片、向量化、保存元数据,写入向量库或混合检索索引</span><span>准备评测问题集,后续用来验证召回和答案质量</span></div></div></div>
|
||
</div>
|
||
<div class="foot"><span>Source Governance · Chunking · Embedding</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="corner"></div>
|
||
<div class="notes">这一页讲产品工作:资料范围、治理、版本、权限、评测集。不要只讲技术名词。</div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="切片与元数据">
|
||
<div class="canvas">
|
||
<div class="topbar"><div class="sec">08</div><div class="title"><h2>切片不是随便截断,而是让知识块能独立回答问题</h2><p>切片粒度、重叠、元数据,会直接影响召回质量。</p></div><div class="mark"><i data-lucide="scissors"></i>Data Design</div></div>
|
||
<div class="body">
|
||
<div class="matrix">
|
||
<div class="panel">
|
||
<span class="tag">示例:退款政策文档</span>
|
||
<div class="chunk"><h4>切片 A:退款条件</h4><p>购买后 7 天内,且未使用核心服务,可以申请全额退款。</p></div>
|
||
<div class="chunk"><h4>切片 B:不可退场景</h4><p>已开票、已交付定制服务、超过合同期限,不支持自动退款。</p></div>
|
||
<div class="chunk"><h4>切片 C:审批路径</h4><p>超过 5 万元的退款,需要客户成功经理和财务双审批。</p></div>
|
||
</div>
|
||
<div class="panel blue">
|
||
<span class="tag green">产品要关注</span>
|
||
<div class="mini-list"><span>太大:噪声多,模型抓不住重点</span><span>太小:语义断裂,缺少必要上下文</span><span>需要重叠:避免关键信息跨片丢失</span><span>元数据:来源、版本、时间、权限、业务线</span></div>
|
||
<div class="vector"><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="foot"><span>Chunk Size · Overlap · Metadata</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="corner"></div>
|
||
<div class="notes">讲切片时一定用例子。听众能理解“为什么切片决定检索效果”。</div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="在线检索流程">
|
||
<div class="canvas">
|
||
<div class="topbar"><div class="sec">09</div><div class="title"><h2>在线检索:先召回候选,再排序决定给 LLM 什么</h2><p>召回解决“找得到”,排序解决“排得对”。</p></div><div class="mark"><i data-lucide="search"></i>Retrieval</div></div>
|
||
<div class="body">
|
||
<div class="flow">
|
||
<div class="step"><div class="num"><i data-lucide="user"></i></div><h3>理解问题</h3><p>识别意图,必要时改写查询。</p></div>
|
||
<div class="step"><div class="num"><i data-lucide="search"></i></div><h3>召回候选</h3><p>向量检索、关键词检索或混合检索。</p></div>
|
||
<div class="step"><div class="num"><i data-lucide="shield"></i></div><h3>过滤</h3><p>按权限、业务线、版本、时间过滤;强权限可在索引或检索阶段提前做。</p></div>
|
||
<div class="step"><div class="num"><i data-lucide="sliders"></i></div><h3>重排</h3><p>把最相关、最新、可信的片段排前面。</p></div>
|
||
<div class="step"><div class="num"><i data-lucide="package"></i></div><h3>拼上下文</h3><p>控制长度,去重,保留来源。</p></div>
|
||
</div>
|
||
<div class="grid2" style="margin-top:16px">
|
||
<div class="panel"><h3>候选排序示例</h3><div class="rank-list"><div class="rank"><div class="r">1</div><div><strong>退款政策 v2026Q2</strong><br><span>直接回答,版本最新</span></div><div class="score">96</div></div><div class="rank"><div class="r">2</div><div><strong>大客户审批流程</strong><br><span>金额超过 5 万时补充</span></div><div class="score">82</div></div><div class="rank"><div class="r">3</div><div><strong>历史退款 FAQ</strong><br><span>相关但版本较旧</span></div><div class="score">41</div></div></div></div>
|
||
<div class="panel blue"><h3>面试里要讲出的点</h3><div class="mini-list"><span>向量检索适合语义相近,但不一定精确</span><span>关键词适合编号、术语、代码、合同条款</span><span>搜索负责找资料,RAG 负责“找资料 + 选证据 + 组织回答”</span><span>权限过滤最好发生在进入上下文之前</span></div></div>
|
||
</div>
|
||
</div>
|
||
<div class="foot"><span>Query Rewrite · Hybrid Search · Rerank · Top-K</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="corner"></div>
|
||
<div class="notes">这一页把“排序”讲清楚。很多人只知道向量库,但不知道召回和重排的区别。</div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="生成与提示词">
|
||
<div class="canvas">
|
||
<div class="topbar"><div class="sec">10</div><div class="title"><h2>生成阶段:Prompt 规定 LLM 如何使用资料</h2><p>检索负责找证据,提示词负责使用规则。</p></div><div class="mark"><i data-lucide="terminal"></i>Prompt</div></div>
|
||
<div class="body">
|
||
<div class="grid2">
|
||
<div class="prompt">
|
||
<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="panel blue">
|
||
<span class="tag green">系统提示词要约束什么</span>
|
||
<div class="grid2" style="margin-top:8px">
|
||
<div class="panel"><h3>角色</h3><p>你是谁,服务什么场景。</p></div>
|
||
<div class="panel"><h3>边界</h3><p>只能基于资料,不够就说不确定。</p></div>
|
||
<div class="panel"><h3>格式</h3><p>结论、理由、来源、下一步。</p></div>
|
||
<div class="panel"><h3>安全</h3><p>权限控制主要在数据层/检索层做,Prompt 是最后一层约束。</p></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="takeaway"><h3>RAG 的答案质量 = 检索质量 × 上下文组织 × 提示词约束;权限安全不能只靠 Prompt。</h3></div>
|
||
</div>
|
||
<div class="foot"><span>Prompt Engineering for RAG</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="corner"></div>
|
||
<div class="notes">提示词工程不要讲玄学,要讲规则:角色、边界、格式、兜底、安全。</div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="如何评估 RAG">
|
||
<div class="canvas">
|
||
<div class="topbar"><div class="sec">11</div><div class="title"><h2>面试必问:RAG 做得好不好,看哪些指标</h2><p>AI PM 不能只说“效果不错”,要能拆成检索、答案、体验、治理。</p></div><div class="mark"><i data-lucide="bar-chart-3"></i>Evaluation</div></div>
|
||
<div class="body">
|
||
<div class="metric-grid">
|
||
<div class="metric"><div class="big"><i data-lucide="search"></i>检索</div><h3>正确资料是否进候选</h3><p>离线看 Hit@K、Recall、问题集覆盖;先确认资料找没找到。</p></div>
|
||
<div class="metric"><div class="big"><i data-lucide="sliders"></i>重排</div><h3>正确资料是否排前面</h3><p>看相关性、时效、权限、来源可信度,避免过期资料进入上下文。</p></div>
|
||
<div class="metric"><div class="big"><i data-lucide="check-circle"></i>答案</div><h3>是否基于证据</h3><p>看 groundedness / faithfulness、引用命中率、拒答是否稳妥。</p></div>
|
||
<div class="metric"><div class="big"><i data-lucide="activity"></i>在线</div><h3>能不能上线</h3><p>看延迟、成本、失败率、满意度、人工转接率和线上反馈。</p></div>
|
||
</div>
|
||
<div class="takeaway"><h3>排查顺序:先离线看检索/重排,再看答案是否忠于证据,最后看线上体验和成本。</h3></div>
|
||
</div>
|
||
<div class="foot"><span>Retrieval Metrics · Groundedness · Latency · Cost</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="corner"></div>
|
||
<div class="notes">这页是面试价值最高的页之一。要能把“效果不好”定位到链路中的某一段。</div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="常见失败场景">
|
||
<div class="canvas">
|
||
<div class="topbar"><div class="sec">12</div><div class="title"><h2>RAG 失败时,通常不是“模型太差”这么简单</h2><p>面试里能讲出失败归因,比只讲流程更像做过产品。</p></div><div class="mark"><i data-lucide="bug"></i>Failure Modes</div></div>
|
||
<div class="body">
|
||
<div class="grid3">
|
||
<div class="panel"><span class="tag red">资料问题</span><h3>知识库本身不可信</h3><p>文档过期、重复、格式混乱、缺少负责人,导致检索出来的证据就错。</p></div>
|
||
<div class="panel"><span class="tag orange">检索问题</span><h3>找不到或找偏</h3><p>切片粒度不合适、同义词没处理、只用向量导致编号/条款匹配差。</p></div>
|
||
<div class="panel"><span class="tag">生成问题</span><h3>模型没有按证据答</h3><p>上下文太长、提示词边界弱、冲突资料没处理,都会导致幻觉。</p></div>
|
||
</div>
|
||
<div class="grid3" style="margin-top:14px">
|
||
<div class="panel blue"><h3>治理动作</h3><p>建立资料负责人、版本规则、过期提醒和灰度发布。</p></div>
|
||
<div class="panel blue"><h3>技术动作</h3><p>混合检索、重排、查询改写、权限过滤、上下文去重。</p></div>
|
||
<div class="panel blue"><h3>产品动作</h3><p>展示来源、允许反馈、低置信度转人工、持续评测。</p></div>
|
||
</div>
|
||
</div>
|
||
<div class="foot"><span>Failure Analysis</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="corner"></div>
|
||
<div class="notes">这页帮助面试时回答“如果效果不好怎么办”。</div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="Agent">
|
||
<div class="canvas">
|
||
<div class="topbar"><div class="sec">13</div><div class="title"><h2>什么时候从 RAG 走到 Agent</h2><p>不要为了显得高级而上 Agent;先判断任务是否真的需要动态决策。</p></div><div class="mark"><i data-lucide="cpu"></i>Agent</div></div>
|
||
<div class="body">
|
||
<div class="agent-grid">
|
||
<div class="agent"><div class="round-icon"><i data-lucide="route"></i></div><h3>规划</h3><p>判断任务目标,拆成检索、调用工具、确认结果等步骤。</p></div>
|
||
<div class="arrow">→</div>
|
||
<div class="agent"><div class="round-icon"><i data-lucide="search"></i></div><h3>检索</h3><p>用 RAG 查政策、流程、历史案例,给后续动作提供依据。</p></div>
|
||
<div class="arrow">→</div>
|
||
<div class="agent"><div class="round-icon"><i data-lucide="send"></i></div><h3>执行</h3><p>调用工具查订单、建工单、写系统、发送通知,并检查结果。</p></div>
|
||
</div>
|
||
<div class="grid2" style="margin-top:16px">
|
||
<div class="panel"><span class="tag">不需要 Agent</span><h3>单轮问答或固定流程</h3><p>路径确定、风险高、规则清晰时,workflow + RAG 往往更稳。</p></div>
|
||
<div class="panel blue"><span class="tag green">需要 Agent</span><h3>多步骤动态任务</h3><p>需要规划、试错、跨系统调用,并根据中间结果决定下一步。</p></div>
|
||
</div>
|
||
</div>
|
||
<div class="foot"><span>RAG Gives Knowledge · Agent Orchestrates Tasks</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="corner"></div>
|
||
<div class="notes">不要把 Agent 讲神。它是围绕目标进行计划、工具调用和反馈循环的系统。</div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="MCP">
|
||
<div class="canvas">
|
||
<div class="topbar"><div class="sec">14</div><div class="title"><h2>MCP:AI 应用连接外部能力的标准协议</h2><p>这是前沿加分项。面试里记住一句:MCP 让 AI 应用用统一方式连接工具、数据和提示模板。</p></div><div class="mark"><i data-lucide="plug"></i>Protocol</div></div>
|
||
<div class="body">
|
||
<div class="bus-layout">
|
||
<div class="panel"><span class="tag">Host / Client</span><h3>AI 应用侧</h3><p>Host 承载用户和模型;Client 负责按 MCP 协议连接 Server。</p></div>
|
||
<div class="bus">MCP<br><span>连接 tools · resources · prompts</span></div>
|
||
<div class="tool-grid">
|
||
<div class="tool"><i data-lucide="user"></i>CRM<span>客户资料</span></div>
|
||
<div class="tool"><i data-lucide="clipboard"></i>工单系统<span>创建 / 查询</span></div>
|
||
<div class="tool"><i data-lucide="database"></i>数据库<span>实时数据</span></div>
|
||
<div class="tool"><i data-lucide="folder"></i>文件系统<span>内部文档</span></div>
|
||
<div class="tool"><i data-lucide="search"></i>搜索<span>外部信息</span></div>
|
||
<div class="tool"><i data-lucide="message-square"></i>消息<span>通知和审批</span></div>
|
||
</div>
|
||
</div>
|
||
<div class="takeaway"><h3>关系一句话:RAG 提供知识证据,Workflow / Agent 决定步骤,MCP 负责统一连接外部工具和数据。</h3></div>
|
||
</div>
|
||
<div class="foot"><span>Model Context Protocol · Host · Client · Server</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="corner"></div>
|
||
<div class="notes">MCP 不要讲太深。入门层面只要讲清它解决“模型和工具怎么标准连接”。</div>
|
||
</section>
|
||
|
||
<section class="slide" data-title="面试答题模板">
|
||
<div class="canvas">
|
||
<div class="topbar"><div class="sec">15</div><div class="title"><h2>面试题:让你设计一个企业知识库问答,怎么答</h2><p>按这个结构答,既有产品视角,也能覆盖技术链路。</p></div><div class="mark"><i data-lucide="list-checks"></i>Template</div></div>
|
||
<div class="body">
|
||
<div class="answer-template">
|
||
<div class="answer-card"><div class="num">0</div><h3>先判断问题类型</h3><p>长上下文解决“读得下”,RAG 解决“找得到”,微调更适合风格/格式/任务适配,Agent 解决“做得到”;MCP 是连接协议。</p></div>
|
||
<div class="answer-card"><div class="num">1</div><h3>定场景</h3><p>用户是谁?问什么问题?需要结论、解释、引用,还是要执行动作?</p></div>
|
||
<div class="answer-card"><div class="num">2</div><h3>治理资料</h3><p>资料从哪里来,谁负责,版本和权限怎么管,是否有评测问题集?</p></div>
|
||
<div class="answer-card"><div class="num">3</div><h3>设计检索</h3><p>切片、元数据、向量检索、关键词检索、混合检索、重排和 Top-K。</p></div>
|
||
<div class="answer-card"><div class="num">4</div><h3>约束生成</h3><p>系统提示词规定只能基于资料回答,输出来源,不确定就兜底。</p></div>
|
||
<div class="answer-card"><div class="num">5</div><h3>评估迭代</h3><p>看召回、排序、groundedness、引用、延迟、成本、权限和用户反馈。</p></div>
|
||
</div>
|
||
<div class="takeaway"><h3>一句话收束:企业 AI 问答要先分清“读得下 / 找得到 / 说得稳 / 做得到”,再决定长上下文、RAG、微调、Agent 分别怎么用。</h3></div>
|
||
</div>
|
||
<div class="foot"><span>Interview Answer Template</span><span class="page"></span></div>
|
||
</div>
|
||
<div class="corner"></div>
|
||
<div class="notes">这页是最终背诵模板。面试时可以直接按 1 到 5 展开。</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 / 16</span>
|
||
<button class="nav-btn" id="nextBtn" type="button" aria-label="下一页">›</button>
|
||
</div>
|
||
<script src="https://unpkg.com/lucide@1.21.0/dist/umd/lucide.min.js"></script>
|
||
<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 hydrateIcons(){
|
||
if(window.lucide){
|
||
window.lucide.createIcons({
|
||
attrs: {
|
||
class: ['lucide-icon'],
|
||
'stroke-width': 2.2
|
||
}
|
||
});
|
||
}
|
||
}
|
||
function render(){
|
||
slides.forEach((slide,i)=>slide.classList.toggle('active',i===idx));
|
||
document.querySelectorAll('.page').forEach(el=>{el.textContent=(idx+1)+' / '+slides.length});
|
||
document.querySelectorAll('.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 match = location.hash.match(/#\/(\d+)/);
|
||
if(match) idx = Math.max(0,Math.min(slides.length-1,Number(match[1])-1));
|
||
render();
|
||
}
|
||
window.addEventListener('hashchange',fromHash);
|
||
prevBtn.addEventListener('click',()=>go(idx-1));
|
||
nextBtn.addEventListener('click',()=>go(idx+1));
|
||
document.addEventListener('keydown',event=>{
|
||
if(['ArrowRight','PageDown',' '].includes(event.key)){event.preventDefault();go(idx+1)}
|
||
if(['ArrowLeft','PageUp'].includes(event.key)){event.preventDefault();go(idx-1)}
|
||
if(event.key==='Home'){event.preventDefault();go(0)}
|
||
if(event.key==='End'){event.preventDefault();go(slides.length-1)}
|
||
if(event.key==='f'||event.key==='F'){document.documentElement.requestFullscreen?.()}
|
||
});
|
||
hydrateIcons();
|
||
fromHash();
|
||
})();
|
||
</script>
|
||
</body>
|
||
</html>
|