취향을 위한 유닛 테스트는 불가능합니다: 관심 지점(POI) 파이프라인 구축하기

취향을 위한 유닛 테스트는 불가능합니다: 관심 지점(POI) 파이프라인 구축하기

어떤 랜드마크가 사용자에게 실제로 흥미로운지를 결정하는 것과 같은 "취향"이 필요한 기능을 구축하는 것은 전통적인 유닛 테스트로 해결할 수 없습니다. 주관성에 대한 객관적인 정답(ground truth)이 존재하지 않기 때문입니다. 대규모 언어 모델(LLM)은 학습 데이터를 기반으로 주관적인 평점을 제공할 수 있지만, 환각(hallucination)과 편향에 취약하므로, 주요 정보원보다는 보조적인 신호로 사용하는 것이 가장 효과적입니다.

지오스페이셜 데이터 처리를 위한 기술 스택

In the Long Run 앱을 위한 관심 지점(POI) 파이프라인을 구축하기 위해, 대규모 지오스페이셜 데이터셋을 처리하기 위해 Python, Apache Parquet, DuckDB의 조합이 사용되었습니다.

  • 데이터 소스: GeoNames는 Creative Commons 라이선스 하에 원시 위치 및 카테고리 데이터를 제공했습니다.
  • 저장 및 쿼리: 처리된 데이터는 효율성을 위해 Apache Parquet 파일에 저장되었으며, DuckDB가 SQL 기반 분석을 위한 쿼리 레이어로 사용되었습니다.
  • 지오 계산: 파이프라인은 Shapely와 Pyproj를 활용하여 경계 상자(bounding box)와 특정 러닝 경로에 대한 POI의 거리(기본값은 반경 50km)를 계산했습니다.
  • AI 통합: Claude (Anthropic)는 프로젝트 계획을 설계하고 파이프라인 단계를 구현하는 데 도움을 주는 코딩 에이전트로 사용되었습니다.

주목할 만한 가치를 위한 필터링 및 편향 극복

원시 지오스페이셜 데이터는 큐레이션된 사용자 경험을 제공하기에는 너무 노이즈가 많습니다. 수백만 개의 행을 관리 가능한 수준의 주목할 만한 랜드마크 세트로 이동시키기 위해서는 다단계 필터링 프로세스가 필요합니다.

초기 필터링 및 주목할 만한 신호

필터링은 행정 구역(국가, 주)을 제외하고 공원, 역사적 장소, 성, 기념물과 같은 특정 기능 코드를 선택하는 것으로 시작되었습니다. "주목할 만한" 장소를 식별하기 위해, 파이프라인은 GeoNames의 alternateNames.txt 데이터셋 내에서 발견되는 Wikipedia 링크를 주요 주목도 신호로 사용했습니다.

"영어권 편향"

파이프라인 구축 초기 단계에서 깨달은 점은 영어 Wikipedia 링크에 의존하는 것이 지리적 편향을 생성한다는 것이었습니다. 예를 들어, Route 66 (3,787 km)은 14,181개의 POI를 생성한 반면, Iceland ring road (1,321 km)는 511개만을 생성했습니다. 이는 데이터가 실제 흥미로운 장소의 밀도보다는 영어 사용자가 어디에 살고 Wikipedia를 편집하는지를 반영하고 있음을 나타냈습니다.

LLM의 역할: 주관적 취향 vs. 사실적 정확성

LLM은 POI에 대한 "주관적" 평점을 제공하기 위해 파이프라인에 통합되었지만, 사실적인 요약을 생성하는 데는 신뢰할 수 없다는 것이 증명되었습니다.

정보 보강에서의 환각

Anthropic의 Haiku 모델을 사용하여 요약을 생성하려는 시도는 심각한 환각으로 이어졌습니다. 모델은 때때로 위치를 오인식(예: Illinois의 Central Park를 Manhattan의 것과 혼동)하거나 인구 및 산의 높이에 관한 통계치를 조작해냈습니다. 결과적으로, 프로젝트는 가독성보다 정확성을 보장하기 위해 원래의 Wikipedia 요약을 사용하는 것으로 회귀했습니다.

평점 도구로서의 LLM

사실적 글쓰기에는 서툴지만, LLM은 주관적인 중요도 점수를 제공하는 데 성공했습니다. 이 점수는 단순히 여러 언어로 자동 번역된 Wikipedia 페이지가 많은 곳을 "흥미로운" 관심 지점 위로 끌어올리는 데 도움이 되었으며, 그렇지 않았다면 결과가 일반적인 인구 밀집 지역으로 치우칠 수 있었기 때문입니다.

"취향"을 검증증하는 데 따르는 Challenge

기능적 요구사항과 달리, 특정 경로에 대해 POI가 적절하게 느껴지는지 결정하는 "취향"의 품질은 red/green 유닛 테스트로 검증증할 수 없습니다.

경로별 변동성

데이터 요구사항은 지리적 위치에 따라 크게 다릅니다. 튜닝하지 않으면 밀집도가 높은 지역을 통하는하는 경로은 모든 작은 마을을 보여주는 "인구 밀집도 지도"가 "인구 밀집도 지도"가 될 수 있습니다. 이를 해결하기 위해 다음과 같은 경로별 파라미터가 도입되었습니다:

  • 사용자 정의 인구 필터.
  • 객관적인 wiki 링크 수에 비해 주관적인 LLM 점수를 더 무겁게 가중치 부여.
  • 도시 클러스터와 시골 경로 사이의 균등한 분포를를 보장하기 위한 지리적 반경 필터.

자동화의 한계

무엇이 "흥미로운" 볼거리에 대한 정답답이 존재하지 않기 때문에, 성공의 평가는 수동적이고 반복적인 과정으로 남습니다. 커뮤니티 논의에서 언급되었듯이, 취향은 종종 "명세세 Specification을 작성할 때 잊어버린 부분, 그리고 작성하려고 노력해도 작성할 수 없는 부분"입니다.

"POI의 정답답이 존재하지 않기 때문에 검증은 논리적으로 추론론할 수 없으며, 취,향의 유닛 테스트는 불가능합니다."

커뮤니티 인사이트: 취향과 AI

개발자들 사이의 논의의견견의는 AI가 프로세스를 보조할 수 있지만, "선택"이라는 인간의 요소가 핵심적인 경로입니다.

  • 취향의 외부화: 어떤 이들은 취향의 유프리티 Specification을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사
  • Governance over Generation: AI 에이전트의 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가치치는 가양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사양양을 사-
  • Alternative Signals: 더 객관적인 주목도 신호를 찾는다면, Wikimedia 프로젝트 전반의 페이지 뷰를 집계합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기합기대
  • Governance over Generation: AI 에이전트의 가치는 생성(generation)에서 거버넌스(governance)로 이동하고 있습니다. 즉, 인간의 역할은 AI가 생성한 200줄의 결과물 중 원하는 미적 또는 기능적 목표에 부합하는 80줄을 골라내는 데 있습니다.
  • Alternative Signals: 더 객관적인 주목도 신호를 찾는다면, Wikimedia 프로젝트 전반의 페이지 양을 집계하는 QRank와 같은 도구를 사용하여 단순한 링크 수에 대한 더 데이터 기반의 대안을 제공합니다.

Sources