提示:部分习题没有标准答案,重点在于培养学习者对记忆系统和RAG技术的综合理解和实践能力。
-
本章介绍了四种记忆类型:工作记忆、情景记忆、语义记忆和感知记忆。请分析:
- 在8.2.5节中,每种记忆类型都有独特的评分公式。请对比情景记忆和语义记忆的评分机制,解释为什么情景记忆更强调"时间近因性"(权重0.2),而语义记忆更强调"图检索"(权重0.3)?
- 如果要设计一个"个人健康管理助手"(需要记录用户的饮食、运动、睡眠数据,并提供健康建议),你会如何组合使用这四种记忆类型?请为每种记忆类型设计具体的应用场景。
- 工作记忆采用TTL(Time To Live)机制自动清理过期数据。请思考:在什么情况下,重要的工作记忆应该被"整合"(consolidate)为长期记忆?如何设计一个自动整合的触发条件?
-
在8.3节的RAG系统中,我们使用MarkItDown将各种格式文档统一转换为Markdown。请深入思考:
提示:这是一道动手实践题,建议实际操作
- 当前的智能分块策略基于Markdown的标题层次(#、##、###)进行分割。如果处理的是没有明确标题结构的文档(如小说、法律条文),应该如何优化分块策略?请尝试实现一个基于"语义边界"的分块算法。
- 在8.3.5节中介绍了MQE(多查询扩展)和HyDE(假设文档嵌入)两种高级检索策略。请选择一个实际场景(如技术文档问答、医疗知识检索),对比基础检索、MQE和HyDE三种方法的效果差异,并分析各自的适用场景。
- RAG系统的检索质量很大程度上取决于嵌入模型的选择。请对比本章提到的三种嵌入方案(百炼API、本地Transformer、TF-IDF),从准确性、速度、成本、离线部署等维度进行评估,并给出选型建议。
-
记忆系统的"遗忘"机制是模拟人类认知的重要设计。基于8.2.3节的MemoryTool,请完成以下扩展实践:
提示:这是一道动手实践题,建议实际操作
- 当前提供了三种遗忘策略:基于重要性、基于时间、基于容量。请设计并实现一个"智能遗忘"策略,综合考虑重要性、访问频率、时间衰减等多个因素,使用加权评分来决定哪些记忆应该被遗忘。
- 在长期运行的智能体系统中,记忆数据库可能会积累大量数据。请设计一个"记忆归档"机制:将长期不用但可能有价值的记忆转移到冷存储,需要时再恢复。这个机制应该如何与现有的四种记忆类型集成?
- 思考:如果智能体需要"忘记"某些敏感信息(如用户隐私数据),仅仅从数据库删除是否足够?在使用向量数据库和图数据库的情况下,如何确保数据被彻底清除?
-
在8.4节的"智能学习助手"案例中,我们结合了MemoryTool和RAGTool。请深入分析:
- 案例中的
ask_question()方法同时使用了RAG检索和记忆检索。请分析:在什么情况下应该优先使用RAG?在什么情况下应该优先使用Memory?如何设计一个"智能路由"机制来自动选择最合适的检索方式? - 当前的学习报告(
generate_report())只包含统计信息。请扩展这个功能,设计一个更智能的学习报告生成器:能够分析用户的学习轨迹、识别知识盲点、推荐下一步学习内容。这需要用到哪些记忆类型和检索策略? - 假设你要将这个学习助手部署为多用户的Web服务,每个用户都有独立的记忆和知识库。请设计数据隔离方案:如何在Qdrant和Neo4j中实现用户级别的数据隔离?如何优化多用户场景下的检索性能?
- 案例中的
-
语义记忆使用了Neo4j图数据库来存储知识图谱。请思考:
- 在8.2.5节的语义记忆实现中,系统会自动提取实体和关系构建知识图谱。请分析:这种自动提取的准确性如何?在什么情况下可能会提取出错误的实体或关系?如何设计一个"知识图谱质量评估"机制?
- 知识图谱的一个重要优势是支持复杂的关系推理。请设计一个查询场景,充分利用Neo4j的图查询能力(如多跳关系、路径查找),实现纯向量检索无法完成的任务。
- 对比语义记忆的"向量检索+图检索"混合策略与纯向量检索:在什么类型的查询中,图检索能够带来显著的性能提升?请用具体例子说明。