Agent 实现方法论
From Scratch
学习地图
练习
术语表
← 返回首页
本章教程
本章练习
第 11 章测验
第 11 章测验
对应章节:记忆与检索
共 8 题,答对率 ≥ 80% 即通过。请完成全部题目后点击「提交」。
Q1
为什么 Agent 需要长期记忆?不实现记忆会怎样?
没有长期记忆时,每次新会话 Agent 都从零开始:用户上次告诉过它的偏好、项目背景全部丢失,用户必须反复重复解释
没有长期记忆时模型就无法生成自然语言,Agent 直接瘫痪
没有长期记忆时 Agent 无法调用工具,只能纯文本回复
长期记忆是给模型训练用的,和 Agent 运行时无关
Q2
关于「工作记忆」与「长期记忆」的区别,正确的是?
工作记忆是上下文窗口(messages 数组),随会话存在、有 token 上限;长期记忆跨会话、有选择地沉淀、按需检索回填
工作记忆存在磁盘上,长期记忆存在内存里
工作记忆只能存用户消息,长期记忆只能存模型回复
两者没有区别,只是叫法不同
Q3
什么是 embedding?为什么向量检索能胜过关键词匹配?
embedding 把文本映射为向量,语义相近的文本在向量空间里也相近;所以「用户不喜欢咖啡」与「用户对饮品的偏好」这种措辞不同但语义相关的文本也能互相命中
embedding 是把文本压缩成更短的字符串,节省存储
embedding 只能处理英文,中文需要先分词才能用
embedding 是关键词的哈希表,命中率取决于字面匹配
Q4
余弦相似度 cos(a, b) = (a·b) / (|a|·|b|),下列说法正确的是?
它衡量两个向量的方向夹角,对长度缩放不敏感:a 和 2a 的相似度是 1
它衡量向量长度差,长度差越小相似度越高
两个相同向量的余弦相似度永远是 0
余弦相似度总是大于 1,越大越相关
Q5
本章为什么可以用「暴力检索」(遍历所有向量逐个算余弦)而不是引入向量数据库?
因为记忆库规模不大(几千条以内)时 O(n) 扫描完全够用,且没有索引维护成本;向量库的 ANN 索引在规模变大、延迟成为瓶颈时才值得引入
因为暴力检索永远比任何向量库都快
因为浏览器沙箱禁止安装任何第三方库
因为向量数据库无法计算余弦相似度
Q6
关于 embedding 维度一致性,正确的做法是?
写入时的向量维度和检索查询的向量维度必须一致;不一致时应主动抛错,而不是算出错相似度
维度不一致时把两个向量补零对齐就行,结果仍然可靠
维度只影响存储大小,不影响相似度计算
查询向量维度和库向量维度必须不同,才能体现检索价值
Q7
关于记忆写入时机策略,正确的是?
写入是「有选择的」:命中信号关键词(如「记住」「偏好」)或会话足够长才写;什么都写会让记忆库充满噪声,检索时噪声全被注入上下文
每一条用户消息都必须立刻写入长期记忆,否则就是丢信息
只在会话开始时写入一次,之后不再写
写入时机只能靠 LLM 判断,纯函数无法表达
Q8
长期记忆与持久层(第 10 章)的关系是?
记忆库本身要落盘持久化(复用第 10 章的存储),向量只是检索用的索引;记忆 = 持久层 + 检索层
向量就是记忆本身,原文可以丢弃,存向量就够了
长期记忆与持久层无关,记忆只存在内存里
持久层是给对话历史用的,记忆库必须用独立数据库
提交