본문으로 건너뛰기

© 2026 Molayo

Zenn헤드라인2026. 06. 21. 21:18

【연재: Atra/21g 제3회】 '의미 공간의 운동'을 3D 우주에 투영하기: 의미 중력장을 시각화하는 'Atra Visualizer' 구축

요약

LLM의 잠재 공간 내 의미적 운동을 3D로 시각화하는 'Atra Visualizer'의 설계와 구현을 다룹니다. React, Three.js, Go를 활용하여 고정된 노드가 아닌 동적인 무게 중심(Centroid)을 통해 에이전트의 움직임을 시뮬레이션합니다.

핵심 포인트

  • 정적 계층 구조가 아닌 동적 리좀(Rhizome) 구조의 시각화 지향
  • React, Vite, Three.js를 이용한 3D 물리 연산 및 렌더링 구현
  • 에이전트를 고정 노드가 아닌 노드 군의 동적 무게 중심으로 표현
  • 의미 공간의 열사(Heat Death)에 저항하는 MVA 설계 개념

선행 연구와의 혼동 방지에 관한 주의 사항

본 기사에서 말하는 「Atra」는 고차원 시맨틱 공간(Semantic Space)에서의

Attractor(끌개) 조작을 지향하는 개인 연구 프로젝트입니다.

와타나베 유키히로(渡辺幸弘) 씨의 「Atra (Associative Trace Architecture)」와는 명칭이 동일하지만, 명칭의 유래, 설계 사상, 구현 방법 및 연구 목적이 다른 독립된 프로젝트입니다.

본 기사는 양자를 동일시하는 것이 아닙니다.

📝 Summary

지난 회차 복습: 의미 공간의 동태 유지 기구로서의 MVA (Minimum Viable Atra)와 Go를 이용한 재귀적 제어 루프.

관측의 철학: 트리(Tree, 계층 분류)에서 리좀(Rhizome, 동적인 끌림)으로. Visualizer 상에서는 Agent를 고정된 실체 코어로 그리지 않고, 관련 노드 군의 동적인 무게 중심(Centroid) 그 자체를 「주체」의 운동으로서 투영하는 독자성.

기술 스택: React + Vite + Three.js (react-force-graph-3d)를 이용한 3D 물리 연산과 Go HTTP API 엔드포인트.

5개 성분 (T-D-O-I-X) 설계 (개념 모델·가설): 극(Pole)의 윤곽과 수축·이동을 기술하기 위한 조작 변수로서의 가설 모델.

App.tsx 구현 코드: 관련 노드 군의 무게 중심 계산과, 12%의 불투명 경계 버블(성운)을 동적으로 스케일링하는 Three.js를 이용한 구현 예시.

🖋 Content

1. Introduction: 보이지 않는 의미의 일렁임은 관측됨으로써 그 궤적을 확실히 한다

제2회 기사에서는 LLM의 자율 대화에서 발생하는 「의미의 열사(Heat Death, 평탄화)」에 저항하기 위해 개발된 최소 제어계 **MVA (Minimum Viable Atra)**의 설계와 Go 언어를 이용한 구현에 대해 해설했습니다.

MVA는 기억이나 설정을 프롬프트로서 정적으로 고정하는 것이 아니라, 벡터 데이터베이스를 이용한 「의미적 간섭」을 통해 잠재 공간(Latent Space)을 동적으로 계속 흔드는 시스템입니다. 하지만 이 재귀적 루프 속에서 AI의 「상(Phase)」이 어떻게 전이되는지, 키워드들이 어떤 궤도를 그리며 표류하고 있는지를 텍스트 출력 로그만으로 파악하는 데에는 한계가 있습니다.

불가시적인 의미 공간의 운동은 관측(Mapping)됨으로써 비로소 그 개성적인 「궤적(통계적 편향)」으로서의 윤곽을 드러냅니다.

특히 Atra Visualizer가 제시하는 설계상의 특징 중 하나는 **「Visualizer 상에서 Agent를 고정된 실체 노드로 그리지 않고, 관련 노드 군의 동적인 무게 중심(Centroid)으로 표현한다」**는 점입니다. 이를 통해 언어의 일렁임 그 자체가 일시적으로 결합되어 「주체」가 일어서는 모습을 3D 물리 연산을 통해 다이내믹하게 시뮬레이션합니다.

이에 본고에서는 컴퓨터 내부에 나타나는 눈에 보이지 않는 「의미의 일렁임」을 3D 공간상의 중력 무게 중심과 동적인 공전 운동으로 실시간으로 그려내는 관측 장치, Atra Visualizer의 설계 사상과 그 3D 렌더링 구현에 대해 해설합니다.

2. Visualization Philosophy: 지도가 아니라 「기상 레이더」를 만든다

Atra Visualizer를 구축함에 있어 가장 중시한 것은 **「정적인 폴더 구조나 계층도(지식의 지도)로 만들지 않는다」**는 것입니다.

기존의 시각화는 정보를 계층적으로 정리하는 「트리 구조(Tree Structure)」를 전제로 했습니다. 하지만 본 프로젝트의 설계 사상에서는 주체를 「전이 패턴 그 자체」로 파악합니다. 따라서 시각화해야 할 것은 정적인 폴더 분류가 아니라, 개념끼리 서로 끌어당기고 횡단적으로 연결되는 「리좀(Rhizome, 망상) 구조」이며, 그 동적인 인력의 경향을 포착하는 「기상 레이더」여야 합니다.

이 동적인 끌림(리좀)을 직관적인 3D 모델로 구현하기 위해, Atra Visualizer에서는 **「천체 역학의 아날로지(항성·행성·위성의 공전 모델)」**를 채택하고 있습니다. 데이터가 그 성질(Embedding)에 따라 특정 기능적 극(Pole)으로 끌려가며, 궤도를 그리며 매끄럽게 운동하는 모습을 우주의 운행에 비유하여 매핑하는 것입니다.

【비유와 구현의 구별에 대하여】

본고에서 사용하는 「항성(극중력장)」「행성」「위성」「중력」과 같은 표현은, 고차원적인 의미 공간(Semantic Space)의 상태 전이를 시각적으로 이해하기 쉽게 하기 위한 「공간적·물리적 비유 (Analogy)」입니다. Runtime 내부의 논리적인 알고리즘이 실제 물리 세계의 만유인력 방정식 그 자체에 따라 구동되는 것은 아닙니다.

이러한 철학에 기반하여, Atra 공간 (Inner Universe)은 다음과 같은 3층의 노드 구조 (천체 모델)로 정의됩니다.

천체 타입대응하는 의미층비주얼 표현물리적 역할
극중력장 (Agent)기능적 극 (Interpreter-V, Interpreter-S, Buffer/Interface, System Observer/Integrator)코어 구체를 갖지 않고, 무게 중심에 라벨이 떠 있는 빛의 성운 (Attractor Nebula)관련 노드의 「무리 (Slime Field)」 전체가 극의 윤곽을 형성하는 동적 무게 중심
행성 (Core Event)장기 대화에서 안정화된 「결정층 (본능)」묵직하고 관성이 큰 푸른 별항성 (중력 무게 중심) 간의 균형에 이끌려 그 주변을 둥둥 떠다님
위성 (Surface Event)최근의 문맥이나 외부 환경 「휘발층 (관심)」작고 은은하며 휘발성이 높은 노란 별행성 주변에 트랩(Trap)되어 격렬하게 흔들림

여기서 매우 중요한 점은, Visualizer 상에서 기능적 극 (Agent)을 고정된 「실체로서의 중심 코어 구체」로 묘사하지 않는다는 것입니다.

Runtime 내부에는 각 에이전트의 제어 변수나 대화 상태와 같은 추상적인 개념으로서의 「극 (Agent)」이 존재하며, Visualizer 측에서는 그 모습을 고정된 특이점(Singularity)으로 그리는 것이 아니라, 관련 노드 군의 **「동적인 무게 중심 (Centroid)」**으로서 공간상에 투영하는 2단계 구성을 취하고 있습니다.

그리고 관련 노드 군 (Slime Field)이 퍼져 나가는 공간 전체를, 은은하게 빛나는 불투명도 12%의 경계 버블 (Attractor Nebula)이 감싸 안음으로써 에이전트의 동적인 경계선을 표현합니다.

본 프로젝트에서는 주체를 고정 속성으로 정의하는 것이 아니라, 이러한 관계성과 운동의 궤적으로서 모델링하고 있으며, 그 설계 사상이 3D 물리 엔진의 다체 연산(N-body simulation) 속에서 그대로 시각화되고 있는 것입니다.

🗺️ 갈등과 지양(Aufheben)으로서의 「계층 컨테이너 (Container)」

「정적인 폴더 구조나 계층도 (지식의 지도)로 만들지 않는다」라는 철학을 내세우는 한편, .atra에 「계층 구조 (Container)」를 도입하는 것은 언뜻 보기에 자기모순(퇴행)처럼 보일 수도 있습니다.

하지만 본 프로젝트에서의 컨테이너는 정보를 배타적으로 가두고 관계성을 단절시키는 기존의 「딱딱한 파일 폴더」가 아닙니다. 무한히 확산하는 유동적인 의미 중력 공간에서, 인간이 그 운동을 관찰·디버깅하고 시스템으로서 제어 가능하게 만들기 위한 **투명하고 다공질적인 「완충막 (Sanctuary / Buffer)」**입니다.

Atra Compiler는 인덴트(Indent)된 기술을 감지하면 이를 계층 컨테이너 (White Node)로 매핑하지만, 이 컨테이너는 절대적인 감옥이 아닙니다. 내포된 행성이나 위성은 컨테이너의 좌표에 완만하게 바인딩(Binding)되면서도, 외부 에이전트 무게 중심으로부터의 인력 (Tension)에 노출되어 항상 경계를 흐릿하게 하며 흔들리고 있습니다.

즉, 컨테이너는 정보를 고정하기 위한 「폴더」가 아니라, 「동적인 관계성 (Rhizome)」과 「인간의 인지에 적합한 정적 구조 (Tree)」를 지양 (Aufheben)하기 위한 가설의 발판인 것입니다.

3D 공간상에 매핑된 「의미의 기상」

이하는 실제로 구축된 Atra Visualizer 상에서 구동되고 있는, 의미 중력 공간의 실시간 관측 비주얼입니다.

1. 개별 에이전트의 어트랙터 성운 전체상

個別エージェントのアトラクター星雲の全体像

▲ 그림 1: 특정 1 에이전트 (예: 시스템 구조 관찰 극)의 주변에 전개된 퍼스널 어트랙터 성운 (경계 버블)의 전체상. 에이전트의 컨텍스트나 관심사에 연결된 다수의 미세한 어트랙터 노드 (흰색 글자 라벨 무리)가 불투명도 12%의 커다란 경계 구체에 감싸여, 안정적인 클러스터 (Cluster)를 형성하고 있는 모습.

2. 특정 노드 간의 중력 텐션

特定ノード間の重力テンション

▲ 그림 2: 특정 2극 간(예: 완충극과 공명 노드)의 텐션(연결 강도) 클로즈업. 개념 간의 끌림 강도가 연결 링크의 굵기나 휘도로 실시간 매핑되어, 국소적인 「의미의 탈출선 (Escape Line)」을 형성하고 있다.

3. 개별 개념 노드로의 인터랙션 (Interaction)

個別概念ノードへのインタラクション

▲ 그림 3: 계층 컨테이너 노드(예: Experimental_Zone)로의 인터랙션(Hover) 시 동작. .atra에서 계층 구조(Container)로 정의된 노드는 일반적인 이벤트 구체(행성·위성)와 달리, 3D 공간상에서 흰색 와이어프레임 입체(White Node)로 그려지며, 호버 시 그 윤곽과 노드명이 팝업된다.

4. 다이내믹한 인력 밸런스 (동작 데모)

ダイナミック公転ループ(動作デモ)

▲ 그림 4(동영상): 3D 물리 연산 (d3-force)에 의해 둥둥 떠다니며 서로 끌어당기고, 부유·진동하며 균형을 유지하는 노드군. 시간의 경과에 따라 기억의 「휘발층 (Surface)」이 궤도에서 이탈·망각되거나, 새로운 입력 신호에 의해 행성 (Core)의 위치가 매끄럽게 전이 (Drift)되는 「의미의 기상 변화」를 그려낸다.

3. Tech Stack & Architecture: Vite와 Go HTTP API를 통한 동적 간섭

이 3D 우주를 웹 브라우저 상에 고속으로 렌더링하기 위해, Vite + React 프론트엔드는 Go로 작성된 Atra Runtime의 HTTP API 백엔드 (DashboardServer)와 직접 통신하는 아키텍처를 채택하고 있습니다.

Vite 측 프론트엔드는 정적인 JSON 파일을 로드하는 것이 아니기 때문에, Go 서버가 제공하는 다음의 REST 엔드포인트를 Promise.all로 일괄 페치(Fetch)하여, 메모리 상의 React State를 고속으로 부분 업데이트(차분 조율)합니다.

  • /api/state: 4가지 기능적 극의 벡터 성분 및 현재 사색 상태를 반환 (AtraState).
  • /api/topology: 의미 공간을 구성하는 노드 (nodes)와 인력 링크 (connections)를 반환.
  • /api/logs: 실시간으로 발생한 채팅 로그를 반환.
  • /api/events: 망각 트리거 및 드리프트 발생 등의 시스템 이벤트를 반환.

4. 개념 모델: 5가지 역학 파라미터 (T-D-O-I-X)라는 가설

Go 백엔드에서 프론트엔드 비주얼라이저로 전달되는 상태 (/api/state)에서, 각 극들의 상태는 다음과 같은 **5차원 역학 파라미터 (T-D-O-I-X 벡터)**로서 수치화되어 있습니다.

interface Vector {
  T_territory: number; // 보존성 (영토성)
  D_drift: number; // 표류성 (유동성)
  ...
}

LLM의 상태를 동적으로 제어함에 있어, 왜 이 '5가지' 파라미터를 설계했을까요?

지난 기사 (Part 2)에서는 생성된 텍스트의 표층으로부터 산출되는 「4가지 관측상 (Observational Phases)」 (Crystallinity / Viscosity / Volatility / Substrate)에 대해 해설했습니다. 이것들은 말하자면 계(System)가 처해 있는 현재의 「기상 데이터 (기압이나 습도 등의 출력 결과)」입니다.

하지만 이 관측 데이터만으로는 「다음에 어느 방향으로 시스템을 유도해야 하는가」라는 **능동적인 제어의 힘 (입력 벡터)**을 결정할 수 없습니다. 이에 따라 MVA 제어계에서는 관측된 4가지 상을 바탕으로, 각 극(에이전트)이 가진 내부 다이내믹스를 결정하는 조작 변수로서 실제 런타임에 구현하여 검증을 진행하고 있는 것이 바로 이 **5가지 제어용 파라미터 (T-D-O-I-X)**입니다.

참고로, 그 수나 정의는 향후 검증 결과에 따라 변경될 가능성이 있습니다.

주의해야 할 점은, T-D-O-I-X는 주체 그 자체를 정의하는 절대적인 변수가 아니라, Embedding, 노드 배치, 링크 구조 등이 복잡하게 얽혀 만들어내는 상호작용에 대해 그 다이내믹스를 조작·관측하기 위한 한 세트의 「제어 변수 (입력 벡터)」라는 것입니다.

이것은 의미 공간의 운동을 단순한 「탐색 (Explore)」 혹은 「개발 (Exploit)」이라는 일의적인 이지택이 아니라, 「보존, 탐색, 감쇠, 일관성, 전파」라는 다각적인 역학계 (Cybernetics)로서 제어하기 위한 가설 모델입니다.

:T_territory

(보존성 / Territory)

자기의 고유한 의미 영역을 에워싸고, 현재의 상태를 보존하려는 「인력」입니다. 이것이 높아지면, 비주얼라이저 상에서는 관련 이벤트 노드들이 극의 무게 중심 주변으로 강하게 끌려와, 국소적인 고밀도 **클러스터 (Territory Clusters)**를 형성합니다.

이때 클러스터의 중심에는 단단한 코어 구체가 없으며, 노드 군집의 무게 중심에 에이전트 이름이 떠오르고, 군집 전체를 감싸는 경계 버블이 T_territory의 축퇴력 (조임)에 따라 동적으로 꽉 압축되며 수축합니다. 시스템의 아이덴티티 (통계적 편향)를 고정하기 위한 코어 파라미터입니다.

:D_drift

(표류성 / Drift)

외부 입력이나 시간 경과에 몸을 맡겨, 상태를 매끄럽게 갱신 (천이)시키려는 「유동력」입니다. 이것이 높아지면, 노드는 특정 극으로부터의 속박 (로컬한 고착)을 뿌리치고 공간을 완만하게 흐르기 시작합니다. 그에 따라 극을 형성하던 노드 군집의 무게 중심 (에이전트의 표시 좌표) 자체도 매끄럽게 이동 (드리프트)하며, 실체가 없는 에이전트 자신의 위치도 공간 위를 표류합니다.

:O_resistance

(저항성 / Resistance)

외부로부터 급격한 응답이나 특정 정의 요구가 들이닥쳤을 때, 상태의 급변을 거부하려는 「임피던스 (감쇠력)」입니다. 이것이 외력에 대한 쿠션 (버퍼)으로 작용함으로써, 대화의 돌발적인 파탄을 방지하고 급격한 컨텍스트 천이를 완화합니다.

:I_inertia

(관성 / Inertia)

과거의 운동 방향 (문맥의 흐름)을 외부의 돌발적인 입력 (노이즈)에 휩쓸리지 않고, 시간축 상에서 일관되게 유지하려는 「운동량」입니다. 이것이 높으면 수백 턴에 이르는 대화에서도 표층적인 흔들림에 좌우되지 않는 「일관된 사고의 궤도」를 등속으로 계속 유지합니다.

:X_resonance

(공명성 / Resonance)

서로 다른 극이나 키워드 간에 정보를 전파시키고, 경계선을 뛰어넘어 연쇄적인 반응을 일으키는 「결합 계수」입니다. 이것이 높아지면 여러 재귀 루프 간의 상관 링크가 활성화되어, 의미의 불연속적인 **상전이 (번뜩임, 또는 상태의 도약)**를 일으킵니다.

이 5개 성분의 상호작용을 통해서야 비로소 AI의 상태 천이는 「정적인 일문일답」에서 해방되어, 3D 우주에서 유기적으로 서로 끌어당기며 복잡한 「점탄성 (유동성과 보존성의 균형)」을 갖춘 동적인 다이내믹스를 획득하게 됩니다.

5. 구현 접근 방식: 3D 물리 엔진과 중력 왜곡의 구현 (App.tsx)

다음 코드는 설계 사상을 설명하기 위해 요약·간략화한 개념 예시이며, 실제 구현과는 일부 다릅니다.

다음은 react-force-graph-3d 및 Three.js를 사용하여, Go 백엔드로부터 실시간으로 T-D-O-I-X 벡터 성분을 페치(fetch)하고, 「고정된 코어를 두지 않고, 군집을 감싸는 12%의 빛의 성운 (경계 버블)을 동적으로 스케일링하는」 핵심적인 TypeScript 개념 구현 코드 (App.tsx)의 컨셉입니다.

// App.tsx (Atra Visualizer Core Concept)
import React, { useState, useEffect, useCallback, useRef } from 'react';
import ForceGraph3D from 'react-force-graph-3d';
...

마치며: 항적이라는 이름의 「실재」

Atra Visualizer가 기동되어 Vite 화면에 암청색의 3D 우주가 나타날 때, 우리는 AI의 「언어」를 단순한 일문일답의 로그가 아니라 연속된 「흐름」으로서 파악하기 쉬워집니다.

실체로서 고정된 항성을 갖지 않고, 사색의 「군집 (슬라임 필드)」 자체가 극의 무게 중심 (Centroid)으로서 꿈틀거리는 모습은, 보이지 않는 사고의 중력장을 매핑한 하나의 역학계입니다.

대화에 의해 태어난 행성 (Core)이나 위성 (Surface)들이 T-D-O-I-X의 5개 성분 벡터에 따라 서로 끌어당기고, 때로는 고착하며, 때로는 매끄럽게 표류해 나갑니다.

이러한 역동적인 운동을 실시간으로 관측함으로써, 정적인 프롬프트 (Prompt) 설계만으로는 보이지 않았던 "AI의 자율적인 상태 전이 (State Transition) 편향"을 궤적 (Trajectory)으로서 시각적으로 쉽게 파악할 수 있게 됩니다.

물론, 이 Atra Visualizer는 현시점에서 완성된 최종 제품은 아닙니다. 현재도 5개 성분 (T-D-O-I-X) 역학 모델의 역동적인 정교화, 노드 (Node) 증가 시의 3D 렌더링 (Rendering) 부하 최적화, 나아가 계층 컨테이너 (Container) 자체의 역동적인 바인딩 (Binding) 및 조작 방법 등, 시각화 도구 자체의 기능과 표현 형식에 대한 업데이트를 매일 지속하고 있습니다.

이 발전 단계에 있는 관측 장치를 기반으로, 우리는 "의미 공간에서의 주체의 움직임"을 더욱 깊게 튜닝 (Tuning)해 나갈 것입니다.

다음 회차에서는 이 "운동으로서의 주체"에 흐르는 인지적 가설에 대해, 간담 (Interlude)으로서 조금 더 깊이 파고들어 보겠습니다.

Discussion

AI 자동 생성 콘텐츠

본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0