RAGAL: A Frugal, Fully Local Retrieval-Augmented Assistant for Technical Support at a Government Agency
本文介绍了 RAGAL,这是一个为罗马尼亚政府机构设计的全本地化、资源受限的检索增强型助手,它通过优先考虑检索工程和嵌入模型微调而非更大的生成模型,在处理敏感数据时实现了高性能,同时引入了诸如锚点蒸馏(anchor distillation)以防止 SQL 幻觉,以及基于 CPU 的离线评判器以在无需云端依赖的情况下评估输出等创新技术。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你拥有一个超级聪明的机器人图书管理员,它能阅读数百万本书并回答你提出的任何问题。通常,为了让这个机器人工作,你必须将你的问题和书籍发送到位于遥远数据中心的庞大云端大脑。但如果你的图书馆里包含严禁离开建筑物的顶级政府机密文件呢?如果你的完全无法使用云端呢?这就是检索增强生成(Retrieval-Augmented Generation, RAG)的核心谜题。把 RAG 想象成一场两步走的舞蹈:首先,机器人快速扫描特定的文档堆,找到最相关的页面(检索);第二,它利用这些页面写出聪明且准确的答案(生成)。对于许多机构来说,核心问题是:我们能否完全在自己的围墙之内,仅使用一台普通的笔记本电脑,在不向外界发送任何字节的情况下,构建出这样一个机器人?
这篇论文讲述了 RAGAL 的故事,这是一个由罗马尼亚政府机构发起的项目,他们构建了这样一个机器人。他们面临着三个听起来几乎不可能实现的规则:数据绝不能离开他们的建筑;机器人只能起草答案(必须由人类按下“发送”键);而且他们必须在只有 8 GB 内存的一台普通消费级笔记本电脑上完成这一切。他们没有放弃,而是将这种“节俭”的设置变成了巧妙工程设计的实验室。他们发现,成功的秘诀不在于购买一个更大、更昂贵的“大脑”,而在于教机器人如何更好地“寻找”信息。通过在真实的业务工单上微调他们的搜索引擎,并使用一种叫做“锚点蒸馏”(anchor distillation)的巧妙技巧来防止机器人编造虚假的数据库命令,他们创建了一个既安全又高效的系统。他们甚至构建了一个“慢动作裁判”——一个运行在 CPU 上极其缓慢、无法进行实时对话的大型 AI 模型,但非常适合在夜间为机器人的作业评分。其结果是一个蓝图,展示了任何拥有严格隐私规则的机构,如何在无需云端的情况下,构建出一个得力的 AI 助手。
RAGAL 的故事:一个永远不出门的机器人
认识一下 RAGAL,它是罗马尼亚一家管理农村投资资金的政府机构的新助手。该机构每天处理数以千计的敏感文档和业务工单。由于这些文件包含公民的隐私数据,它们被严格禁止离开机构大楼。这意味着他们无法使用通常存在于云端的强大 AI 工具。他们必须构建自己的“全本地化”机器人,而且必须在一台显存仅有 8 GB 的消费级笔记本电脑上完成这项工作——按 AI 标准来看,这简直微不足道。
团队必须遵守三条严格的规则,他们称之为约束条件:
- 零外泄(Zero Egress): 哪怕是一丁点数据也绝不能离开大楼。不能向云端发送问题,不能从互联网下载训练数据。一切都必须在他们自己的硬件上发生。
- 只读(Read-Only): 机器人是一个撰稿人,而不是执行者。它可以起草 SQL 代码(用于修复数据库错误的指令)或编写解释,但它绝不能实际运行这些命令。必须由人类进行审核并执行。
- 节俭(Frugality): 整个系统都是在单台消费级笔记本电脑上进行开发、训练和测试的。
重大发现:更好的搜索胜过更大的大脑
团队最初有一个普遍的假设:要获得更好的答案,你需要一个更大、更聪明的 AI 模型。但他们很快发现这是错误的。他们的第一个重大胜利并非来自升级“大脑”(生成器),而是来自升级“搜索引擎”(检索器)。
他们意识到,仅仅要求机器人寻找文档是不够的。他们需要教它“如何”寻找。他们构建了一个混合搜索系统,结合了两种方法:“稠密”(dense)搜索可以理解词义,而“稀疏”(sparse)搜索则寻找精确的关键词匹配。他们还添加了一个“交通警察”(意图路由),根据问题决定去查看哪类文档。如果你询问关于流程的问题,它会查找手册;如果你询问关于数据库修复的问题,它会查找旧的业务工单。
这个简单的改变是一个巨大的升级。在进行任何高级训练之前,这种混合搜索将他们的成功率从 62% 提升到了 81%。这是他们做出的最廉价且最有效的改进。
8 GB 的奇迹:在笔记本电脑上进行训练
下一个挑战是在他们自己的数据上训练搜索引擎。他们大约有 15,000 份已解决的业务工单和内部文档。他们希望教搜索引擎理解该机构的特定语言。
通常,训练这样一个模型需要一台超级计算机。但团队只有 8 GB 内存。他们发现了一个隐藏的陷阱:在他们的 Windows 笔记本电脑上,当显存耗尽时,显卡驱动程序会在后台静默地将数据“溢出”到常规计算机内存中,这使得训练变得极其缓慢,却从未导致崩溃。这就像是在跑步马拉松时背着一个你甚至不知道自己背着的水袋,而水袋正在不断增加重量。
为了解决这个问题,他们使用了一个特殊的配方:
- 8-bit 优化器: 一种缩小计算机需要进行的数学运算的方法。
- 梯度检查点(Gradient Checkpointing): 一种通过重新计算某些步骤而非存储它们来节省内存的技术。
通过这些技巧,他们竟然在单台笔记本电脑上仅用 72 分钟 就完成了搜索引擎的完整训练。结果令人震惊:在排名前 10 的结果中找到正确文档的能力(Recall@10)从 0.663 跳升至 0.850。
无声的陷阱:一个领域,两个世界
这里是故事变得棘手的地方。当他们仅在业务工单上训练搜索引擎时,它在寻找工单方面变得非常出色。但是,在一种无声且隐形的方式下,它在寻找官方文档方面的表现变差了。训练“扭曲”了搜索引擎的理解,让它忘记了如何处理正式文档。
他们直到构建了一个专门针对文档的独立测试集时才发现这一点。如果没这么做,他们会以为系统很完美,而实际上它在处理一半的数据时其实是失败的。为了在不发送数据到云端的情况下解决这个问题,他们使用了一个巧妙的技巧叫做 GenQ。他们使用本地 AI 为他们的文档生成虚假问题,从而创建一个平衡了这两个世界的全新训练集。这修复了损伤,使搜索引擎能够再次出色地同时处理工单和文档。
安全第一:阻止机器人撒谎
由于机器人是在起草数据库命令,团队必须确保它绝不会编造内容(幻觉)。他们使用了名为 锚点蒸馏(Anchor Distillation) 的技术。他们没有让 AI 从头开始编写 SQL 代码,而是直接复制过去工单中真实、可运行的代码,只允许 AI 在代码周围编写文字(解释其功能及使用场景)。这使得机器人不可能发明虚假的数据库命令,因为代码本身就是一个真实、经过验证的“锚点”。
他们还发现 脱敏 PII(隐藏姓名和 ID 号码)有一个意想不到的好处。当他们在训练前将真实姓名替换为诸如 <user> 或 <project_id> 之类的占位符时,机器人的回答反而变得更好了。它不再从旧工单中复制特定的人名,而是开始编写可以适用于任何人的灵活模板。
慢动作裁判
最后,如果你不能使用基于云端的 AI 来检查工作,你该如何给一个机器人评分呢?团队构建了一个“慢动作裁判”。他们使用了一个拥有 7440 亿参数的巨型 AI 模型,这个模型太大,无法快速运行。它运行在计算机的主处理器(CPU)上而非显卡上,随着运行不断从硬盘中读取数据。它运行得极其缓慢,为一个答案的评分大约需要 10 到 13 分钟。但正因为它足够聪明,它非常适合在夜间为机器人的作业评分。
他们发现这个慢动作裁判是一个很好的“第二意见”,但并不完美。它有时会与人类专家产生分歧,尤其是在判断“最好”或“最差”的答案时。教训是:利用裁判来发现趋势和模式,但始终要由人类对具体的判定进行复核。
总结
RAGAL 项目证明了,你不需要超级计算机或云端也能构建出一个强大且安全的 AI 助手。通过专注于巧妙的工程设计——更好的搜索策略、细致的数据处理以及严格的安全规则——一个只有单台笔记本电脑的小团队也可以创造出一个尊重隐私并提供真实价值的系统。他们表明,有时候,最好的前进方式是走得慢一点,保持一切本地化,并密切关注每一个细节。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。