
用 AI 重构刷题笔记从零散记录到结构化知识库一、你的刷题笔记是不是写了一大堆回头看啥也没记住记笔记是好事但形式决定效果。散乱的、按时间顺序堆砌的笔记回顾时几乎没有检索能力。你需要知道我有哪些关于双指针的笔记不应该是从头翻到尾。AI 可以帮助你做笔记的结构化重构——不是简单地让 AI 帮你写而是让 AI 帮你把已有的碎片化记录组织成有检索价值的知识库。二、从碎片到结构flowchart TD A[原始笔记碎片] -- B[AI 分类与标记] B -- C[结构化知识库] C -- D[按标签索引] C -- E[按难度索引] C -- F[按知识点依赖图索引] C -- G[按错误模式索引] D -- H[快速检索: 双指针 滑动窗口] E -- I[渐进学习: 从 Easy 到 Hard] F -- J[依赖学习: 先学什么后学什么] G -- K[针对性复习: 我常犯的 off-by-one 错误]三、实现笔记结构化引擎from dataclasses import dataclass, field from typing import Optional from datetime import datetime import json import hashlib dataclass class ProblemNote: 单道题的笔记结构化后 problem_id: int title: str difficulty: str tags: list[str] # 核心内容 key_insight: str # 核心洞见一句话总结 solution_approach: str # 解法思路 code_snippet: str # 关键代码片段 complexity_analysis: str # 复杂度分析 # 个人标注 my_mistakes: list[str] # 我犯过的错误 mistake_patterns: list[str] # 错误模式标签 review_count: int 0 # 复习次数 last_reviewed: Optional[datetime] None mastery_level: float 0.0 # 0-1 class NoteStructurer: 笔记结构化引擎 将自由形式的刷题笔记转换为结构化的 ProblemNote。 NOTE_SCHEMA { key_insight: 这道题的核心解法是什么用一句话概括。, solution_approach: 详细描述解题思路包括为什么选择这个算法。, complexity_analysis: 分析时间和空间复杂度说明推导过程。, my_mistakes: 列出你在这道题上犯过的所有错误。, mistake_patterns: 这些错误属于什么模式如 off-by-one、类型错误、边界遗漏, } def structure(self, raw_note: str, problem_meta: dict) - ProblemNote: 将原始笔记转化为结构化笔记 使用 AI 提取关键信息按 schema 填充。 也可以让用户在 Web 界面上按模板填写。 # 使用 LLM 提取结构化信息 # prompt self._build_extraction_prompt(raw_note, problem_meta) # extracted llm.chat(prompt) return ProblemNote( problem_idproblem_meta[id], titleproblem_meta[title], difficultyproblem_meta[difficulty], tagsproblem_meta.get(tags, []), key_insight, # 从 AI 提取结果填充 solution_approach, code_snippet, complexity_analysis, my_mistakes[], mistake_patterns[], ) class KnowledgeBase: 结构化知识库支持多维度检索 def __init__(self): self.notes: dict[int, ProblemNote] {} # 反向索引标签 → 题目 ID 集合 self.tag_index: dict[str, set[int]] {} # 反向索引错误模式 → 题目 ID 集合 self.mistake_index: dict[str, set[int]] {} # 知识点依赖图A 是 B 的前置知识 self.dependency_graph: dict[str, set[str]] {} def add_note(self, note: ProblemNote) - None: 添加笔记并更新索引 self.notes[note.problem_id] note # 更新标签索引 for tag in note.tags: if tag not in self.tag_index: self.tag_index[tag] set() self.tag_index[tag].add(note.problem_id) # 更新错误模式索引 for pattern in note.mistake_patterns: if pattern not in self.mistake_index: self.mistake_index[pattern] set() self.mistake_index[pattern].add(note.problem_id) def search_by_tag(self, tag: str) - list[ProblemNote]: 按标签检索 ids self.tag_index.get(tag, set()) return [self.notes[pid] for pid in ids if pid in self.notes] def search_by_mistake(self, pattern: str) - list[ProblemNote]: 按错误模式检索 ids self.mistake_index.get(pattern, set()) return [self.notes[pid] for pid in ids if pid in self.notes] def get_weak_tags(self, threshold: float 0.6) - list[str]: 获取掌握度低的标签薄弱环节 tag_mastery {} for note in self.notes.values(): for tag in note.tags: if tag not in tag_mastery: tag_mastery[tag] [] tag_mastery[tag].append(note.mastery_level) weak [] for tag, levels in tag_mastery.items(): avg sum(levels) / len(levels) if avg threshold: weak.append(tag) return weak def get_review_candidates(self, limit: int 10) - list[ProblemNote]: 获取需要复习的题目按掌握度 最近复习时间排序 candidates [] for note in self.notes.values(): # 评分逻辑掌握度低 长时间未复习 高优先级 days_since_review 999 if note.last_reviewed: days_since_review ( datetime.now() - note.last_reviewed ).days priority (1 - note.mastery_level) * 0.6 min(days_since_review / 30, 1) * 0.4 candidates.append((priority, note)) candidates.sort(keylambda x: x[0], reverseTrue) return [note for _, note in candidates[:limit]] def export_for_llm(self) - str: 导出知识库摘要供 LLM 做个性化分析 summary { total_notes: len(self.notes), tag_distribution: { tag: len(ids) for tag, ids in self.tag_index.items() }, common_mistakes: { pattern: len(ids) for pattern, ids in self.mistake_index.items() }, weak_areas: self.get_weak_tags(), } return json.dumps(summary, ensure_asciiFalse, indent2)四、结构化笔记的核心价值4.1 可检索当你在面试前想快速回顾「所有双指针题目中我犯过的错误」时结构化笔记可以秒级响应。这在非结构化的文本笔记中几乎不可能。4.2 可分析当你有 100 道题的结构化笔记时AI 可以帮你分析哪类错误你最容易犯从 mistake_patterns 中统计你的解题速度趋势从 review_count 和 last_reviewed 推断知识薄弱环节从各标签的 mastery_level 分布中识别4.3 可迁移结构化笔记可以直接作为训练数据用于后续 AI 模型针对你的个性化微调。五、总结笔记最有价值的部分不是记那一下而是在后续回顾时能被高效检索和分析。从碎片化笔记到结构化知识库的转变看似只是换了一种格式实际上是从「写给自己看」变成「可以被检索和分析的数据资产」。AI 在其中的角色是帮助完成这个转化过程——从散乱的文本中提取结构建立索引发现模式。