AI自动写代码已不新鲜,但在遥感编程领域,如何生成更精准、实用的代码仍值得探索。本文介绍了一项独特的GEE代码自动生成技术,是一个比较有意思的成果。如果你对AI辅助编程、大模型在遥感的应用感兴趣,这篇文章将为你解析其实现路径与应用效果。
最近刷paper又看到一篇有意思的文章,利用大模型生成Google GEE的JavaScript代码,作者是来自武大的Wu HuaYi、Hou Shuyang团队。
和常规意义上直接用GPT或者Claude自动写代码不同,作者也没有做大模型微调,而是使用了RAG作为代码生成的参考,很好玩很强大,认真的读完了全文,做个记录。
文章地址:https://arxiv.org/abs/2412.05587
大模型展现出了强大的编码能力,已经基本可以让非专业人员快速上手coding工作,但在地理空间编程上,也总会有各类错误、幻觉问题。
Google Earth Engine(GEE)作为一个强大的云平台,提供了丰富的遥感数据和计算资源。
地理空间代码的编写具有不太一样的特殊性,与通用编程语言不同,地理空间代码的操作符命名、功能设计和组合策略具有高度的领域特异性。
例如,GEE中的操作符(如reduceRegion、clip等)专门用于处理遥感影像和地理空间数据,其语法和使用规则与通用编程语言的操作符有很大差异。
为了应对这一挑战,作者提出了GEE-OPs,一个专门为GEE平台设计的地理空间操作符知识库,旨在通过大语言模型(LLMs)提升代码生成的效率和准确性。
先通俗易懂的描述下这篇文章的技术路径。
通过收集大量已有GEE代码,提取其内在逻辑关系,构建GEE的代码编写知识,然后将该知识库与大模型结合运用RAG,让大模型能根据知识库中的GEE代码知识生成代码,从而显著提升代码生成的准召。
首先,研究团队从GitHub、Zenodo和HuggingFace等开源平台收集高质量的地理空间脚本和官方操作符语法知识。共收集了295,943个脚本,总大小为5.45 GB。
然后,通过字符规则过滤掉非可执行代码和多余注释,保留核心功能代码。
再使用AST技术对脚本进行语法检查和验证,确保提取的操作符关系准确无误。
构建四个知识表:
操作符语法知识表:记录操作符的名称、语法和使用规则。例如,
reduceRegion
操作符的输入参数、输出类型等。
操作符关系频率表:统计操作符之间的关联频率。例如,
clip
操作符后常常跟随reduceRegion
操作符。
操作符频繁模式表:通过频繁项集挖掘技术,提取高频操作符组合。例如,
clip
->reduceRegion
->export
是一个常见的工作流。
操作符关系链表:描述操作符之间的执行顺序和依赖关系。例如,
clip
操作符的输出是reduceRegion
操作符的输入。
这个知识库便是文章的核心,即让大模型更好的掌握GEE代码知识。
知识库做好了,是如何将它用起来呢。
以下给出了一个完整的流程。
我来做一个解释:
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后的编程能力,有什么不一样
: )
往期推荐:
NASA与微软联合推出“Earth Copilot”,“智能助手“或成为行业产品标配
欢迎交流
笔者长期从事人工智能、遥感、大模型等业务
欢迎添加微信交
微信扫一扫
关注该公众号