본문으로 건너뛰기

시간 감쇠를 더한 FHRR 연상 메모리

FHRR trace 메모리의 질의 방식과 차원별 용량 한계를 재현 가능한 벤치마크로 측정했습니다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

이 글은 일반적인 vector store가 유사도 검색에는 적합하지만 주어·관계·목적어 질의와 시간에 따른 사실의 노후화를 처리하기 어렵다는 문제에서 출발해 FHRR 기반 고정 크기 메모리 라이브러리를 구현한 기록입니다. FHRR는 각 기호를 복소수 단위 phasor로 바꾸고 원소별 곱으로 triple을 결합한 뒤, 여러 사실을 하나의 trace에 합산하며, 질의 때 켤레 곱으로 필요한 항목을 복원합니다. 작성자는 d와 N을 바꾼 12회 반복 벤치마크에서 top-1 recall이 대략 N=d/4 부근에서 50%를 넘나들고, d=2048에서 N=300일 때 top-1 recall 0.782를 측정했습니다. 절대 margin 0.10 대신 z-score 4를 임계값으로 사용하면 답변 범위를 줄이는 대신 gated precision을 높일 수 있으며, d=2048에서 수백 개 사실을 저장할 때 98% precision과 40% coverage를 시작점으로 삼았습니다. 이 trace는 hosted model에 직접 전달하는 벡터가 아니라, 시간 감쇠와 모순 반영을 거친 사실 중 토큰을 쓸 가치가 있는 항목을 고르는 보조 계층입니다.

실용적 조언

  • 고정 크기 trace를 사용할 때는 d/4를 보장된 용량으로 간주하지 말고, 실제 triple 분포와 질의 조건을 포함한 자체 capacity sweep으로 N을 정해야 합니다.
  • 절대 margin 임계값은 trace가 커질수록 점수 축소를 따라가지 못하므로, 경쟁 후보 점수의 평균과 표준편차를 이용한 z-score gate를 검증해야 합니다.
  • trace는 원본 사실 목록을 대체하지 않는 계산된 view로 유지하고, 모순 감쇠와 시간 감쇠를 적용하더라도 plain fact list를 복구 기준으로 보존해야 합니다.
  • hosted model에는 vector trace를 직접 보낼 수 없으므로, 메모리 계층의 출력은 신뢰도 기준을 통과한 소수의 사실을 token context로 직렬화하는 단계까지 설계해야 합니다.

섹션별 상세

01
작성자는 assistant용 memory layer를 구축하면서 vector store의 유사도 검색만으로는 “무엇이 어떤 대상과 관계를 맺는가”라는 역질의와 오래된 belief의 시간 변화를 함께 처리하기 어렵다고 판단했습니다. 그래서 FHRR의 복소수 위상 벡터에 주어·관계·목적어를 결합하고, 각 triple에 시간 가중치를 곱해 하나의 고정 크기 trace에 합산했습니다. 이 구조는 자연어 원문을 저장하거나 retriever를 대체하지 않고, 토큰으로 넘길 사실을 고르는 계산된 view로 한정됩니다.
text
bind(a, b) = a * b elementwise
phases ADD
unbind(c, b) = c * conj(b)
phases SUBTRACT
exact inverse
T = sum_i w_i * bind(S_i, R_i, O_i)
one vector, always
unbind(T, bind(S, R)) ~= O + noise
the query

FHRR가 위상 덧셈으로 주어·관계·목적어를 결합하고, 켤레 곱으로 질의에 필요한 성분을 되찾는 핵심 연산입니다.

GitHub 저장소 holomem의 화면으로, FHRR 기반 고정 크기 연상 메모리와 시간 감쇠·재강화·모순 처리·날짜 질의를 제공한다는 저장소 설명이 표시되어 있습니다.
Screenshot이미지는 게시자가 만든 holomem 저장소의 상단 화면을 담고 있으며, 저장소 이름과 FHRR 메모리의 주요 기능을 한눈에 확인하게 합니다. 본문에서 설명한 구현체와 재현 가능한 용량 벤치마크가 실제 저장소 형태로 공개됐다는 점을 보완합니다.
02
FHRR에서는 각 기호의 hash에서 위상을 만들고, bind를 원소별 복소수 곱으로 계산하며, unbind는 두 번째 벡터의 켤레를 곱해 위상을 되돌립니다. 전체 trace T에 여러 bound triple을 합산한 뒤 bind(S, R)로 unbind하면 목표 O가 신호로 남고 다른 사실은 잡음으로 섞이며, 잡음은 사실 수 N의 제곱근 규모로 증가합니다. 같은 연산에서 인자를 바꾸면 “A가 무엇을 하는가”와 “X에 누가 관여하는가”를 모두 처리할 수 있어 별도의 역방향 인덱스가 필요하지 않습니다.
03
용량 실험은 모든 기호가 서로 다른 N개 triple을 저장하고 각각을 질의하는 최악 조건으로 구성됐으며, 각 셀을 12회 반복했습니다. d=256, N=50에서는 top-1 recall 0.800이었지만 N=100에서는 0.404로 낮아졌고, d=1024에서는 N=100일 때 0.973, N=300일 때 0.391이었습니다. 작성자는 top-1 recall 50% 교차점이 d=256, 512, 1024, 2048에서 각각 N=88, 147, 261, 463으로 측정되어 d/4를 법칙이 아닌 계획 수치로 판단했습니다.
04
초기 confidence gate는 최고 점수와 후보 점수의 절대 차이가 0.10 이상인지 검사했지만, N=100에서 모든 점수가 작아지면서 질의의 0.3%만 통과했습니다. 수정안은 최고 점수에서 나머지 평균을 뺀 값을 나머지 점수의 표준편차로 나눈 z-score를 계산하고 z가 4 이상일 때만 답하는 방식입니다. 이 기준은 0.994 gated precision과 26% coverage부터 0.984 precision과 40% coverage까지, 표의 각 조건에서 높은 정밀도와 제한된 답변 범위를 교환하는 데 사용됐습니다.
text
z = (top - others.mean()) / others.std()
answer if z >= 4 else stay silent

절대 점수 차이가 아니라 경쟁 잡음의 표준편차로 정규화한 z-score를 사용해 답변 여부를 결정하는 게이트입니다.

05
시간 계층은 생성 시점이 아니라 마지막 확인 시점부터 45일 반감기로 감쇠하고, 재언급마다 0.25를 더하되 1.5에서 제한하며, 모순된 사실은 삭제하지 않고 weight multiplier 0.35를 적용합니다. 별도의 trace에는 사실을 학습한 월을 binding해 날짜가 포함된 질의를 처리하고, 주 trace에는 날짜 정보가 섞이지 않도록 분리했습니다. 다만 trace vector 자체는 token API 뒤의 hosted model에 입력할 수 없으므로, 최종 역할은 몇 개의 사실을 선택해 모델의 입력 토큰으로 변환하기 전의 메모리 필터입니다.
06
구현체 holomem은 MIT 라이선스, numpy만 사용하는 약 400줄의 코드와 20개 테스트로 제공되며, 용량 벤치마크는 실행 전 배포된 library와 자체 검사를 수행합니다. 작성자는 d=2048에서 trace 하나에 complex128 기준 32KB, epochal trace까지 포함하면 64KB가 필요하고, 수백 개 사실의 operating point에서 98% precision과 40% coverage를 얻었다고 기록했습니다. 저장 사실 수가 d/4를 넘으면 collapse가 가파르고 cleanup에는 candidate list가 필요하므로, plain fact list를 ground truth로 유지해야 합니다.
bash
pip install numpy
python bench_capacity.py --quick

numpy 의존성을 설치한 뒤 빠른 용량 벤치마크를 실행하는 재현 명령입니다.

용어 해설

FHRR
FHRR는 복소수 벡터의 위상 정보를 이용하는 Frequency-Holographic Reduced Representation입니다. 각 기호를 단위 phasor로 바꾸고 원소별 곱으로 관계를 결합하며, 켤레 곱으로 관계를 되돌립니다. 여러 사실을 고정 크기 trace에 겹쳐 저장할 수 있지만, 사실 수가 차원에 비해 커지면 cross-talk noise가 증가합니다.
벡터 상징 아키텍처(VSA)
VSA는 기호를 고차원 벡터로 표현하고 binding과 superposition 연산으로 구조화된 정보를 저장하는 계열입니다. 이 글의 FHRR는 주파수 영역에서 복소수 위상을 사용하며, 주어·관계·목적어를 결합한 벡터들을 하나의 trace에 합산합니다. 저장 공간을 고정할 수 있지만 용량과 검색 신뢰도 사이의 절충이 필요합니다.
중첩 저장(Superposition)
중첩 저장은 여러 bound triple 벡터를 하나의 trace에 더해 보관하는 방식입니다. 질의할 때 주어와 관계를 다시 결합한 뒤 trace와의 유사도를 비교해 목적어를 찾으며, 목표 사실은 신호로 남고 나머지는 잡음으로 섞입니다. 잡음 규모가 사실 수의 제곱근에 비례하므로 저장 사실이 늘면 회수 여유가 줄어듭니다.
교차 간섭 잡음(Crosstalk Noise)
교차 간섭 잡음은 여러 사실을 하나의 벡터에 중첩할 때 질의 대상이 아닌 항목들이 검색 점수에 섞이는 현상입니다. 이 구현에서는 각 triple을 trace에 합산하고, 질의 결과의 최고 점수와 나머지 점수 사이의 차이를 비교해 간섭의 영향을 판단합니다. 벤치마크에서는 차원 d에 비해 사실 수 N이 커질수록 top-1 recall이 급격히 낮아졌습니다.

언급된 도구

holomem중립링크

FHRR 기반 고정 크기 연상 메모리와 시간 감쇠·재강화·모순 가중치·날짜 질의를 구현한 자체 library입니다.

numpy중립

FHRR의 복소수 벡터 연산과 벤치마크 실행에 사용하는 유일한 외부 library입니다.

언급된 리소스

AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 09. 04.수집 2026. 09. 04.출처 타입 REDDIT

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.