1. RAG技术演进与渐进式加载的思考
从事RAG(检索增强生成)技术交付两年多来,我一直被各种文档分块(Chunk)问题所困扰。直到最近接触到开源的PageIndex和新兴的Skill技术,才让我对知识库检索有了全新的认识。Skill技术展现的渐进式加载机制,为RAG系统设计提供了极具启发性的思路。
在传统AI助手如Cursor/Claude的Skill机制中,模型不会一次性将所有SKILL.md和参考资料全部加载到上下文。相反,它采用了一种更智能的按需加载策略:首先根据技能描述判断是否需要使用该技能,只有在确认需要时才会读取SKILL.md文件;当遇到PDF或Excel等特定文件类型时,再按照预设规则读取对应的处理指南(如pdf_reading.md、excel_reading.md)。这种分层、按需的加载方式显著提升了资源利用效率。
这让我开始思考:知识库检索是否也可以采用类似的渐进式策略?而不是像传统RAG那样,一开始就进行全量文档切块、向量检索,然后一次性将top-k结果全部塞入上下文。或许我们可以先判断需要查询哪些内容,再逐步加载相关信息片段。基于这一思路,我开发了这套"分层索引导航+渐进式检索"的本地知识库Skill方案,它与传统RAG走了完全不同的技术路线。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Skill渐进式加载的核心机制解析
2.1 Skill技术的工作原理
Skill技术的运作流程非常值得深入研究。当模型遇到一个新问题时,它会先查看各个Skill的简短描述(通常只有几句话),快速判断是否需要激活某个Skill。只有在确认需要后,才会进一步读取该Skill的详细说明文件(SKILL.md)。这些说明文件中通常会包含类似"处理PDF前必须先阅读references/pdf_reading.md"的规则,因此只有当真正需要处理PDF文件时,模型才会去读取对应的处理指南。
这种机制带来了几个显著优势:
- 上下文负载最小化:不会一次性加载所有可能用到的材料
- 资源按需分配:根据实际处理步骤和文件类型动态加载所需资源
- 执行效率提升:避免了不必要的内容加载和处理开销
2.2 渐进式加载在知识库检索中的应用
将Skill的渐进式加载思路迁移到知识库检索中,我们可以构建一个全新的检索范式:
分层加载机制:
- 首先读取根目录的FileIndex.md,了解知识库的整体结构(如安全、财报、电商、AI报告等分类)
- 根据用户问题定位到相关分类后,再读取该子目录下的FileIndex.md
- 通过多级"小索引"逐步缩小检索范围,替代传统的一次性全库向量检索
按类型按需加载:
- 对于PDF文件:不直接整本加载,而是先按照预设规范(存储在references中)使用pdftotext或pdfplumber提取文本或表格
- 对于Excel文件:先学习pandas数据处理方法,再按问题需求筛选特定列和行
- 对于Markdown/文本文件:使用grep定位关键词,按行号进行局部读取
多轮渐进检索:
- 每轮检索只做一次精确定位并加载一小段上下文
- 如果信息不足,则进行下一轮检索,调整关键词或更换文件
- 设置最大轮次限制(如5轮),避免无限检索
这种检索流程的核心是先导航(通过索引文件)、再学习方法(读取处理指南)、最后在限定范围内进行精确查找(grep+局部读取),通过多轮迭代逐步完善检索结果。
