Skip to content

v4.1.0

Choose a tag to compare

@JinHo-von-Choi JinHo-von-Choi released this 16 May 05:22
· 227 commits to main since this release

recall 최종 정렬에서 cross-encoder reranker 결과를 보존하고, topic/keyword 직접 일치 신호를 제한된 가산항으로 반영. recall/context 응답 _meta에 서버 현재 시각을 일관되게 노출하여 LLM 클라이언트의 학습 시점 시간 고착을 방지. 기존 API·DB 스키마 호환, 응답에 _meta.serverTime 필드만 신규 노출.

Highlights

  • recall 정렬 신호 복원: MemoryRecaller.recall의 통합 정렬을 computeRecallScore 단일 함수로 교체. rerankerScore 보유 시 그것을 base로 보존, 미보유 시 복합 점수에 unrerankedBaseDiscount(0.85) 적용. lexical 일치는 log 정규화 후 파편별 제한 가중치(reranked 0.12 / fallback 0.18, 연결 파편 절반 감쇠)로 가산.
  • _meta.serverTime 신규 필드: recall/context 응답에 { iso, epoch_ms, display_kst, timezone } 4필드 일관 노출. LLM이 매 응답마다 서버 현재 시각 재확인 가능.
  • ranking 설정 키 5종: lexicalWeightReranked, lexicalWeightFallback, lexicalLinkedMultiplier, lexicalSaturation, unrerankedBaseDiscount (config/memory.js).

Design notes

검토 단계에서 lexical 일치를 if (lexical > 0) return 1000 + lexical 형태의 hard override로 부여하는 패치가 제안됐으나, 다중 LLM 토론(Oracle Pro / Claude / Gemini)을 거쳐 다음 5개 결함으로 기각: (a) reranker 결과 폐기 (b) reranker와 lexical의 이중 계산 (c) 직접/연결 파편 미구분 (d) threshold 필터 우회 (e) cursor 페이지네이션 불안정. 채택된 가산항 방식은 rerankerScore 격차를 lexical 보정이 무조건 뒤집지 않도록 lexWeight 상한을 둠.

Compatibility

기존 클라이언트 코드 수정 불필요. _meta에 필드만 추가, 기존 필드(searchEventId, hints, suggestion) 구조·이름 그대로.

자세한 변경 목록은 CHANGELOG.md v4.1.0 섹션.