章节 01
导读 / 主楼:Etter:用大语言模型解析自然语言地理查询的开源工具
Etter 是一个基于大语言模型的 Python 库,能够将自然语言地理位置查询转换为结构化的地理过滤器,支持多语言查询理解和丰富的空间关系提取。
正文
Etter 是一个基于大语言模型的 Python 库,能够将自然语言地理位置查询转换为结构化的地理过滤器,支持多语言查询理解和丰富的空间关系提取。
章节 01
Etter 是一个基于大语言模型的 Python 库,能够将自然语言地理位置查询转换为结构化的地理过滤器,支持多语言查询理解和丰富的空间关系提取。
章节 02
Etter 这个名称源自瑞士德语,意为"村庄或社区的边界"。这个命名本身就暗示了项目的核心使命:在自然语言与地理空间数据之间建立清晰的边界映射。
项目的核心设计原则非常明确:Etter 只负责提取查询中的地理过滤器,不处理功能或活动识别,也不执行实际的搜索操作。这种单一职责的设计让 Etter 可以专注于做好一件事——理解空间关系。例如,当用户查询"洛桑附近的徒步路线"时,Etter 会提取出"洛桑附近"这个地理约束,而"徒步路线"这样的功能类别则由上层应用处理。
章节 03
Etter 提供了丰富的空间关系支持,远超简单的"在...之内"或"靠近"。它能够理解并解析:
多语言支持是 Etter 的另一大亮点。它原生支持英语、德语、法语、意大利语等多种语言的查询解析,这对于瑞士这样多语言并存的国家尤为重要。系统使用 Pydantic 模型提供完整的类型安全,并支持流式输出,可以实时展示推理过程,为交互式用户界面提供透明度和响应性。
章节 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 对象,包含查询类型、空间关系、参考位置、缓冲区配置和置信度评分等完整信息。
章节 05
Etter 的应用场景非常广泛。在旅游和户外领域,它可以 powering 自然语言搜索,让用户用日常语言查找"苏黎世火车站步行可达的景点"或"莱芒湖南岸的餐厅"。在物流和配送领域,它可以解析复杂的地址描述和区域约束。在城市规划和应急响应中,它可以快速理解"医院三公里范围内的学校"这类空间查询。
项目提供的演示 API 展示了完整的端到端工作流程,结合 SwissNames3D 地理数据,实现了从自然语言查询到实际搜索区域的完整转换。这种"查询解析 + 地理解析 + 空间运算"的三层集成架构,为开发者提供了可直接部署的参考实现。
章节 06
作为开源项目,Etter 采用 Release Please 自动化发布流程,遵循 Conventional Commits 规范。代码质量通过 pytest、ruff 和类型检查工具严格把控。项目文档详细,包含架构说明(ARCHITECTURE.md)和丰富的示例查询,降低了上手门槛。
值得注意的是,Etter 项目由 Camptocamp 公司赞助开发。Camptocamp 是欧洲知名的开源 GIS 解决方案提供商,长期参与 PostGIS、GeoServer、OpenLayers 等核心开源项目的开发和维护。这种企业级背书为项目的长期发展提供了保障。
章节 07
Etter 代表了地理信息检索领域的一个重要方向:利用大语言模型的语义理解能力,弥合自然语言表达与结构化空间查询之间的鸿沟。它的设计哲学——专注做好地理过滤提取这一件事——体现了 Unix 哲学的精髓,也为类似工具的设计提供了参考。
对于需要处理地理位置查询的开发者来说,Etter 提供了一个开箱即用的解决方案,无需从零开始构建复杂的 NLP 管道。随着大语言模型能力的持续提升和多模态技术的发展,我们可以期待 Etter 这类工具在未来支持更丰富的空间表达方式,比如结合图像的地标识别、语音输入的查询解析等。