在大模型落地知识库场景的过程中,传统轻量化 RAG 方案普遍存在诸多痛点:多源资料适配性差、文档结构混乱导致检索失真、切块粒度单一造成精准度与上下文完整性无法兼顾、检索方式单一、问答上下文碎片化、资料运维能力薄弱等问题。
YoudaoNoteLM 自研的知识问答与内容生成 RAG 系统,彻底摒弃了行业内简单的「上传文档-向量检索-模型调用」极简流水线,打造了一套全链路、结构化、可运维、高精度的企业级 RAG 架构。完整覆盖资料导入、Markdown 结构化优化、分层智能切块、混合语义检索、引用精准回填、智能问答生成、多场景内容创作及资料全生命周期维护等核心环节,完美适配个人知识管理、企业知识库问答、多格式内容智能生成等复杂业务场景。本文将基于完整技术链路,深度拆解其架构设计、核心流程与差异化技术优势。
一、整体架构:四层分层解耦,实现全链路标准化处理
YoudaoNoteLM 项目的 RAG 系统采用四层分层架构设计,各层级职责清晰、解耦性强,既保证了数据处理的标准化、流程化,也为后续功能迭代、场景拓展、性能优化提供了极强的可扩展性。四层架构自上而下贯穿数据接入、处理、存储、应用全流程,是整个 RAG 系统的核心基石。
1. 资料接入层:全场景多源数据适配
打破传统 RAG 仅支持单一文档导入的局限,系统支持全方位资料来源接入,涵盖本地文件、网页 URL、音频文件、有道云笔记原生数据、系统内自建笔记等主流场景,实现用户各类知识素材的一站式汇聚。多源统一接入的设计,解决了用户知识分散、多平台数据无法联动问答的核心痛点。
2. 入库处理层:统一格式+智能结构化
为解决不同格式资料结构杂乱、无法统一检索的问题,系统将所有接入的资料统一标准化转换为 Markdown 格式,并完成智能化结构化清洗与优化。无论原始资料是 PDF、Word、网页、音频转写文本还是原生笔记,最终都会输出结构规范、层级清晰的 Markdown 文档,为后续切块、索引、检索的稳定性奠定基础。
3. 索引存储层:分级存储,兼顾检索精度与上下文完整性
采用「大小块分层存储」架构,将处理后的结构化内容拆分为 ParentBlock(父级大块)和 ChildChunk(子级小块),分别适配不同存储引擎:父级大块存入 MySQL 关系型数据库,保障完整上下文的稳定存储与快速查询;子级小块存入 Milvus 向量数据库,支撑高效的语义向量检索。双存储引擎协同,完美平衡检索速度、命中精度与内容完整性。
4. 检索使用层:Agent 驱动的智能应用出口
基于上层标准化数据底座,通过问答 Agent 和多场景内容生成模块,依托 RAGRetriever 核心检索器获取精准的资料上下文。区别于传统固定检索逻辑,系统采用工具调用式智能 Agent,可根据用户问题动态选择检索策略,适配问答、总结、创作、题库生成、思维导图制作等多元业务场景。
核心代码模块分布
系统核心能力高度聚合,代码结构清晰,核心逻辑集中在以下目录,便于迭代维护与二次开发:
internal/rag:RAG 核心流程、切块、检索、重排核心逻辑
internal/service/importer_service.go:多源资料导入接入服务
internal/service/youdao_service.go:有道云笔记专属适配服务
internal/agent/chat:问答 Agent 核心调度逻辑
internal/service/generation_*:全品类内容生成相关服务
二、资料导入流程:多源统一接入,标准化落地入库
系统支持多元化资料导入入口,不同来源的资料拥有独立的适配流程,但所有导入链路最终都会生成统一的 Source 数据源记录,实现全量资料的统一管理、状态追踪与运维管控。各导入流程均采用异步后台处理,不阻塞用户操作,提升使用体验。
1. 文件导入流程(本地文档)
适配 PDF、Word、TXT、PPT 等主流本地文件格式,是最基础的资料接入方式,流程稳定通用:
用户前端上传本地文件素材;
文件原始数据持久化保存至 MinIO 对象存储,保障原始文件可回溯;
系统创建唯一 Source 数据源记录,初始状态标记为 processing(处理中);
后台异步通过 MarkItDown 工具将各类文件统一转换为标准 Markdown 文本;
转换完成后进入结构化处理与 RAG 正式入库流程。
2. URL 导入流程(网页/搜索结果)
支持网页链接、搜索结果链接导入,快速抓取网络优质内容,拓展知识库边界:
用户输入任意有效网页 URL、搜索结果链接;
系统为单个链接独立创建 Source 记录,实现单链接单独管控;
后台爬虫引擎智能抓取网页有效内容,自动过滤广告、侧边栏、冗余弹窗等无效信息;
通过 MarkItDown 完成网页内容到标准 Markdown 的转换;
结构化处理后进入 RAG 入库链路。
3. 音频导入流程(语音素材转知识)
适配会议录音、听课音频、访谈语音等语音素材,实现语音知识结构化沉淀:
用户上传各类格式音频文件;
系统调用高精度 ASR 语音转写模型,将音频内容批量转化为文本;
支持用户人工确认、编辑转写结果,修正识别误差,保障内容准确性;
校验完成后创建对应 Source 数据源记录;
标准化处理后进入 RAG 入库流程,完成语音知识向结构化知识库的转化。
4. 有道云笔记导入流程(原生数据联动)
深度适配有道云笔记生态,实现用户原有笔记资产的无缝迁移与智能赋能:
通过 youdaonote CLI 工具批量读取用户有道云笔记数据;
针对专属 .note 格式笔记,自动完成格式解析与 Markdown 转换;
为每篇笔记创建独立 Source 记录,实现笔记溯源管理;
自动触发后续结构化与 RAG 入库流程,让传统笔记具备智能问答、内容生成能力。
三、Markdown 结构化流程:AI 补全层级,根治文档结构混乱
在 RAG 切块、索引之前,文档结构的规范性直接决定检索精准度与问答质量。大量用户导入的原始文档、网页内容、转写文本存在标题缺失、层级混乱、无章节划分、内容平铺堆砌等问题,会导致后续切块碎片化、检索无逻辑、答案上下文错乱。
为此系统设计了专属 Markdown 结构化优化流程,通过 MarkdownStructurer 模块实现 AI 智能结构修复:
系统首先自动检测当前 Markdown 文档的标题层级完整性与结构清晰度;
若文档层级单薄、无二级/三级标题、结构模糊,自动调用 LLM 智能补充 ##、### 层级标题;
结构化优化过程仅补充标题、梳理层级,不修改、不篡改用户原始正文内容,百分百保留用户原始信息;
容错降级设计:若 LLM 结构化优化失败,系统会直接保留原始 Markdown 内容,不阻塞整体入库流程,保障系统稳定性。
该环节是高质量 RAG 的核心前置保障:后续切块逻辑会严格依托标准化标题路径生成唯一 chapter_path 章节标识,文档结构越清晰,切块逻辑越合理,检索命中率、内容关联性、问答逻辑性都会大幅提升。
四、RAG 入库流程:IngestSingle 驱动的标准化全链路
RAG 入库是知识从原始文本转化为可检索、可问答、可生成的结构化知识的核心环节,系统以IngestSingle为统一核心入口,串联从数据校验、解析切块、语义增强、双库存储、状态更新的完整闭环,流程标准化、可追溯、可监控。
完整标准化入库流程如下:
根据唯一 sourceID 查询对应 Source 数据源记录,校验数据合法性;
检测 MarkdownContent 内容是否为空,过滤无效空白数据;
将 Source 状态更新为 processing,标记正在入库处理;
通过 MarkdownParser 解析 Markdown AST 抽象语法树,精准识别标题、段落、代码块、表格、列表等元素;
依据标准化标题结构,生成完整的章节级 Document 对象,确立内容层级关系;
通过 ParentTransformer 完成父级大块切块,默认粒度 1000 token,保留完整章节语义;
通过 ChildTransformer 完成子级小块切块,默认粒度 400 token,适配精细语义检索;
通过 SemanticTransformer 为切块内容注入章节路径、内容类型等语义标签,完成语义增强;
将完整 ParentBlock 章节大块数据写入 MySQL 数据库,用于后续上下文回填;
将 MySQL 生成的真实 parent_block_id 回写至 ChildChunk 元数据,建立大小块关联关系;
读取用户自定义 Embedding 模型配置,适配个性化向量生成规则;
检测并创建用户专属 Milvus Collection,实现用户数据物理隔离;
将语义增强后的 ChildChunk 小块数据写入 Milvus,Indexer 模块自动完成向量化与索引构建;
Source 状态更新为 ready(就绪),标识可正常参与检索问答;
标记 Source 向量状态 vectorized = true,完成全量入库流程。
五、分层切块设计:Parent-Child 双粒度,解决 RAG 核心矛盾
传统 RAG 系统普遍面临核心矛盾:切块过小,检索精准但上下文缺失,回答碎片化;切块过大,上下文完整但语义冗余,检索命中率低、精准度差。YoudaoNoteLM 独创 Parent-Child 两级分层切块架构,彻底解决这一行业痛点,实现「精准检索+完整上下文」双向兼顾。
1. ParentBlock(父级大块)
粒度规格:默认 1000 token,以完整章节、完整主题为切块边界;
存储介质:MySQL 关系型数据库;
核心特性:完整保留单章节全部内容、结构、格式与逻辑关系;
应用场景:模型生成答案时的完整上下文回填、长文本逻辑梳理、多内容联动分析。
2. ChildChunk(子级小块)
粒度规格:默认 400 token,聚焦单一细分知识点;
存储介质:Milvus 向量数据库;
核心特性:轻量化、语义聚焦,适配精细语义匹配;
元数据完备:内置 source_id、parent_block_id、chunk_type、heading、chapter_path 全维度标签;
应用场景:向量检索、语义匹配、精准知识点命中。
分层设计核心优势
小块负责精准检索,大块负责完整兜底。检索阶段通过细粒度 ChildChunk 保证语义匹配精度,避免冗余信息干扰;答案生成阶段通过 Parent Recovery 回填粗粒度 ParentBlock,保证模型获取完整章节逻辑,彻底杜绝传统 RAG「答不全、答偏、片段化」的问题。
六、语义增强流程:让向量感知上下文,杜绝孤立语义
普通 RAG 切块仅对纯文本进行向量化,切块内容相互孤立,缺失章节归属、内容场景、层级关系,导致相似语义误召回、上下文关联断裂。YoudaoNoteLM 在 ChildChunk 写入 Milvus 前,增加专属语义增强环节,为每一个切块赋予场景与层级属性。
系统会为不同类型的切块内容绑定完整语义信息,核心增强规则如下:
普通文本段落:绑定完整章节标题路径(如:第一章 > 项目背景 > 技术痛点)+ 原始正文内容;
代码块内容:标记代码块类型、所属章节路径,完整保留代码逻辑与注释,让向量识别代码场景;
表格数据:关联表格所属标题路径,结构化留存表格维度与数据内容,适配数据对比、总结类问答。
该设计让 Embedding 向量不再是孤立的文本语义,而是携带层级、场景、归属的结构化语义,大幅提升复杂文档、代码、表格等特殊内容的检索准确性,降低跨章节误召回概率。
七、Milvus 索引设计:双向量混合检索,兼顾语义与关键词
为保障检索效果,系统基于 Milvus 向量数据库构建了用户隔离、双向量融合、多策略适配的索引体系,兼顾语义模糊匹配与关键词精准匹配,适配不同用户的检索习惯与问题类型。
1. 用户数据隔离设计
系统为每一个用户独立创建专属 Milvus Collection,命名规则为user_{userID}_chunks,实现用户知识数据物理隔离,彻底杜绝跨用户数据泄露、检索串数据问题,保障个人知识库隐私安全。
2. 双向量检索能力
摒弃单一向量检索模式,同时启用稠密向量与稀疏向量双引擎:
Dense Vector(稠密向量):基于用户自定义 Embedding 模型生成,负责深度语义模糊匹配,适配自然语言提问、语义相似检索;
Sparse Vector(稀疏向量):由 Milvus BM25 算法自动生成,负责关键词精准匹配,适配专业术语、专有名词、固定知识点检索。
3. 核心索引配置
稠密向量检索:采用 COSINE 余弦相似度计算,适配语义相似度匹配场景;
稠密向量索引:基于 HNSW 算法构建,兼顾检索速度与召回精度;
稀疏检索:原生 BM25 算法,适配中文关键词精准召回;
文本字段:开启中文专属分词 analyzer,优化中文检索效果;
元数据:采用动态 schema 设计,灵活存储各类拓展标签,适配多场景迭代。
八、问答时的 RAG 检索流程:Agent 驱动的动态工具化检索
区别于传统 RAG 固定检索逻辑,YoudaoNoteLM 采用工具调用式 ReAct 智能 Agent 架构,让大模型自主判断是否需要检索、需要检索哪些资料、需要调用何种工具,实现检索逻辑动态适配用户问题,大幅提升复杂问题的回答能力。
完整问答检索流程:
用户选定指定知识库资料并发起提问;
ChatAgentService 校验用户选中的 sourceIDs 合法性,过滤无效数据源;
初始化用户自定义配置的 LLM 大模型;
创建专属对话 ChatAgent,调度问答全流程;
为 Agent 注册两大核心工具:search_knowledge(知识库检索)、get_sources_summary(资料摘要汇总);
LLM 在 ReAct 循环中自主思考、按需调用工具,简单问题可跳过检索、复杂问题多次检索迭代;
触发检索时,search_knowledge 调用 RAGRetriever.Retrieve 执行核心检索逻辑;
检索结果标准化格式化后回传给 LLM;
ReferenceCollector 统一收集、规整所有引用来源,保障答案可溯源;
最终答案以流式形式实时返回前端,同时附带完整引用列表,实现有据可依。
九、核心检索流程:混合召回+重排筛选,极致优化检索精度
RAGRetriever.Retrieve 是整个系统的检索核心,通过「双向量混合召回、RRF 融合、分数重排、TopK 截断、父块回填」多层筛选,从海量知识库内容中精准筛选最优上下文。
根据 userID 获取用户专属 Embedding 模型配置与向量参数;
初始化用户专属 Milvus Retriever,隔离用户数据;
基于用户选中的 SourceIDs 构建检索过滤条件,限定检索范围;
执行 Hybrid 混合检索:Dense 向量召回 Top20、Sparse BM25 关键词召回 Top20;
通过 RRF 倒数排名融合算法,融合双路检索结果,平衡语义与关键词权重;
将 Milvus 原始文档转换为标准化 RetrieveResult 结果对象;
通过 Score Reranker 重排模型,基于问题与内容的真实相关性二次精准排序;
根据业务配置截断为最终 TopK 最优结果,过滤低相关内容;
执行 Parent Recovery 父块回填流程,补齐完整上下文;
补充数据源名称、创建时间等溯源信息,输出最终检索结果。
十、Parent Recovery 流程:解决检索碎片化的关键兜底能力
Milvus 向量检索的命中对象是细粒度 ChildChunk,虽然精准但内容碎片化。为避免模型基于零散片段生成片面答案,系统设计了Parent Recovery 父级内容回填机制,是保障问答完整性、逻辑性的核心兜底策略。
从所有检索命中的 ChildChunk 结果中,批量提取关联的 parent_block_id;
通过批量查询 MySQL,获取对应的完整 ParentBlock 父级大块数据;
回填完整 ParentContent 正文、章节标题 Heading、完整章节路径 ChapterPath;
关联查询对应 Source 数据源的名称与基础信息;
为检索结果统一回填 SourceName,实现精准溯源;
容错降级机制:若父块查询失败,自动降级返回原始 ChildChunk,保证问答流程不中断。
该流程让模型最终获取的不是零散的知识点片段,而是带完整章节逻辑、完整上下文的结构化内容,从根源解决 RAG 回答片面、逻辑断裂、信息缺失的问题。
十一、资料摘要辅助 RAG:缓存加速,适配全局汇总类问题
针对「总结多篇资料、对比多文档差异、全局梳理知识点框架」等宏观类问题,细粒度检索效率低下,系统新增资料摘要缓存机制,实现宏观问题快速响应、微观问题精准检索的双层适配。
单篇资料入库完成、向量化就绪后,系统异步调用 LLM 生成全文核心摘要;
将摘要内容持久化写入 MySQL 的 source.summary 字段,永久留存;
同步缓存至 Redis,实现高速读取,降低数据库查询压力;
用户发起汇总、对比、全局梳理类问题时,get_sources_summary 工具优先读取 Redis 缓存;
Redis 未命中时,自动降级读取 MySQL 持久化摘要,保障服务稳定。
该机制实现了「先看摘要定框架,再查原文补细节」的问答逻辑,大幅提升多文档汇总、对比类复杂问题的回答效率与整体逻辑性。
十二、生成模块中的 RAG 使用:让内容创作不止依赖当前输入
YoudaoNoteLM 不仅支持智能问答,还赋能笔记整理、思维导图、题库生成、PPT 内容创作等多场景生成能力,所有生成模块均复用核心 RAGRetriever 检索能力,突破传统生成模型仅依赖用户即时输入内容的局限,联动全局知识库资源。
内容生成专属 RAG 流程:
系统根据用户输入的 Markdown 内容、Prompt 指令、生成内容类型,智能构建专属检索查询计划;
从用户当前输入内容中提取 inline 内置引用标识,锁定核心参考资料;
调用 RAGRetriever 从用户全局知识库中检索相关联的拓展资料;
对检索结果进行智能分级:强相关、弱相关、无关内容,精准过滤噪声;
合并内置引用与强相关 RAG 检索结果,整合优质参考素材;
支持可选联网搜索,补充实时热点、行业最新数据,弥补知识库时效性短板;
拼接标准化、高质量的生成上下文;
分发至 Note、Mindmap、Quiz、PPT 等各类子 Agent,完成多形态内容智能生成。
十三、删除与重建流程:全生命周期可运维的知识体系
优质的 RAG 系统不仅需要精准的检索与生成能力,更需要完善的资料运维能力。YoudaoNoteLM 覆盖资料删除、批量清理、重新入库、索引重置等全生命周期管理能力,支持知识库动态迭代更新。
精准删除:删除指定 Source 数据源时,同步清理 Milvus 中对应 source_id 的所有向量数据、MySQL 中的 ParentBlock 数据,无冗余残留;
批量运维:支持批量删除资料,系统逐个闭环清理向量、数据库、缓存数据,保证数据一致性;
重新入库:针对未向量化、入库失败、内容更新的资料,支持 ReimportAll 全量重入、ReimportSelected 选中重入;
索引重置:更换 Embedding 配置时,可一键清空用户整体 Milvus Collection,重置全量资料向量化状态,适配新的向量规则。
系统整体总结
YoudaoNoteLM 自研 RAG 系统构建了一套多源接入、结构化优化、分层切块、混合检索、智能回填、全维运维的完整技术体系,核心链路可高度概括为:
资料先统一转换为 Markdown,再通过 LLM 智能补充优化文档结构;随后依托标准化标题解析生成章节体系,分层切割为 ParentBlock 与 ChildChunk 双粒度内容;父级大块存入 MySQL 保障上下文完整,子级小块经语义增强后存入 Milvus 实现精准向量检索;问答与生成场景下,通过 Dense+BM25 混合召回、RRF 融合、重排筛选、Parent 上下文回填,最终将高质量、可溯源、逻辑完整的上下文交付给大模型,完成智能问答与多形态内容生成。
核心设计优势
精度与完整性兼顾:小块检索保精准,大块回填保完整,彻底解决传统 RAG 碎片化问题;
多源全域适配:支持文件、网页、音频、笔记全场景导入,实现知识一站式沉淀;
智能结构优化:AI 自动修复文档结构,降低用户资料规整成本;
双引擎混合检索:语义+关键词双维度召回,适配各类提问场景;
Agent 动态调度:按需调用检索工具,适配简单问答与复杂创作场景;
全生命周期运维:支持增删改重、缓存加速、索引重置,知识库可动态迭代。