RAG效果不好?试试Skill的references!
很多人听到知识库,第一反应是搭 RAG,切片、Embedding、向量数据库、rerank、召回。事实上,在26年8月,绝大多数情况下 RAG 都不是最好的选择,Skill 的 references 会更好。
很多人听到知识库,第一反应是搭 RAG,切片、Embedding、向量数据库、rerank、召回。
事实上,在26年8月,绝大多数情况下 RAG 都不是最好的选择,Skill 的 references 会更好。
一、RAG 在做什么?
RAG 的全称是 Retrieval-Augmented Generation,中文译为检索增强生成。
它先处理资料,把文档切成几百 Token 大小的片段,通过 Embedding 模型把每个片段变成一组向量,随后存入向量数据库。用户提问时,问题也会被转成向量。系统找出语义上最接近的几个片段,把它们塞进模型的上下文,最后生成答案。
但,文档一旦被切片,原有的章节、前后条件、引用关系就可能丢失或失真。
query 的向量加语义检索也不一定就满足业务需求。用户问「退货政策」,系统可能同时取回淘宝、京东和亚马逊的规则。某个产品编号、错误码或函数名,也可能因为语义信息很少而被向量检索漏掉。
二、Skill 里的 Reference 在做什么
Skill 里的 references 走了另一条路。文档保持为普通文件,目录名、文件名、章节和前后关系都还在。SKILL.md 告诉 Agent 什么情况该读哪类资料,Agent 再按需打开。
Anthropic 在「Agent Skills 设计说明」中把这个机制称为渐进式披露。Agent 启动时先看到 Skill 的 name 和 description。
任务命中后,它再读 SKILL.md。遇到具体问题时,Agent 可以先看目录,根据文件名判断,用 Glob 找文件,用 Grep 搜精确词,再打开命中的章节。前一次查找的结果会改变下一次查找的方向。整个过程没有向量化,和 RAG 向量库返回的 Top-K 片段有本质差别。
三、两者的区别?
第一个区别是处理时机。
RAG 在 query 前,先做资料的切片、向量化和索引。Reference 则是把资料放在文件系统中,Agent 遇到问题后再决定查什么、读多少、下一步去哪里。
第二个区别是基本单位。
RAG 的基本单位是 chunking 片段,召回时容易切断前后联系。Reference 的基本单位可以是保留完整语义的一份文件、一个章节、一个表格、一段脚本。
第三个区别是谁在做判断。
RAG 的初筛由检索算法完成,Agent 通常只看到筛选后的内容。Reference 模式里,Agent 能看到路径、文件名和邻近文件,可以基于当前任务渐进式地按需检索。