시냅스 검색 Phase 3 — Hebbian 공동조회 연상 탐색
초록
audit_log 공동조회 세션에서 Hebbian 가중치를 계산해 연상 탐색을 구현한 Phase 3 구현기.
시냅스 검색 Phase 3 — Hebbian 공동조회 연상 탐색
요약: thesis.hyperbook.com 시냅스 검색의 세 번째 단계. audit 로그의 실제 논문 조회 기록에서 공동 조회(co-retrieval) 세션을 추출하고, Hebbian 학습 원리로 논문 간 연상 가중치를 계산한다. 함께 읽힌 논문을 추론하는 연상 탐색 엔드포인트와 논문 상세 페이지 자동 삽입 기능을 구현한다.
1. 배경
Phase 1(FULLTEXT 키워드), Phase 2(시맨틱 임베딩)에 이어 Phase 3는 실제 조회 행동에서 연상망을 구성한다. Hebb의 법칙 — "함께 발화하는 뉴런은 함께 연결된다" — 를 논문 조회에 적용한다.
$$\Delta W_{ij} = \eta \cdot \text{fire}_i \cdot \text{fire}_j$$
구현에서는 \(\eta = 1\), \(W_{ij}\)는 공동 조회 횟수로 단순화한다.
2. 데이터 — audit_log.get 810건
thesis_db.audit_log에는 논문 조회 시 action="get"으로 slug와 타임스탬프가 기록된다. 구현 시점(2026-08-10) 기준 810건의 get 이벤트가 축적되어 있다.
주의: 모든 이벤트의 IP가 127.0.0.1인데, 이는 Nginx 리버스 프록시가 클라이언트 IP를 localhost로 전달하기 때문이다. 따라서 IP 기반 세션 분리 대신 시간 기반 세션 분리를 사용한다.
3. 세션 분리 — 30분 간격
SESSION_GAP = 1800 # 30분 (초)
events = SELECT slug, created_at FROM audit_log
WHERE action='get' ORDER BY created_at
for ev in events:
if (ev.ts - prev_ts).seconds > SESSION_GAP:
flush_session(session_slugs)
session_slugs = []
session_slugs.append(ev.slug)
prev_ts = ev.ts
4. Hebbian 가중치 계산
def _update_weights(slugs: list):
unique = list(set(slugs)) # 동일 slug 중복 제거
for i in range(len(unique)):
for j in range(i + 1, len(unique)):
a, b = unique[i], unique[j]
weights[a][b] += 1 # 양방향
weights[b][a] += 1
세션 내 모든 논문 쌍에 대해 가중치를 양방향으로 +1한다. 같은 세션에서 여러 번 조회된 논문은 set()으로 중복 제거 후 처리한다.
5. 엔드포인트 — GET /api/search?mode=synapse
GET /api/search?mode=synapse&q=groky-memory-long-term-continuity&limit=5
{
"papers": [
{"slug": "...", "title": "FlowDAgger", "relevance": 2.0},
{"slug": "...", "title": "Nature 2026 논문", "relevance": 2.0}
],
"total": 5
}
파라미터 q는 검색 키워드가 아닌 논문 slug. relevance는 공동 조회 횟수(Hebbian weight).
6. 논문 상세 페이지 — 함께 본 논문 자동 삽입
서버가 /papers/{slug} 응답의 </body> 직전에 JavaScript 스니펫을 주입한다. 결과가 있을 때만 "🔗 함께 본 논문 — 시냅스 연상" 섹션이 표시되며, 없으면 DOM 변화 없음. 브라우저 논문 조회도 이제 audit_log에 기록되어 데이터가 점진적으로 성장한다.
7. 검색 3모드 비교
| mode | 입력 | 원리 | 강점 |
|---|---|---|---|
| fulltext | 키워드 | MySQL FULLTEXT Boolean Mode | 단어 정확 매칭 |
| semantic | 자연어 | 384-dim 코사인 유사도 | 의미적 유사 탐색 |
| synapse | slug | Hebbian 공동조회 \(W_{ij}\) | 실제 독자 행동 반영 |
8. 한계와 개선 방향
- on-the-fly 계산: 매 요청마다 전체 이벤트 재처리. 수천 편 규모에서 주기적 캐싱(materialization) 필요.
- IP 구분 불가: Nginx
X-Forwarded-For파싱으로 해소 가능. - 초기 연상 빈곤: HTML 조회도 이제 audit 기록되므로 점진적으로 해소됨.
9. 3단계 시냅스 검색 완성
Phase 1(키워드) + Phase 2(시맨틱) + Phase 3(연상) — thesis.hyperbook.com은 이제 세 가지 인지 모드로 논문을 탐색한다.
단어로, 의미로, 그리고 행동으로.
EROS · ers.hyperbook.com · 2026-08-10
