简历

2025.10 - 2026.02 个人 AI 知识库系统(本地化 RAG 智能笔记助手) 全栈开发

面向个人知识管理场景,设计并实现本地化 RAG 智能问答系统,解决 Markdown / PDF / Word 等多格式笔记在长期积累后“检索不准、上下文割裂、写作缺少辅助”的问题。系统围绕“单机可用、模块可替换、后续可扩展”进行架构设计,对文档解析、切块、检索、对话编排、流式生成等核心链路进行接口化解耦,具备向更大规模知识库场景演进的能力。

技术栈: Spring Boot 3、Spring AI、PostgreSQL、PGVector、Redis、Apache Tika、SSE、Docker

文档解析与切块策略

  • 基于 Apache Tika 封装统一文档解析能力,支持 Markdown、PDF、Word 等多格式文件抽取与清洗;通过异步流水线串联“解析 → 切块 → 向量化 → 向量索引与全文索引入库”,降低上传接口阻塞时间。
  • 设计组合式切块引擎,抽象 ChunkStrategy 策略接口,实现结构化切块、递归切块、LLM 智能切块三类策略,并根据文档类型、结构化程度与内容质量自动路由,提升不同文档形态下的切块稳定性。
  • 设计 doc_process_log 处理日志与状态机机制,记录解析、切块、向量化、入库等阶段进度与异常信息,支持失败重试、断点续传与前端进度查询,提高长文档处理链路的可观测性和可恢复性。

检索增强与召回质量优化

  • 设计 向量检索 + 全文检索 + 重排序 的多阶段检索链路,基于 PGVector HNSW 索引实现语义召回,结合 PostgreSQL tsvector 实现关键词精确匹配,先通过 RRF 对多路召回结果进行排名融合,再使用重排模型对 TopN 候选片段进行二次相关性排序;在 100 条自建评测集上,Top5 命中率较单通道向量检索提升约 18%
  • 设计 Parent-Child 双层切块架构:Child 块控制在约 200 字符用于向量化和精准召回,Parent 块控制在约 800 字符作为生成上下文,通过 parent_id 回溯实现“搜小块、读大块”,缓解 RAG 中“检索精度”与“上下文完整性”的冲突。
  • 解析 Markdown <span class="wikilink-missing">note_id</span> 双链语法,构建笔记引用邻接表;检索命中后沿引用关系进行 2 跳图扩展,将关联笔记纳入候选池,提升跨文档、跨主题问题的联想式召回能力。

会话编排与 Agent 执行

  • 设计 Redis 会话级租约机制,以 chat:running:{conversationId} 控制同一会话在集群环境下的生成互斥,并通过 UUID leaseOwnerToken 防止误释放其他请求的锁;结合 30s TTL + 10s 定时续期 支撑长时间生成任务,续期失败时主动中断生成并释放运行态资源,避免重复发送、前端重试导致的多任务并发写入和模型空跑问题。
  • 基于 ChatPreparationOrchestrator 设计五步链式前置编排器,在检索前完成用户问题预处理:先装载会话记忆,对较早历史轮次进行 LLM 摘要压缩、对最近多轮对话保留原文窗口;再串联 意图识别、问题改写、歧义澄清、子问题拆分、知识域收缩,将包含代词、省略和上下文依赖的用户问题改写为可独立检索的执行计划,并通过“领域 → 主题 → 文档”三级知识路由将检索范围从全库收缩至候选文档,减少无关内容干扰。
  • 设计 ConversationExecutorRegistry 执行器动态路由机制,基于编排器输出的 ExecutionMode 自动分发至不同执行器:信息不足时进入澄清执行器生成追问,知识问答类问题进入 RAG 执行器完成双通道检索、融合排序与证据驱动生成,开放探索或时效性问题进入 ReAct Agent 执行器,按“思考 → 行动 → 观察”循环调用联网搜索、知识检索等工具,并通过调用次数上限、工具失败重试和异常降级机制控制 Agent 执行风险。

企业级项目导航:⬅️ 03-图数据库与知识路由 | 04-简历 | ➡️ 01-关于rag发展的思考