Zing 论坛

正文

Etter:用大语言模型解析自然语言地理查询的开源工具

Etter 是一个基于大语言模型的 Python 库,能够将自然语言地理位置查询转换为结构化的地理过滤器,支持多语言查询理解和丰富的空间关系提取。

地理信息自然语言处理大语言模型空间查询GISPython开源
发布时间 2026/05/12 13:56最近活动 2026/05/12 13:59预计阅读 4 分钟
Etter:用大语言模型解析自然语言地理查询的开源工具
1

章节 01

导读 / 主楼:Etter:用大语言模型解析自然语言地理查询的开源工具

Etter 是一个基于大语言模型的 Python 库,能够将自然语言地理位置查询转换为结构化的地理过滤器,支持多语言查询理解和丰富的空间关系提取。

2

章节 02

项目背景与设计哲学

Etter 这个名称源自瑞士德语,意为"村庄或社区的边界"。这个命名本身就暗示了项目的核心使命:在自然语言与地理空间数据之间建立清晰的边界映射。

项目的核心设计原则非常明确:Etter 只负责提取查询中的地理过滤器,不处理功能或活动识别,也不执行实际的搜索操作。这种单一职责的设计让 Etter 可以专注于做好一件事——理解空间关系。例如,当用户查询"洛桑附近的徒步路线"时,Etter 会提取出"洛桑附近"这个地理约束,而"徒步路线"这样的功能类别则由上层应用处理。

3

章节 03

核心功能与技术特性

Etter 提供了丰富的空间关系支持,远超简单的"在...之内"或"靠近"。它能够理解并解析:

  • 包含关系:精确边界匹配(in)
  • 邻近关系:上下文感知的距离计算(near),默认 5 公里,LLM 会根据活动类型和特征尺度智能推断
  • 线性特征:沿河流或道路的 500 米缓冲区(along)
  • 方位关系:北、南、东、西等八个方向的 10 公里扇形区域
  • 特殊地形:湖岸 1 公里环形缓冲区(on_shores_of)、河流左右岸(left_bank/right_bank)
  • 中心区域:通过侵蚀算法提取区域中心(in_the_heart_of)

多语言支持是 Etter 的另一大亮点。它原生支持英语、德语、法语、意大利语等多种语言的查询解析,这对于瑞士这样多语言并存的国家尤为重要。系统使用 Pydantic 模型提供完整的类型安全,并支持流式输出,可以实时展示推理过程,为交互式用户界面提供透明度和响应性。

4

章节 04

技术实现与使用方式

Etter 采用模块化的架构设计,核心组件包括 GeoFilterParser 解析器、空间关系配置(SpatialRelationConfig)、以及地理数据源(GeoDataSource)。这种分层设计使得系统既灵活又可扩展。

在 LLM 提供方面,Etter 保持中立,支持 OpenAI、Anthropic 以及本地部署的开源模型。用户可以根据数据隐私要求和性能需求自由选择。项目使用 uv 进行依赖管理,安装非常简便:

pip install etter

如果需要 PostGIS 数据源支持,可以安装额外依赖:

pip install etter[postgis]

使用示例展示了其简洁的 API 设计。开发者只需初始化语言模型和解析器,然后调用 parse 方法即可:

from langchain.chat_models import init_chat_model
from etter import GeoFilterParser

llm = init_chat_model(model="gpt-4o", temperature=0)
parser = GeoFilterParser(llm=llm, confidence_threshold=0.6)
result = parser.parse("洛桑以北五公里")

解析结果是一个结构化的 GeoQuery 对象,包含查询类型、空间关系、参考位置、缓冲区配置和置信度评分等完整信息。

5

章节 05

实际应用场景与价值

Etter 的应用场景非常广泛。在旅游和户外领域,它可以 powering 自然语言搜索,让用户用日常语言查找"苏黎世火车站步行可达的景点"或"莱芒湖南岸的餐厅"。在物流和配送领域,它可以解析复杂的地址描述和区域约束。在城市规划和应急响应中,它可以快速理解"医院三公里范围内的学校"这类空间查询。

项目提供的演示 API 展示了完整的端到端工作流程,结合 SwissNames3D 地理数据,实现了从自然语言查询到实际搜索区域的完整转换。这种"查询解析 + 地理解析 + 空间运算"的三层集成架构,为开发者提供了可直接部署的参考实现。

6

章节 06

开源生态与社区贡献

作为开源项目,Etter 采用 Release Please 自动化发布流程,遵循 Conventional Commits 规范。代码质量通过 pytest、ruff 和类型检查工具严格把控。项目文档详细,包含架构说明(ARCHITECTURE.md)和丰富的示例查询,降低了上手门槛。

值得注意的是,Etter 项目由 Camptocamp 公司赞助开发。Camptocamp 是欧洲知名的开源 GIS 解决方案提供商,长期参与 PostGIS、GeoServer、OpenLayers 等核心开源项目的开发和维护。这种企业级背书为项目的长期发展提供了保障。

7

章节 07

总结与展望

Etter 代表了地理信息检索领域的一个重要方向:利用大语言模型的语义理解能力,弥合自然语言表达与结构化空间查询之间的鸿沟。它的设计哲学——专注做好地理过滤提取这一件事——体现了 Unix 哲学的精髓,也为类似工具的设计提供了参考。

对于需要处理地理位置查询的开发者来说,Etter 提供了一个开箱即用的解决方案,无需从零开始构建复杂的 NLP 管道。随着大语言模型能力的持续提升和多模态技术的发展,我们可以期待 Etter 这类工具在未来支持更丰富的空间表达方式,比如结合图像的地标识别、语音输入的查询解析等。

项目地址:https://github.com/geoblocks/etter