cover_image

巧用RAG解锁GEE代码自动生成,遥感开发的AI新工具

xiaotu 空天感知 2025年01月06日 01:30

AI自动写代码已不新鲜,但在遥感编程领域,如何生成更精准、实用的代码仍值得探索。本文介绍了一项独特的GEE代码自动生成技术,是一个比较有意思的成果。如果你对AI辅助编程、大模型在遥感的应用感兴趣,这篇文章将为你解析其实现路径与应用效果。

最近刷paper又看到一篇有意思的文章,利用大模型生成Google GEE的JavaScript代码,作者是来自武大的Wu HuaYi、Hou Shuyang团队。

和常规意义上直接用GPT或者Claude自动写代码不同,作者也没有做大模型微调,而是使用了RAG作为代码生成的参考,很好玩很强大,认真的读完了全文,做个记录。

图片

文章地址:https://arxiv.org/abs/2412.05587

GEE代码生成的特殊性

大模型展现出了强大的编码能力,已经基本可以让非专业人员快速上手coding工作,但在地理空间编程上,也总会有各类错误、幻觉问题。

Google Earth Engine(GEE)作为一个强大的云平台,提供了丰富的遥感数据和计算资源。

地理空间代码的编写具有不太一样的特殊性,与通用编程语言不同,地理空间代码的操作符命名、功能设计和组合策略具有高度的领域特异性。

例如,GEE中的操作符(如reduceRegion、clip等)专门用于处理遥感影像和地理空间数据,其语法和使用规则与通用编程语言的操作符有很大差异。

为了应对这一挑战,作者提出了GEE-OPs,一个专门为GEE平台设计的地理空间操作符知识库,旨在通过大语言模型(LLMs)提升代码生成的效率和准确性。

如何构建GEE-OPs

先通俗易懂的描述下这篇文章的技术路径。

通过收集大量已有GEE代码,提取其内在逻辑关系,构建GEE的代码编写知识,然后将该知识库与大模型结合运用RAG,让大模型能根据知识库中的GEE代码知识生成代码,从而显著提升代码生成的准召。

数据收集与组织

首先,研究团队从GitHub、Zenodo和HuggingFace等开源平台收集高质量的地理空间脚本和官方操作符语法知识。共收集了295,943个脚本,总大小为5.45 GB。

然后,通过字符规则过滤掉非可执行代码和多余注释,保留核心功能代码。

图片

再使用AST技术对脚本进行语法检查和验证,确保提取的操作符关系准确无误。

统计分析与构建

构建四个知识表:

操作符语法知识表:记录操作符的名称、语法和使用规则。例如,reduceRegion操作符的输入参数、输出类型等。

操作符关系频率表:统计操作符之间的关联频率。例如,clip操作符后常常跟随reduceRegion操作符。

操作符频繁模式表:通过频繁项集挖掘技术,提取高频操作符组合。例如,clip -> reduceRegion -> export是一个常见的工作流。

操作符关系链表:描述操作符之间的执行顺序和依赖关系。例如,clip操作符的输出是reduceRegion操作符的输入。

这个知识库便是文章的核心,即让大模型更好的掌握GEE代码知识。

如何使用Gee-OPs

知识库做好了,是如何将它用起来呢。

以下给出了一个完整的流程。

图片

我来做一个解释:

  • 1.整个过程使用Langchain做大模型开发框架,并将已有的GEE-OPs做好向量知识库。

  • 2.当用户输入一个编程指令时候(如裁剪区域并计算NDVI),将这条指令Embedding处理,应用FAISS工具做相似度查询,获取最匹配的代码知识条目。

  • 3.接下来,将用户指令、知识条目生成新的Prompt,用这个prompt指挥大模型完成代码生成。

本质上就是一个RAG过程。如果你做过RAG相关工作,应该会很熟悉以上流程。

效果评估

使用以上流程来进行代码生成。

作者引入了一个效果评测数据集,GeoCode-Bench,其包含了20个代表任务,涵盖各类地理空间问题,如数据处理、地图生成、空间分析等。

基于以上内容,作者分别在4o-mini、LLaMa3-8B、Code Llama-13B进行了测试,如下图。

图片

相比无任何加强措施的zero-shot,使用GEE-OPs的RAG模式生成的代码,其可执行度、准确度都有了20%-50%左右的提升,效果很显著。

成果共享

作者将相关代码成果公开发布,感兴趣可以尝试。

https://figshare.com/s/6d42f6335f3f6254ea14

图片

一些想法

1. 勇敢拥抱AI Coding

笔者近期一直使用Cursor等工具来辅助进行coding工作,非常方便产品经理做一些快速的验证工作,以及跑出MVP产品。

(关于辅助coding提升工作效率,后面专门开帖再写写心得)

2.RAG落地的新思路

本篇文章讲到的GEE代码生成思路很新颖,将传统的RAG做知识搜索,变为生产力工具,是一个很有意思的方向。本篇解读,不可避免的损失了一些内容,建议做大模型的读者可以看看原文,会很有收获。

3.GEE代码自动生成还有其他解

同时,针对GEE的代码生成,最近也看到geemap中多了一些新的AI库,实验了下,发现是以特殊的prompt外加agent思路来做,后续会再写文做个解释评测。

4.GEE OPs和最强模型谁更强?

目前根据网友们的普遍反馈,Claude和o1 pro在编程方面的能力要最强,加上cursor、windsurf等工具的加持,自动生成的代码很多可以一遍过。

也许作者团队可以再测测这些地表最强模型在zeroshot和rag后的编程能力,有什么不一样 

: )


往期推荐:

也说遥感共性产品,行业需要什么样的遥感产品?

看水利部水利遥感星座战略布局,机遇与挑战并存

Umbra开源雷达影像下载工具开发实践

NASA与微软联合推出“Earth Copilot”,“智能助手“或成为行业产品标配

图片


图片

欢迎交流

笔者长期从事人工智能、遥感、大模型等业务

欢迎添加微信交


微信扫一扫
关注该公众号

继续滑动看下一个
因网络连接问题,剩余内容暂无法加载。
空天感知
向上滑动看下一个