J Navig Port Res > Volume 50(3); 2026 > Article
해양 사고 및 기상 데이터 연계 지식 그래프와 GraphRAG 기반 지능형 질의응답 시스템 구축

요 약

해양 사고 원인 규명을 위해서는 단순 통계를 넘어 환경 요인과 인과관계의 입체적 파악이 필요하다. 본 연구는 파편화된 사고 기록과 기상 관측 데이터를 시공간적으로 연계한 온톨로지 기반 해양 안전 지식 그래프 및 지능형 질의응답 시스템을 제안한다. 2020년부터 2024년까지의 14,700건의 사고 데이터와 실측 기상 데이터를 BallTree 알고리즘으로 매핑하고, 텍스트 언어화 기법을 도입해 의미론적 추론 성능을 향상시켰다. 이를 바탕으로 거대 언어 모델이 질의 의도를 분석해 Text2Cypher와 VectorCypher를 동적 라우팅하는 아키텍처를 구현하였다. 맞춤형 LLM-as-a-Judge 평가 결과, 제안 시스템은 사실 정확도 4.28점, 완전성 4.36점(5점 만점) 및 도구 라우팅 정확도 100%를 기록하며 대조군 대비 우위를 보였다. 기존 관계형 데이터베이스의 다중 홉 탐색 제약과 모델의 환각 현상을 극복하고, 내재적 정보를 연산적으로 추론하여 실무적 의사결정 지원의 유효성을 입증하였다. 구체적인 기상 맥락 파악이 어려웠던 94%의 사고 데이터에 환경 변수를 부여해 복합 탐색을 가능하게 한 실증적 의의를 지니며, 향후 능동형 해양 안전 의사결정 지원 시스템으로의 확장 가능성을 제시한다.

ABSTRACT

To identify the causes of marine accidents, it is essential to understand complex environmental factors and causal relationships that go beyond simple statistics. This study proposes an intelligent question-answering system that utilizes an ontology-based knowledge graph to spatiotemporally link fragmented accident records with meteorological data. Using the BallTree algorithm, 14,700 accident records from 2020-2024 were mapped to observed weather data, and a text verbalization technique was introduced to enhance semantic reasoning. Based on this graph, a search architecture was implemented to dynamically route queries to either Text2Cypher or VectorCypher by analyzing intent via a large language model (LLM). A customized LLM-as-a-Judge evaluation demonstrated that the proposed system outperformed the baseline, achieving a factual accuracy of 4.28, a completeness of 4.36 (out of 5.0), and 100% tool routing accuracy.The system successfully overcame the multi-hop search limitations of relational databases and mitigated LLM hallucinations, proving effective in supporting practical decision-making by computationally inferring implicit information. By assigning environmental variables to 94% of accident data, this study enables complex multi-dimensional searches and establishes a foundation for an active marine safety decision support system.

1. 서 론

해양 사고는 막대한 인명 및 재산 피해를 초래함에도 불구하고, 기상 악화, 운항 부주의, 기계적 결함 등 이질적인 요인들이 시공간적으로 복잡하게 얽혀 있어 그 원인을 명확히 규명하기 어렵다. 따라서 단순한 통계적 현황 파악을 넘어, 다차원적인 데이터 연계를 통한 정밀한 예방 체계 구축이 필수적이다.
기존의 해양 사고 분석은 주로 통계적 기법을 통해 사고 발생의 주요 변수를 식별하는 데 집중해 왔다. Park and Ahn(2007)은 분산분석(ANOVA)를 통해 야간과 주간 시간대 간의 사고 발생 차이를 통계적으로 검증하고, 특히 04시-08시 취약 시간대에 사고가 집중되는 경향성을 확인하며 시간적 변수의 중요성을 제시하였다. 또한, Kim(2016)은 주성분 분석(PCA)을 활용하여 다차원의 사고 데이터를 ‘사고 빈도’, ‘원인’, ‘유형’이라는 세 가지 핵심 성분으로 압축하고, 기관 정비 불량이나 운항 부주의와 같은 인적 요인이 사고의 주된 기여 요인임을 수학적으로 구조화하였다.
나아가 환경적 요인과 사고의 상관관계를 규명하려는 시도도 이어졌다. Lee et al.(2009)은 VTS 관제 구역 내 사고 분석을 통해, 관제 서비스 제공 여부에 따라 사고 당시의 시정 상태와 상대 선박 인식 거리에 통계적으로 유의미한 차이가 있음을 확인하였다. 아울러 Kim and Kang(2011)은 5년간의 재결서 데이터를 정밀 분석하여, 안개 발생 시 1.6일당 1건의 빈도로 사고가 급증함을 규명하고, 파고 2m 이상의 악천후가 50톤 미만 소형 선박 사고의 주된 요인임을 입증하였다. 이러한 연구들은 사고 예방을 위해 환경적 요인에 대한 고려가 필수적임을 시사한다.
한편, 통계적 분석의 신뢰도를 저해하는 근본적인 문제인 데이터 부족을 해결하려는 시도도 있었다. Park and Park(2023)은 상세 원인이 기록된 재결서가 전체 사고의 약 5%에 불과하다는 한계를 극복하기 위해, 3년간의 ‘사고 알림 문자’ 데이터를 추가로 결합하여 분석의 외연을 확장하였다. 이들은 해당 연구를 통해 어선 사고가 경계 소홀이나 졸음운전 같은 인적 요인에 집중됨을 확인하였으며, 이종 데이터 융합의 가능성을 실증적으로 보여주었다.
그러나 이러한 데이터 확장 노력에도 불구하고, 정밀한 원인 분석에는 여전히 한계가 따른다. 사고 알림 문자와 같은 실시간 데이터에는 사고 당시의 구체적인 해역 기상 정보가 결여되어 있어, ‘운항 부주의’가 어떠한 환경적 맥락(안개, 파고 등)에서 발생했는지 입체적으로 파악하기 어렵기 때문이다. 이에 대한 대안으로 Lee et al.(2019)은 사고 정황이 담긴 '상황보고서'를 온톨로지(Ontology) 형태로 구조화하는 방안을 제시하기도 했으나, 텍스트 데이터와 시공간 환경 정보를 유기적으로 결합하여 인과관계를 추론하는 기술적 구현까지는 이르지 못하였다.
이러한 데이터 파편화 문제를 근본적으로 해결하고 분석을 고도화하기 위해, 최근 인공지능과 지식 그래프(Knowledge Graph)를 융합한 연구가 대두되고 있다. 비정형 텍스트인 재결서의 문맥을 Sentence-BERT(SBERT) 모델로 분석해 의미론적 군집을 도출하거나(Yoon et al., 2023), 지식 그래프 기반의 검색 증강 생성(GraphRAG) 기술로 정량적 위험 등급을 산출하여 실효성을 입증한 사례가 있다(Kim et al., 2025). 나아가, 서로 다른 성격의 데이터를 연결하는 합성 지식 그래프(Composite Knowledge Graph) 아키텍처를 통해, 이종 데이터 통합 분석의 기술적 기반을 확립하기도 하였다(Yoo, 2024).
본 연구는 이러한 기술적 토대를 바탕으로, 파편화된 해양 사고 기록과 기상 데이터를 융합하여 사고의 인과관계를 입체적으로 규명할 수 있는 ‘해양 안전 지식 그래프’ 구축을 목적으로 한다. 이를 위해 2020년부터 2024년까지 발생한 해양 사고 데이터와 실측 해양 기상 데이터를 시공간 키(Spatio-temporal Key)를 기준으로 매핑하여 사고 발생 당시의 환경적 맥락을 복원한다. 이렇게 구축된 지식 그래프는 사고, 기상, 선박, 장소 등 이질적인 개체들을 의미론적으로 연결함으로써, 단순 통계로는 포착하기 어려운 복합적인 위험 패턴을 탐지할 수 있는 기반을 제공한다.
나아가 본 연구는 구축된 지식 그래프의 실무적 효용성을 입증하기 위해, 거대언어모델(LLM)과 GraphRAG 기술을 결합한 ‘지능형 질의응답 시스템’을 구현한다. 특히 구조화된 질의(Text2Cypher)와 비구조화된 벡터 검색(VectorCypher)을 유기적으로 적용하여, 사용자가 복잡한 쿼리 작성 없이 자연어 질의만으로도 데이터를 심층적으로 탐색할 수 있는 환경을 조성하였다.
아울러 제안 시스템의 답변 품질을 객관적으로 검증하기 위해, 기존 검색 증강 생성 평가(RAGAS) 프레임워크의 철학을 차용하고 최신 자연어 처리 연구에서 신뢰성이 입증된 거대 언어 모델 기반 평가(LLM-as-a-Judge) 방법론을 도입하여 정량적 성능 평가를 수행하였다(Es et al., 2024; Zheng et al., 2023). 이를 통해 본 연구는 사후 통계 확인에 머물렀던 기존 관행을 넘어, 데이터 기반의 선제적 위험 예측과 직관적인 의사결정을 지원하는 실효성 있는 분석 체계를 제시하고자 한다.

2. 해양 데이터 수집 및 전처리

2.1 데이터 수집 및 전처리

본 연구의 분석 대상 기간은 2020년부터 2024년까지 5년이며, 활용된 데이터셋은 크게 사고 이력 데이터와 해양 기상 관측 데이터로 구성된다. 각 데이터셋의 전체 속성 구성과 규모는 Table 1과 같다.
해양 사고 데이터는 해양수산부 중앙해양안전심판원(KMST)의 ‘해양사고 통계현황’ 데이터를 활용하였다. 해당 데이터는 사고명, 사고 발생 일시, 장소(위·경도), 선박명, 선종, 톤수, 인명 피해 등 사고의 핵심 속성이 CSV 형식의 정형 데이터로 구조화되어 있다. 수집된 데이터는 연·월·일 등의 시간 속성과 도·분·초 단위의 위치 속성이 개별 컬럼으로 분리되어 기록되어 있어, 이를 ISO 8601 표준 Datetime 및 십진수 도(Decimal degrees) 체계로 재정의하였다. 이를 통해 전체 수집 데이터 16,731건 중 시공간 정보 결측치를 제거하고, 다수의 선박이 개입된 동일 사고의 중복 기록을 단일 사건으로 병합하여 총 14,700건의 고유 해양 사고 데이터를 최종 선별하였다.
해양 기상 및 관측 데이터는 국립해양조사원(KHOA), 국립해양측위정보원(NMPNT), 기상청(KMA) 등 3개 기관의 데이터를 수집하였다. 기관별로 상이한 관측 항목과 단위를 통일하기 위해, 본 연구에서는 20개의 표준 관측 스키마를 정의하여 모든 데이터를 매핑하였다. 또한, 유속 단위를 국제 표준인 m/s로 일괄 변환하고, 센서 오류로 인한 이상치를 결측값으로 치환하여 데이터 품질을 향상시켰다. 최종 구축된 데이터셋은 분석 기간 동안 총 615개소의 관측 지점에서 획득한 정보를 포함한다.

2.2 시공간 데이터 정렬 알고리즘

전처리된 해양 사고 데이터는 사고 발생 일시와 장소, 선박 제원 등 사건의 개요만을 포함할 뿐, 사고 당시의 파고나 풍속 등 해양 환경 정보는 부재하다. 따라서 사고 원인을 입체적으로 분석하기 위해서는 별도로 수집된 기상 관측 데이터를 사고 기록에 결합하여 정보를 보강해야 한다. 그러나 사고는 관측소가 존재하지 않는 임의의 해상에서 발생하므로, 사고 데이터의 위치 좌표는 기상 관측소의 고정된 위치와 일치하지 않는다. 이에 본 연구는 공간적 인접성과 시간적 동시성을 고려하여 이종 데이터를 정밀하게 매핑하는 시공간 정렬 알고리즘을 수행하였다.
우선, 공간 매핑을 위해 사고 발생 지점과 가장 인접한 관측소를 탐색하였다. 본 연구의 데이터셋은 약 1만 6천 건의 사고 지점과 615개의 관측소로 구성되는데, 모든 사고 지점에 대해 전체 관측소와의 거리를 순차적으로 계산하는 전수 조사 방식은 O(N2)의 높은 계산 복잡도를 가지므로 비효율적이다. 이를 해결하기 위해 본 연구는 고차원 데이터의 최근접 이웃 탐색(Nearest Neighbor Search)에 최적화된 BallTree 알고리즘을 적용하였다. BallTree는 데이터 공간을 초구(Hypersphere) 형태로 계층 분할하여 인덱싱하므로, 불필요한 거리 계산을 최소화하여 탐색 속도를 O(NlogN) 수준으로 단축시킨다.
또한, 거리 척도로는 식(1)과 같이 지구의 곡률을 고려한 하버사인 거리(Haversine Distance)를 적용하여 위도 ϕ과 경도 λ 간의 실제 최단 거리를 산출하였다.
(1)
d=2rarcsin(a),a=sin2ϕ2ϕ12+cosϕ1cosϕ2sin2λ2λ12
여기서 r 은 지구 반지름을 의미한다. 본 연구는 해당 수식을 기반으로 사고 지점 기준 최인접 관측소를 최대 5개까지 탐색하되 그 공간적 유효 반경을 30km로 제한하였으며, 분 단위로 기록된 사고 발생 시각을 1시간 주기의 기상 관측 주기로 근사하는 시점 동기화 과정을 일괄 수행하였다.
이러한 시공간적 제한은 정시 근사로 인해 발생하는 시간적 오차를 공간적 스케일과 물리적으로 동기화하기 위함이다. 시계열을 1시간 단위로 일치시키는 과정에서 필연적으로 발생하는 최대 1시간의 시간적 오차를 일반적인 선박의 평균 속력(약 15노트, 27.8km/h)에 대입해 보면, 그 공간적 변동폭은 대략 30km 내외로 수렴한다. 따라서 30km의 제한 반경은 1시간이라는 시간적 한계에 부합하는 최적의 시공간 임계값으로 작용하며, 대기보다 변화율이 완만한 해양 환경 변수의 물리적 특성과 결합하여 시공간 매핑의 정확성과 분석 신뢰도를 동시에 담보한다.

3. 지식 그래프 모델링 및 구축

본 장에서는 전처리된 해양 사고 및 기상 데이터를 기반으로, 이질적인 정보를 통합하고 거대 언어 모델 기반의 질의응답 시스템을 지원하기 위한 Neo4j 기반의 지식 그래프 구축 과정을 기술한다. 지식 그래프는 사고, 선박, 장소, 기상 등 성격이 다른 개체들을 노드(Node)와 관계(Relationship)의 네트워크 구조로 모델링함으로써, 단순한 표 형태의 관계형 데이터베이스가 제공하기 어려운 데이터 간의 의미론적 맥락을 보존한다. 이는 단편적인 통계 수치를 넘어, 사고 발생 당시의 복합적인 환경 요인과 인과관계를 입체적으로 추론할 수 있는 기반을 제공한다.

3.1 온톨로지 기반 데이터 모델링

해양 사고를 구성하는 다차원적인 정보를 구조화하고 유연한 의미론적 추론을 지원하기 위해, 본 연구는 Fig. 1과 같은 온톨로지 스키마를 설계하였다. 본 모델은 개별 사고 사례를 식별하는 Accident 노드를 기준으로 선박, 위치, 기상 등의 독립적인 정보가 서로 교차하며 거미줄처럼 연결되는 구조를 갖는다. 데이터의 단순 저장을 넘어 개체 간의 계층적 포함 관계와 범주적 특성을 그래프 구조에 직접 반영하였으며, 상세한 노드 정의 및 속성은 Table 2와 같다.
지식 그래프 내에서 Accident 노드는 id, name, date, type, coordinate, death_count 등의 속성을 포함하며, 흩어져 있는 도메인 정보들을 하나의 사건 맥락으로 묶어주는 연결점 역할을 수행한다. 사고의 시공간적 특성 중 시간 정보는 분석의 용이성을 위해 별도의 범주형 노드로 객체화하였다. 계절과 시간대를 담는 SeasonTimeRange 노드를 설계하여 각각 HAPPENED_IN_SEASON, HAPPENED_DURING 관계로 사고 노드와 연결하였다. 이는 “겨울철 새벽 시간대에 발생한 사고”와 같이 복합적인 시간 조건으로 데이터를 필터링하거나 군집화하는 데 유용하다.
공간 정보는 행정 구역의 포함 관계를 반영하여 Location(local) → Location(mid) → Location(large)의 3단계 계층 구조로 모델링하였다. 각 단계는 PART_OF 관계로 연결되어, 사용자가 “개항 및 진입수로에서 발생한 사고”를 질의할 경우, 하위 지역인 “부산항”의 사고까지 포괄적으로 추론하여 검색할 수 있는 논리적 기반을 제공한다.
사고에 얽힌 Ship 노드는 INVOLVED_IN 관계를 통해 해당 사고 노드와 연결된다. 선박의 특성을 단순 속성이 아닌 별도의 범주형 노드로 분리하여, TonnageClass 노드와는 BELONGS_TO_CLASS 관계를, ShipType 노드와는 IS_VESSEL_TYPE 관계를 맺도록 설계하였다. 이러한 구조는 "5톤 미만 소형 선박"이나 "어선"과 같은 범주형 질의 시, 개별 선박의 속성을 일일이 탐색하지 않고도 그래프 연결성을 통해 즉각적인 군집 분석이 가능하게 한다.
사고 당시의 환경 정보는 관측 주체와 기록을 명확히 분리하여 모델링하였다. 물리적 관측 시설은 Station 노드로, 특정 시점의 관측 수치는 WeatherRecord 노드로 분리하였다. 사고 노드는 OBSERVED_BY 관계를 통해 인접한 WeatherRecord 노드와 연결되며, 이 기록은 MEASURED_AT 관계를 통해 해당 Station 노드로 귀속된다. 또한, Station 노드는 PROVIDED_BY 관계를 통해 데이터를 생산한 Agency 노드와 연결됨으로써, 추후 데이터 오류 발생 시 원천 출처를 즉시 추적할 수 있는 체계를 구현하였다.
더불어, 연속형 수치로 수집되는 기상 관측 데이터를 직관적으로 추론할 수 있도록 기상청의 공식 해상 특보 발효 기준을 차용하여 범주화 작업을 수행하였다. 풍속과 유의파고 수치를 기반으로 '풍랑경보 수준'과 '풍랑주의보 수준'의 WeatherCondition 노드로 생성하였으며, 시정에 대해서도 세계기상기구의 해상기상서비스 매뉴얼 기준을 적용하여 4단계의 WeatherCondition 노드로 세분화하였다(WMO, 2024). 이를 해당 WeatherRecord 노드와 HAS_CONDITION 관계로 연결함으로써, 복잡한 부등호 연산 없이 그래프의 연결 경로만으로 고차원적인 악천후 사고 탐색을 수행할 수 있다.
마지막으로, 의미론적 검색(Semantic Search)을 지원하기 위해 Content 노드를 설계하였다. Content 노드의 데이터는 사고의 전반적인 정황을 포괄하여야 하며, 이는 의미론적 검색을 수행하기 위한 핵심적인 토대가 된다. 그러나 Accident, WeatherRecord 등의 노드에 저장된 개별 속성값들은 독립적인 정형 데이터로 존재하여, 이를 단순히 나열하는 방식으로는 사고의 유기적인 인과관계를 설명하기 어렵다. 예를 들어 ‘5.0m/s’, ‘충돌’, ‘○○호’와 같은 데이터의 단순 나열은 개별 정보의 사실 여부만을 전달할 뿐, 거대언어모델이 사고의 구체적인 맥락을 파악하는 데에는 한계가 존재한다.
데이터 간의 의미적 공백을 메우기 위해, 본 연구에서는 파편화된 정보를 하나의 자연어 설명문으로 통합하는 텍스트 언어화(Text Verbalization) 과정을 수행하였다. 이 과정은 개별 속성들에 문맥적 연결고리를 부여하여 임베딩 모델이 데이터 간의 유기적 관계를 학습하고, 사고의 정황을 벡터 공간에 온전히 반영할 수 있도록 돕는다. 기상 관측 수치의 위험도에 따라 설명문의 형태가 유동적으로 변화하는 동적 생성 로직을 적용하였으며, 생성된 텍스트는 Content 노드에 저장되어 Accident 노드와 HAS_DESCRIPTION 관계로 연결된다.
[자연어 설명문 동적 생성 규칙 및 예시]
⦁ Template: “{date}경, {location}에서 {tonnage}톤급 {ship_type}인 ‘{ship_name}’에 {type} 사고가 발생했습니다. 당시 기상 관측 정보는 {dynamic_weather_context}”
⦁ Rule: {dynamic_weather_context} 영역은 해양 사고의 핵심 환경 요인인 5가지 기상 지표(풍속, 최대순간풍속, 유의파고, 유속, 시정)의 수치를 기반으로 동적 생성된다. 각 지표가 평이한 수준일 경우 “풍속 6.1m/s, 시정 10km 였습니다.”와 같이 단순 수치로 나열된다. 반면, 특정 지표가 위험 임계치를 초과할 경우, 임베딩 모델의 상황 인식률을 높이기 위해 ”풍속이 25.0m/s로 매우 강하게 불었고,“ 혹은 “유의파고가 5.0m로 매우 높게 일었고,”와 같은 정황 묘사형 서술어로 자동 변환되어 유기적으로 결합된다.
⦁ Example: “2024년 12월 1일 1시 25분경, 남해영해에서 2.41톤급 어선인 ‘○○호’에 기관손상 사고가 발생했습니다. 당시 기상 상황은 풍속이 16.5m/s로 강하게 불었고, 순간최대풍속 19.1m/s, 시정 10.34km 였습니다.”
생성된 자연어 설명문은 OpenAI의 텍스트 임베딩 모델인 text-embedding-3-small을 통해 1,536차원의 실수 벡터로 변환되어 Content 노드의 embedding 속성에 저장된다.
또한, 저장된 벡터 데이터의 효율적인 검색을 위해 Neo4j 데이터베이스 내에 벡터 인덱스(Vector index)를 구축하였다. 벡터 인덱스는 사용자의 질의 벡터(Vq)와 Content 노드의 임베딩 벡터(Vc) 간의 유사도를 계산하여 관련성 높은 정보를 추출한다. 본 연구에서는 유사도 측정 지표로 코사인 유사도(Cosine similarity)를 채택하였으며, 이는 식(2)와 같다.
(2)
similarity(Vq,Vc)=VqVc||Vq||||Vc||
이러한 임베딩 및 색인 체계는 그래프의 구조적 탐색 기능과 유기적으로 결합되어, 자연어 질의에 대해 가장 적합한 사고 사례를 도출하는 기반이 된다.

3.2 지식 그래프 구축 결과

본 연구는 2020년부터 2024년까지의 해양 사고 데이터를 바탕으로 데이터 간의 연관성을 정의하여 Neo4j 지식 그래프로 구축하였다. 최종 완성된 데이터베이스는 총 90,156개의 노드와 214,633개의 관계로 이루어져 있다. 이 네트워크는 개별 사건을 나타내는 Accident 노드(14,700개)와 사고 선박 정보인 Ship 노드(12,817개), 당시 기상 기록인 WeatherRecord 노드(47,657개), 그리고 사고 정황이 자연어로 담긴 Content 노드가 서로 긴밀하게 교차하며 엮여 있다. 여기에 사고 종류를 나타내는 AccidentType 노드(21개), 선박 종류인 ShipType 노드(7개), 기상 관측소인 Station 노드(188개)와 같이 데이터를 체계적으로 묶어주는 범주형 노드들이 더해져 탐색의 효율성을 높인다.
Neo4j를 이용해 시각화 한 결과는 Fig. 2와 같다. 시각화 결과, 단일 사고 노드에서 파생된 정보가 단편적으로 끝나는 것이 아니라, 공통 속성을 지닌 분류용 노드를 매개로 연쇄적으로 확장되는 다중 계층 구조를 띠고 있다. 그 결과, 서로 다른 독립적인 사고들이라도 '겨울'이나 '침수' 혹은 '풍랑경보 수준'과 같은 공통된 속성 노드를 매개로 엮이면서 거대한 정보의 연결망을 형성하게 된다.
이러한 연쇄적인 다단계 연결 구조 덕분에, 특정 사고에 얽힌 선박 정보, 시공간적 계층 정보, 기상 환경의 복합적인 배경을 단 한 번의 그래프 경로 탐색만으로 통합하여 파악할 수 있다. 결과적으로 본 연구에서 구축한 지식 그래프 구조는, 복잡한 검색 조건을 처리하고 데이터의 숨은 맥락을 파악해야 하는 제안 시스템의 검색 신뢰도와 정확성을 담보하는 견고한 기반이 된다.

4. 지능형 질의응답 시스템 구현 및 결과 분석

본 장에서는 구축된 해양 안전 지식 그래프와 의미론적 색인 체계를 기반으로, 사용자의 질의 의도에 따라 최적의 검색 전략을 능동적으로 선택하는 GraphRAG 기반의 지능형 질의응답 시스템 구현 현황과 그 성능을 기술한다.

4.1 시스템 아키텍처 및 구현 환경

본 시스템은 정형 데이터의 통계적 분석과 비정형 텍스트의 맥락적 추론을 동시에 지원하기 위해, 거대언어모델이 적절한 검색 도구를 스스로 선택하여 질의를 수행하는 라우팅(Routing) 아키텍처를 채택하였다. 라우팅이란 거대언어모델이 질의의 성격을 분석한 후, neo4j-graphrag 라이브러리에서 제공하는 VectorCypherRetriever와 Text2CypherRetriever 중 최적의 모듈을 호출하는 것을 의미한다.
각 모듈의 구체적인 역할은 다음과 같다. 먼저, Text2CypherRetriever는 사용자의 자연어 질의를 그래프 데이터베이스 질의 언어인 Cypher로 자동 변환하는 모듈이다. 이는 "전체 사고 건수"나 "가장 빈번한 사고 유형"과 같이 명확한 수치 연산이나 집계가 필요한 경우에 활용된다. 반면, VectorCypherRetriever는 의미론적 검색과 그래프 탐색을 결합한 모듈이다. 이 모듈은 질의와 유사한 Content 노드를 벡터 공간에서 탐색함과 동시에, 사전 정의된 Cypher 쿼리를 실행하여 해당 사고와 연결된 기상, 선박, 장소 정보를 한꺼번에 조회한다. 전체 시스템의 논리적 아키텍처는 Fig. 3과 같으며, 세부 작동 프로세스는 다음과 같다.
첫째, 도구 선택 및 라우팅 단계이다. 사용자가 자연어 질의를 입력하면 시스템은 이를 분석하여 성격에 맞는 검색 전략을 수립한다. 만약 "2023년 이후 발생한 어선 사고 수는?"과 같은 통계적 질의라면 Text2CypherRetriever를, "악천후로 인해 배가 가라앉은 사고 정황을 알려줘"와 같은 맥락적 질의라면 VectorCypherRetriever를 선택하여 실행한다.
둘째, 정보 검색 단계이다. Text2CypherRetriever가 선택된 경우, 모듈은 사전 정의된 지식 그래프 스키마를 참조하여 자연어를 실행 가능한 Cypher 쿼리로 변환하고, 이를 데이터베이스에서 직접 실행하여 정확한 통계 수치나 집계 결과를 산출한다. 반면, VectorCypherRetriever가 선택된 경우, 모듈은 임베딩 모델을 통해 질의를 벡터로 변환하고 Content 노드와의 유사도를 계산한다. 이후 검색된 Content 노드를 기점으로 Accident, Ship, WeatherRecord 등의 노드와 속성을 조회하는 확장 Cypher 쿼리를 수행하여 사고의 정황 데이터를 추출한다.
셋째, 답변 생성 단계이다. 앞선 단계에서의 결과는 거대언어모델의 입력 컨텍스트(Context)로 제공된다. 거대언어모델은 제공된 지식 그래프의 사실 데이터에 기반하여 최종 답변을 생성하며, 이를 통해 일반적인 생성형 모델의 한계인 환각 현상(Hallucination)을 억제하고 답변의 구체성을 확보한다.
본 시스템은 Python 3.12 환경에서 구현되었으며, 그래프 데이터베이스 관리를 위해 Neo4j Desktop(v2025.11.2.)을 사용하였다. 주요 Python 라이브러리로는 neo4j v5.28.2, neo4j-graphrag v1.11.0, openai v2.15.0을 활용하였으며, 추론 모델로는 gpt-4o(2024-08-06 snapshot), 임베딩 모델로는 text-embedding-3-small(1,536차원)을 사용하였다. LLM의 출력 일관성을 높이기 위해 temperature=0으로 설정하였으며, 동일한 소프트웨어 환경과 데이터베이스에서 그래프 탐색 및 Cypher 실행 결과의 재현이 가능하다.

4.2 질의 유형별 성능 비교 및 검증

본 연구에서는 구현된 지능형 질의응답 시스템의 실효성을 검증하기 위해, 외부 지식 베이스가 결합되지 않은 단일 거대 언어 모델인 GPT-4o를 대조군(Baseline)으로 설정하여 답변 품질 비교 실험을 수행하였다. 공정한 평가를 위해 대조군 모델에도 제안 시스템과 동일하게 2020년부터 2024년까지의 한국 해양 사고 전문가라는 역할을 부여하였으며, 사전 학습된 지식 외의 환각 생성을 통제하였다.
본 연구의 제안 시스템은 Text2Cypher와 VectorCypher를 동시에 수행하는 하이브리드 그래프 검색 증강 생성(Hybrid GraphRAG) 모델이다. 따라서 서론에서 언급한 바와 같이, 기존의 문서 위주 검색 증강 생성 평가(RAGAS) 프레임워크를 그대로 적용하기에는 정형 데이터의 수치적 정확도와 비정형 데이터의 맥락을 동시에 평가하는 데 한계가 있다. 이에 본 연구에서는 인간 평가자와의 높은 일치도가 입증되어 자연어 처리 분야에서 널리 활용되는 거대 언어 모델 기반 평가(LLM-as-a-Judge) 방법론을 도입하되, RAGAS의 주요 평가 지표인 답변 정확성(Answer Correctness)과 충실성(Faithfulness) 개념을 차용하였다. 이를 해양 도메인에 특화된 정량적 수치 검증 및 복합 사례 평가에 적합하도록 맞춤형 평가 프롬프트로 설계하여, 정성적인 평가 지표를 정량화하였다.
구체적인 정량화 지표로는 모델이 생성한 최종 응답에 대하여 사실 정확도(Factual Accuracy), 완전성(Completeness), 근거성(Groundedness)의 3가지 항목을 1-5점 척도로 측정하였다. 평가 문항은 총 25개로 구성하였으며, Text2Cypher 기반의 통계적 질의(Statistical) 15개와 VectorCypher 기반의 맥락적 정황 질의(Contextual) 10개로 분류하였다. 특히 통계적 질의에는 단순 수치 집계뿐만 아니라, 다중 홉 탐색(Multi-hop Traversal)을 통해 이종 데이터 간의 교차 패턴을 도출하고, 데이터베이스에 명시적으로 기록되지 않은 내재적 정보를 연산적으로 추론해 내는 복합 질의를 포함하여 지식 그래프의 구조적 탐색 성능을 검증하고자 하였다. 질의 유형별 대표 응답 사례는 Table 3에, 정량적 평가 결과는 Table 4에 제시하였다.
통계적 질의인 Q1에서 대조군 모델은 구체적인 통계 수치를 제시하지 못하고 보편적인 상식을 서술하는 데 그친 반면, 제안 시스템은 Accident 노드를 중심으로 Season(여름철), TimeRange(4시-8시), WeatherRecord(풍속 10.0m/s 이상), Ship(어선) 노드 간의 관계를 단일 질의로 동시에 탐색하여 2건이라는 결과값을 도출하였다. 기존 관계형 데이터베이스(RDBMS) 환경에서는 이러한 다중 노드 조건을 처리하기 위해 복잡한 조인(JOIN) 연산이 필요하지만, 지식 그래프 구조는 이를 상대적으로 효율적으로 수행한다.
이종 데이터 간 연결을 통해 패턴을 분석하도록 설계된 질의인 Q2에서는 지식 그래프의 다중 노드 연결을 통해서 파악 가능한 교차 패턴이 확인되었다. 동해영해와 남해영해의 계절별 전복·침몰 사고를 비교한 결과, 남해영해는 가을(81건), 동해영해는 봄(24건)에 사고 빈도가 가장 높은 것으로 나타나 두 해역의 발생 패턴이 상이함을 수치로 입증하였으며, 대조군은 통계를 제시하지 못하고 일반론적 서술에 그쳤다.
나아가, 명시되지 않은 내재적 정보를 연산적으로 추론하는 질의인 Q3에서 제안 시스템은 특정 해역(동해영해)의 인명 피해 발생 여부와 선박 종류를 교차 탐색하여, 실제 데이터에 기반한 단속 우선순위(어선 31건, 수상레저기구 12건 등)를 정량적으로 산출하였다. 반면 대조군은 실제 통계와 무관하게 보편적인 선박 관리 상식을 나열하는 한계를 보였다.
비정형적인 자연어 묘사로 조건이 구성된 맥락적 정황 질의인 Q4, Q5의 경우, 대조군 모델은 “높은 파도로 인해 해수 유입이 발생할 수 있습니다”와 같은 보편적인 해양 안전 상식을 서술하는 데 그쳤으나, 제안 시스템은 의미론적 추론을 통해 데이터베이스 내의 실제 사고 사례를 추출하였다. 특히 Q4의 “엔진이 갑자기 작동을 멈춰 선박이 움직이지 못하게 된”이라는 추상적 질의에 대하여, 제안 시스템은 사전 데이터 전처리 과정에서 Content 노드의 텍스트 내부에 명시적으로 반영해 둔 기상 상태 및 사고 정황 서술과의 코사인 유사도를 계산함으로써 실제 기관손상 사고 사례를 검색하였다.
Table 4에 제시된 정량적 평가 결과에 따르면, 제안 시스템은 전체 25개 질의에서 사실 정확도 4.28, 완전성 4.36, 근거성 3.72를 기록하여 대조군 대비 전 항목에서 우위를 보였다. 다만, 근거성 점수가 타 지표 대비 다소 낮게 측정된 것은, 단일 수치 형태의 집계 결과를 반환하는 Text2Cypher 방식의 특성상 LLM-as-a-Judge 모델이 이를 텍스트 근거의 부족으로 인식하여 보수적으로 채점하는 구조적 한계에 기인한 것이다. 도구 라우팅 정확도(Tool Routing Accuracy)와 Cypher 질의 실행 성공률(Cypher Execution Success)은 모두 100%로 동적 라우팅 아키텍처의 안정성을 확인하였다.
통계적 질의에서는 사실 정확도 5.00, 완전성 5.00을 기록하여 높은 수치 정확도를 달성하였으며, 특히 이종 데이터 연결 기반 패턴 분석 질의에서 근거성 점수 향상폭이 가장 크게 나타났다. 이는 앞서 Table 3의 Q2 및 Q3 사례에서 확인한 바와 같이, 해역-계절-사고 유형 등 이종 데이터 간의 구조적 연결을 통해서 도출 가능한 교차 패턴과 내재적 정보를 제안 시스템이 정량적으로 수치화하였음을 의미한다. 반면 맥락적 정황 질의에서는 복합 서술 조건에 해당하는 사고 사례가 데이터셋 내에 희소한 경우 관련성이 낮은 결과가 반환되는 한계가 확인되었으며, 이는 향후 데이터 보강을 통해 개선이 필요한 부분이다.
결론적으로, 제안하는 지능형 질의응답 시스템은 명시적 그래프 스키마를 활용한 구조적 탐색과 사전 전처리된 텍스트를 기반으로 한 벡터 공간의 의미론적 추론을 결합하여 검색의 정확도를 향상시켰다. 이를 통해 기존 관계형 데이터베이스의 다중 노드 조건 처리의 제약을 극복함과 동시에, 단순 거대 언어 모델이 지니는 수치 집계의 한계 및 환각 문제를 보완하여, 수치와 맥락이 복합적으로 구성된 해양 도메인 질의 환경에서 보다 신뢰성 있는 정보 제공이 가능함을 확인하였다.

5. 결 론

본 연구는 해양 사고 기록과 이종의 기상 관측 데이터를 시공간적으로 연계하여 온톨로지 기반의 해양 안전 지식 그래프를 구축하고, 이를 활용한 GraphRAG 기반의 지능형 질의응답 시스템을 구현하였다. 2020년부터 2024년까지 발생한 14,700건의 해양 사고 데이터와 3개 기관의 실측 기상 데이터를 BallTree 알고리즘으로 매핑하여, 개별 사고 기록과 기상 환경을 다차원적인 지식 네트워크로 통합하였다.
또한, 구축된 지식 그래프를 바탕으로 거대 언어 모델이 질의의 의도를 분석하여 Text2Cypher 와 VectorCypher 모듈을 동적으로 라우팅하는 검색 아키텍처를 제안하였다. 기상 수치와 사고 정황을 자연어로 변환하는 전처리 기법을 통해 벡터 공간의 의미론적 추론 성능을 확보하였다. 그 결과, 제안 시스템은 기존 관계형 데이터베이스에서 연산 비용이 높은 다중 홉 기반의 복합 통계 질의를 구조적 탐색을 통해 효과적으로 수행하였다. 이를 통해 단순 거대 언어 모델이 지니는 수치 집계의 한계 및 환각 현상을 보완하고, 명시되지 않은 내재적 정보를 연산적으로 추론함으로써 해양 도메인 질의 환경에서 신뢰성 있는 정보 제공이 가능함을 확인하였다.
본 연구의 공간 매핑은 연안 기상 관측소의 실측 데이터를 기반으로 수행되었기에, 관측 인프라가 부재한 먼바다 사고나 복잡한 지형에 따른 국지적 기상 변화를 반영하는 데 제약이 존재한다. 그러나 기존 해양 사고 분석에서는 공식 재결서가 작성된 약 6%의 사고에 대해서만 구체적인 기상 맥락 파악이 가능했던 반면, 본 연구의 시공간 연계 방법론을 통해 나머지 94%의 일반 사고 데이터에도 유의미한 기상 환경 변수를 부여하여 복합 탐색을 가능하게 하였다는 점에서 실증적 의의를 갖는다. 아울러 본 연구의 성능 평가는 맞춤형 LLM-as-a-Judge 방식을 활용하여 평가의 일관성을 확보하였으나, 향후 실제 해양 안전 실무자 및 도메인 전문가 집단의 교차 검증을 수행한다면 시스템의 실효성을 더욱 객관적으로 입증할 수 있을 것이다.
향후 연구에서는 공식 재결서가 존재하는 사고에 한하여 전문 텍스트 데이터를 추가 추출하여 지식 그래프에 통합할 계획이다. 이를 통해 사고 발생 전후의 복잡한 인과관계를 보다 정밀하게 파악하고자 한다. 이와 더불어 육각형 기반의 글로벌 격자 체계를 도입하여 AIS 데이터를 공간적으로 인덱싱하고, 해역별 선박 밀집도를 지식 그래프의 속성으로 반영할 예정이다. 나아가 확장된 다차원 지식 그래프에 그래프 신경망(GNN) 모델을 적용하여 사고 발생 위험도를 예측하는 의사결정 지원 시스템을 구축함으로써, 데이터 기반의 실효성 있는 해양 안전 정책 수립에 기여하고자 한다.

NOTES

후 기

이 논문은 2026년도 해양수산부 재원으로 해양수산과학기술진흥원의 지원을 받아 수행된 연구임(RS-2024-00415504, AI 기반 민군경 융복합 해양데이터 분석·활용 기술개발)

Fig. 1
Ontology schema of the marine safety knowledge graph
KINPR-2026-50-3-297f1.jpg
Fig. 2
Visualization of the multi-layered marine safety knowledge graph in Neo4j
KINPR-2026-50-3-297f2.jpg
Fig. 3
Logical architecture of the GraphRAG-based intelligent question-answering system
KINPR-2026-50-3-297f3.jpg
Table 1
Structure and scale of the collected marine accident and weather datasets
Dataset Category Attributes Volume
Marine accident (Source: KMST) Identify Case ID, Case name, Accident type 14,700
Time & Loc Date/Time, Time range, Season, Latitude, Longitude, Region
Ship Info Ship name, Ship type, Tonnage
Casualty Death, Missing, Injury, Total casualties
Marine weather (Source: KHOA, KMA, NMPNT) Meta Info Station name, Station ID, Observed time 615 (KHOA: 509, NMPNT: 63, KMA: 43)
Wave & Tide Tide level, Wave height(avg/sig/max), Wave period(avg/sig/max), Wave direction
Wind & Current Wind speed/direction, Max gust speed, Current speed/direction
Environment Water temp, Salinity, Air temp, Visibility
Table 2
Definitions and properties of nodes in the ontology-based knowledge graph
Node Label Description Key Properties
Accident Core entity representing a maritime accident case id, name, type, date, coordinate, death_count
Season Categorical node for the season of occurrence name(e.g., "Winter", "Spring")
TimeRange Categorical node for the time of occurrence name(e.g., "04-08h", "12-16h")
Ship Vessel involved in the accident name, tonnage, type
Location Hierarchical administrative region name, level(values: 'local', 'mid', 'large')
Station Physical weather observation facility name
WeatherRecord Weather data observed at a specific time id, station_name, wind_speed, gust_speed, sig_wave_height, current_speed, visibility, distance, quality, ... (total 20 variables)
WeatherCondition Categorical node for KMA warnings & WMO visibility levels name(e.g., “Warning level”, “Very poor”)
Agency Organization providing the weather data name, url, access_method
Content Narrative description and vector embedding for semantic search id, text, embedding(1536-dim vector)
TonnageClass Categorical node for ship tonnage classification name
ShipType Categorical node for vessel usage classification name
Table 3
Performance comparison of the proposed system and baseline by query type
Query Type User Query Baseline response Proposed system response Tool
Statistical Q1 “How many fishing vessel accidents occurred between 4-8 AM in the summer of 2021 under wind speeds of 10.0 m/s or higher?“ “Specific statistics for the given conditions are unavailable; refer to official reports.” “2 fishing vessel accidents were recorded.” Text2 Cypher
Q2 “When comparing seasonal capsizing and sinking accidents in the East Sea and South Sea Territorial Waters, do the two areas show different peak risk seasons?” “The East Sea is generally more hazardous in winter; the South Sea in summer. Precise statistics are unavailable.” “South Sea peaked in autumn (81 cases); East Sea in spring (24 cases) — distinct seasonal risk patterns confirmed via multi-node graph traversal.”
Q3 "When conducting special maritime patrols to prevent fatal accidents in the East Sea Territorial Waters, what is the priority ranking of vessel types that should be targeted for inspection and management?" "Generally, fishing vessels, passenger ships, cargo ships, and leisure boats should be prioritized based on typical risks. Specific statistics are unavailable." "Based on fatality records, fishing vessels (31 cases) are the top priority, followed by motorboats/yachts (12 cases), other ships (6 cases), oil tankers (3 cases), tugboats (2 cases), and cargo ships (1 case)."
Contextual Q4 "Describe an accident case where the engine suddenly stopped and the vessel became immobilized." "Engine failure can result from mechanical defects, fuel supply issues, or electrical faults; regular maintenance is essential." "A 2.99-ton fishing vessel suffered engine damage in the East Sea (Jan. 2021; wind: 7.8 m/s, sig. wave height: 0.91 m), rendering it unable to continue navigation." Vector Cypher
Q5 "Describe a fishing vessel accident case where seawater flooded the vessel due to extremely high waves, and provide the weather conditions at the time." "Specific accident data is unavailable. High waves can cause seawater intrusion; avoiding departure in such conditions is recommended." "A 2.98-ton fishing vessel suffered propulsion shaft damage in the South Sea Territorial Waters (Oct. 2023; sig. wave height: 7.66 m)."
Table 4
Quantitative evaluation results of question-answering performance
Query Type No. System Factual Accuracy Completeness Groundedness
Statistical 15 GraphRAG 5.00 5.00 3.80
Baseline 1.27 1.80 2.07
Contextual 10 GraphRAG 3.20 3.40 3.60
Baseline 2.80 2.80 2.80
Total 25 GraphRAG 4.28 4.36 3.72
Baseline 1.88 2.20 2.36

Tool Routing Accuracy: 25/25 (100.0%)

Cypher Execution Success: 15/15 (100.0%)

Scores evaluated by LLM-as-a-Judge on a 1-5 scale.

References

[1] Es, S., James, J., Anke, L. E. and Schockaert, S.2024), Ragas: Automated evaluation of retrieval augmented generation”, In: Proceedings of the 18th conference of the european chapter of the association for computational linguistics: system demonstrations; pp 150-158.
crossref
[2] Kim, Y. S.(2016), “Principal Component Analysis on Marine Casualties Occurred at Korean Littoral Sea in Recent 5 Years”, Journal of Fisheries and Marine Sciences Education, Vol. 28, No. 2, pp. 465-472.
crossref
[3] Kim, S. K. and Kang, J. P.(2011), “A Study on the Relationships between the Casualties of Fishing Boats and Meteorological Factors”, Journal of Fisheries and Marine Sciences Education, Vol. 23, No. 3, pp. 351-360.
[4] Kim, T. Y., Lee, W. J., Kim, H. N. and Kim, K. Y.(2025), “Analysis and Utilization of Accident-Investigation Data Leveraging AI Technology”, Journal of Korean Society of Occupational and Environmental Hygiene, Vol. 35, No. 3, pp. 274-281.
[5] Lee, H. K., Chang, S. R. and Park, Y. S.(2009), “A Fundamental Study on Advanced VTS System through Statistic Analyzing Traffic Accidents in VTS area”, Journal of Navigation and Port Research, Vol. 33, No. 8, pp. 519-524.
crossref
[6] Lee, Y. J., Kang, S. K. and Gu, J. Y.(2019), “A Study on Marine Accident Ontology Development and Data Management: Based on a Situation Report Analysis of Southwest Coast Marine Accidents in Korea”, Journal of the Korean Society of Marine Environment & Safety, Vol. 25, No. 4, pp. 423-432.
crossref
[7] Park, B. S. and Ahn, Y. S.(2007), “Statistical Analysis of Marine Accidents by ANOVA”, Journal of the Korean Society of Marine Environment & Safety, Vol. 13, No. 3, pp. 191-198.
[8] Park, S. A. and Park, D. J.(2023), “A Study on the Analysis of Marine Accidents on Fishing Ships Using Accident Cause Data”, Journal of Navigation and Port Research, Vol. 47, No. 1, pp. 1-9.
[9] Yoon, B., Park, S., Bae, H. and Sim, S.(2023), “Maritime Safety Tribunal Ruling Analysis using SentenceBERT”, Journal of the Korean Society of Marine Environment & Safety, Vol. 29, No. 7, pp. 843-856.
crossref
[10] Yoo, K.(2024), “A Chatbot for Q&A of Sensitive Information Applying the Composite Knowledge Graph-based GraphRAG”, Journal of Information Technology Services, Vol. 23, No. 6, pp. 123-136.
[11] World Meteorological Organization. (2024), Manual on marine meteorological services, Volume I, Global aspects: Annex VI to the WMO technical regulations (WMO-No. 558). Geneva: World Meteorological Organization.
[12] Zheng, L., Chiang, W. L., Sheng, Y., Zhuang, S., Wu, Z., Zhuang, Y. and Stoica, I.(2023), ““Judging llm-as-a-judge with mt-bench and chatbot arena”, Advances in neural information processing systems, Vol. 36, pp. 46595-46623.
crossref
TOOLS
METRICS Graph View
  • 0 Crossref
  •  0 Scopus
  • 557 View
  • 13 Download
Related articles


ABOUT
BROWSE ARTICLES
FOR CONTRIBUTORS
Editorial Office
C1-327 Korea Maritime and Ocean University
727 Taejong-ro, Youngdo-gu, Busan 49112, Korea
Tel: +82-51-410-4127    Fax: +82-51-404-5993    E-mail: jkinpr@kmou.ac.kr                

Copyright © 2026 by Korean Institute of Navigation and Port Research.

Developed in M2PI

Close layer
prev next