26.4 KB · updated 2026-07-06 · md

v0.2.0.ko.md

docs/i18n/release-notes/v0.2.0.ko.md

Tesserae v0.2.0 — 타입드 검색, 코드 그래프, 온톨로지 진화

<!-- translations:start -->

English · 中文 · 日本語 · Русский · Español · Français · Deutsch

<!-- translations:end -->

릴리스 일자 2026-05-21 · PyPI · GitHub release · pip install --upgrade tesserae

Tesserae 0.2.0은 v0.1.0 계열 위에 올라간 첫 번째 기능 릴리스이며, 하위 호환성을 깨지 않는 여섯 가지 추가 기능을 제공합니다. 이번 릴리스는 Tesserae의 검색 표면을 "타입드 그래프 위의 BM25"에서 Personalized PageRank (개인화 페이지랭크) 시드 확장을 갖춘 HippoRAG-2 스타일의 하이브리드 검색기로 끌어올리고, 산문 형식의 인사이트를 소스 심볼에 연결하는 code-as-graph 기반을 마련하며, 두 가지 온톨로지 진화 패스(커뮤니티 요약과 메모리 감쇠)와 스키마 드리프트 리포트를 추가합니다. 이 기능들은 사용자 워크플로의 세 지점에 대응됩니다: *질의 시점*의 더 나은 재현율(graph_ppr, 하이브리드 search_nodes), *컴파일 시점*의 더 풍부한 노드(ingest-code, 커뮤니티 요약, 감쇠/supersedes), 그리고 온톨로지 자체에 대한 더 빠른 반복 루프(schema-drift).

목차:

  1. MD0 — 타입드 그래프 위의 Personalized PageRank
  2. 하이브리드 MD0 — RRF를 통한 BM25 + 어휘 + 임베딩
  3. MD0 — Python AST → 타입드 코드 그래프
  4. 커뮤니티 요약 — Louvain + LLM (옵트인)
  5. 감쇠 점수 + MD0 + MD1
  6. MD0 — EDC enum 제안
  7. v0.1.0에서 업그레이드하기
  8. 전략적 맥락

1. graph_ppr — 타입드 그래프 위의 Personalized PageRank

무엇인가요

하나 또는 여러 노드 ID를 시드로 하여 Personalized PageRank (PPR, 개인화 페이지랭크) 를 실행하고, 정상 분포 질량(stationary-distribution mass) 기준으로 가장 관련성 높은 상위 k개 노드를 반환하는 새로운 MCP 도구입니다. 이 워크는 타입을 인식합니다: 엣지는 관계 종류에 따라 가중치가 부여되며, 기본 프로파일은 Tesserae 그래프에서 가장 "실질적" 신호를 담는 네 가지 엣지 타입인 derived_from_session, discussed_in, references, supersedes에 더 큰 가중치를 둡니다. 이는 HippoRAG 2가 사용하는 멀티홉 시드 확장 프리미티브와 동일하지만, 패시지 수준의 공출현 그래프가 아니라 Tesserae의 타입드 엣지에 맞춰 조정된 것입니다.

구체적으로 graph_ppr"내가 실제로 신경 쓰는 관계들로 가중된 이 노드의 이웃은 무엇인가?" 라는 질문에, 단순 BFS나 BM25로는 답할 수 없는 방식으로 답합니다. Decision 시드는 그것을 만들어낸 세션들, 그것이 답한 질문들, 그것이 대체한 문서들, 그리고 그 문서들이 이야기한 개념들을 — 설령 어떤 노드도 동일한 키워드를 언급하지 않더라도 — 끌어옵니다.

사용 방법

이 도구는 Tesserae MCP 서버를 시작하면 자동으로 등록됩니다. 모든 MCP 클라이언트에서:

// 단일 노드를 시드로, 기본 α=0.15, 상위 10개 결과
{
  "tool": "graph_ppr",
  "arguments": {
    "seed_node_id": "decision-2026-05-12-switch-to-hybrid-retrieval",
    "top_k": 10
  }
}

// 여러 노드를 시드로("개념 클러스터"), 사용자 정의 α + 엣지 가중치
{
  "tool": "graph_ppr",
  "arguments": {
    "seed_node_ids": ["concept-rrf", "concept-bm25", "concept-embedding-fusion"],
    "top_k": 25,
    "alpha": 0.2,
    "edge_type_weights": {
      "derived_from_session": 3.0,
      "discussed_in": 2.0,
      "references": 1.5,
      "supersedes": 1.5
    }
  }
}

이 도구는 정상 질량 순으로 정렬된 {node_id, score, kind, title} 레코드 배열을 반환합니다. Claude Code 세션에서는 에이전트에게 "graph_ppr을 <node>로 시드해서 top-k 15로 실행해줘"라고 말하기만 하면, using-tesserae 스킬이 호출을 라우팅합니다.

언제 사용하나요

다음과 같은 경우에 graph_ppr을 사용하세요:

  • 잘 식별된 노드 하나(결정, 논문, 세션 발견 사항)가 있고, 키워드가 일치하는 형제 노드가 아닌 *그래프 거리 측면에서의 이웃*이 필요할 때.
  • 멀티홉 재현율이 필요할 때 — 예: "이 개념에서 두세 단계 떨어진 모든 것, 세션에서 파생된 발견 사항에 편향되도록".
  • 일반 search_nodes가 올바른 노드를 반환하지만 references로 연결된 컨텍스트가 너무 좁을 때.

문구로 시작하는 자유 텍스트 질의에는 하이브리드 search_nodes(기능 2)를, 알려진 노드의 텍스트 컨텍스트를 가져오려면 node_context를 사용하세요.

어디에 있나요

핵심 구현: MD0. 도구 등록: tesserae/mcp_server.py.

주의 사항

  • 기본값인 α=0.15(재시작 확률)와 50회 반복 상한은 프로젝트 메모리에서 일반적인 5k–50k 노드 범위의 그래프에 맞춰 튜닝되었습니다. 매우 큰 그래프(>250k 노드)에서는 더 낮은 α와 노드 차수를 인식하는 초기화가 필요할 수 있습니다; 이는 후속 작업입니다.
  • 엣지 가중치는 대칭적으로 적용됩니다; 비대칭 프로파일(예: references를 그 역방향과 다르게 가중)은 아직 노출되어 있지 않습니다.
  • 구현은 순수 Python이며 새로운 런타임 의존성을 추가하지 않습니다; 한 세션 안에서 graph_ppr을 수천 번 호출하는 핫 루프가 있다면, 호출 간에 열-스토캐스틱 행렬(column-stochastic matrix)을 캐시하는 것을 고려하세요.

2. 하이브리드 search_nodes — RRF를 통한 BM25 + 어휘 + 임베딩

무엇인가요

기존 search_nodes MCP 도구에 mode 파라미터와 그 아래의 융합 검색기가 추가되었습니다. 새로운 기본값인 mode="hybrid"는 세 가지 검색기를 병렬로 실행합니다 — BM25(v0.1.0 베이스라인), 어휘(토큰 중첩 / 부분 문자열), 임베딩(의미적 유사도) — 그리고 이를 Reciprocal Rank Fusion (RRF(d) = Σ 1/(k + rank_i(d)), k=60, Cormack et al. 2009의 상수)으로 융합합니다. 이는 Microsoft GraphRAG의 로컬 검색과 LightRAG의 하이브리드 모드가 사용하는 동일한 융합 레시피입니다.

mode 파라미터는 다음을 받습니다:

모드사용되는 검색기
hybrid (기본값)BM25 + 어휘 + 임베딩, RRF로 융합
lexical어휘만
bm25BM25만
embedding임베딩만
legacyv0.1.0의 정확한 랭킹 — 비트 단위로 보존

임베딩 백엔드는 자동 감지되며 순서는 다음과 같습니다: sentence-transformers를 임포트할 수 있으면 sentence-transformers/all-MiniLM-L6-v2(384차원, 약 80MB, MIT 라이선스, 최초 다운로드 후에는 네트워크 호출 없음)를 로드합니다. 그렇지 않으면 결정적 해시 버킷(hash-bucket) 프로젝션으로 폴백합니다 — 사용 가능하고, 의존성이 없으며, 재현 가능하지만 의미적 재현율은 더 약합니다.

새로운 동반 MCP 도구인 embedding_status 는 어떤 백엔드가 활성화되어 있는지 보고하므로, 하이브리드 점수가 실제 임베딩의 이점을 누리고 있는지 아니면 해시 버킷 폴백에서 실행되고 있는지 확인할 수 있습니다.

사용 방법

// 새로운 기본값 — 융합, 상위 10개 반환
{
  "tool": "search_nodes",
  "arguments": { "query": "RRF fusion constant choice", "top_k": 10 }
}

// 어블레이션을 위해 단일 검색기 강제
{ "tool": "search_nodes", "arguments": { "query": "RRF fusion", "mode": "bm25" } }

// v0.1.0 동작으로 비트 단위 롤백
{ "tool": "search_nodes", "arguments": { "query": "RRF fusion", "mode": "legacy" } }

// 어떤 임베딩 백엔드가 활성화되어 있는지 확인
{ "tool": "embedding_status", "arguments": {} }

해시 버킷 폴백 대신 실제 sentence-transformers 백엔드를 사용하려면:

pip install 'sentence-transformers>=2.7'
# 첫 호출은 MiniLM 가중치(~80MB)를 HF 캐시로 다운로드합니다; 이후 호출은 오프라인입니다.

어떤 모드를 언제 사용하나요

  • 기본적으로 모든 경우에 hybrid 를 사용하세요. RRF는 순위-역수 감쇠가 단일 검색기의 기여를 제한하기 때문에, 한 검색기가 쓰레기 결과를 반환해도 견고합니다.
  • 질의가 본질적으로 태그나 구조적 슬러그(concept-rrf, decision-2026-05-12-…)일 때는 bm25 — 정확 일치가 지배적이고 임베딩은 잡음을 더합니다.
  • 질의가 의역(paraphrase)이거나 질문이고 일치할 노드들이 매우 다른 어휘를 사용할 때는 embedding.
  • v0.1.0 베이스라인에 대한 어블레이션, 또는 단일 회귀가 나타날 경우의 탈출구로는 legacy.

어디에 있나요

핵심 구현: MD0.

주의 사항

  • 해시 버킷 폴백은 재현 가능하지만 의역에 대한 의미적 재현율이 제한적입니다 — embedding_status가 선택을 가시화합니다.
  • 현재 RRF 상수는 60으로 고정되어 있습니다; 호출별로 구성 가능하게 만드는 것은 다른 값을 시험하고 싶다면 작은 후속 작업입니다.
  • 임베딩 캐싱은 프로세스 단위입니다; 영속화된 임베딩 저장소(Lance/SQLite-vec)는 향후 v0.3 후보입니다.

3. tesserae project ingest-code — Python AST → 타입드 코드 그래프

무엇인가요

표준 라이브러리의 ast 모듈을 사용해 Python 저장소를 순회하면서 다섯 가지 타입드 노드 종류다섯 가지 엣지 종류를 생성하는 새로운 CLI 서브커맨드입니다:

노드엣지
CODE_FILE, CODE_MODULE, CODE_CLASS, CODE_FUNCTION, CODE_METHODcontains, calls, imports, inherits_from, declared_in

결과는 .tesserae/code-graph.json에 영속화되고 다음 tesserae project compile에 의해 수집되므로, 코드 심볼은 산문에서 링크하고, search_nodes로 검색하고, graph_ppr로 확장하고, 개념·논문과 함께 시각화할 수 있는 일급 그래프 노드가 됩니다. 이는 *결정을 그것을 구현한 심볼에 연결*하는 기반을 마련합니다 — 현재 다른 어떤 PKM-AI 도구도 채우지 못한 틈새입니다.

사용 방법

# 활성화된 Tesserae 프로젝트에서
tesserae project ingest-code

# 또는 임의의 루트에 대해
tesserae project ingest-code --root ./my-package

# 그러면 일반 컴파일이 새 code-graph.json을 수집합니다
tesserae project compile

다음 컴파일 이후 코드 노드는 검색 가능해집니다:

tesserae ask "Where is the RRF fusion implemented?"

…그리고 에이전트는 산문 Decision 노드에서 그것을 구현한 CODE_FUNCTION까지 references / declared_in 엣지를 따라 이동할 수 있습니다.

언제 사용하나요

  • 결정과 발견 사항이 그것이 논의하는 실제 심볼에 연결되기를 원할 때 — 단지 그 심볼을 언급하는 README가 아니라.
  • 별도의 코드 검색 인덱스를 설정하지 않고 코드 인식 검색을 원할 때 — 동일한 search_nodes + graph_ppr 도구가 이제 산문과 코드를 모두 다룹니다.
  • Understand-Anything 통합을 사용하고 있지만, 사이드카 JSON이 아닌 메인 Tesserae 그래프 안에 있는 더 가볍고 의존성 없는 코드 그래프를 원할 때.

어디에 있나요

핵심 구현: MD0.

주의 사항

  • v0.2.0에서는 Python만 지원합니다. 추출기는 나중에 언어별 워커를 추가할 수 있도록 구조화되어 있습니다; TypeScript / Rust / Go는 v0.3 로드맵에 있습니다.
  • calls 엣지는 같은 모듈 범위 내에서의 이름 조회로 해결됩니다; 모듈 간 호출 해결은 import 별칭을 사용하지만 전체 타입 추론은 하지 않습니다. 과도하게 오버로드된 이름에서는 적당한 오탐률을 예상하세요 — 검색에는 괜찮지만 리팩토링에는 부적합합니다.
  • 데코레이터는 데코레이션된 노드의 속성에 기록되지만, (아직은) 자체 엣지 종류를 만들지 않습니다.

4. 커뮤니티 요약 — Louvain + LLM (옵트인)

무엇인가요

타입드 그래프 위에서 Louvain 커뮤니티 탐지를 실행한 다음, 크기 ≥ 4인 각 커뮤니티에 대해 LLM에게 한 문단짜리 요약을 생성하도록 요청하는 옵트인 컴파일 후 패스입니다. 각 요약은 COMMUNITY_SUMMARY 노드로 구체화되고, summarizes 엣지로 멤버에 연결되며, 멤버-ID 목록의 SHA로 캐시되어 재컴파일 시 실제로 멤버십이 변경된 커뮤니티만 다시 요약합니다. 이는 Microsoft GraphRAG가 질의 시점에 "이 클러스터는 무엇에 관한 것인가?"를 드러내기 위해 사용하는 것과 동일한 패턴입니다.

새로운 MCP 도구 list_communities(min_size, limit) 는 멤버 수로 정렬된 커뮤니티 요약 노드를 반환하므로, 그래프를 로드하지 않고도 그 매크로 구조를 탐색할 수 있습니다.

사용 방법

환경 변수로 옵트인한 후 컴파일하세요:

export TESSERAE_COMMUNITY_SUMMARIES=true
tesserae project compile

그런 다음 생성된 요약을 질의합니다:

{ "tool": "list_communities", "arguments": { "min_size": 5, "limit": 20 } }

또는 node_context를 통해 커뮤니티 요약 노드의 summarizes 엣지를 따라 그 멤버로 되돌아갈 수 있습니다.

언제 활성화하나요

  • 중간에서 큰 규모의 그래프(경험칙상 500 노드 초과)가 있고, *클러스터 수준의 목차*를 원할 때.
  • 정적 사이트의 그래프 뷰 색상 그룹에 LLM이 작성한 클러스터 레이블을 붙이고 싶을 때.
  • 주기적인 다이제스트(주간 / 월간)를 생성하고 있고, 멤버십이 실제로 이동했을 때만 업데이트되는 "매크로 구조" 섹션을 원할 때.

그래프가 작은 경우(단일 프로젝트 README + 몇 개의 문서), 구조적 Synthesis 노드가 이미 이를 다루고 있습니다 — 커뮤니티 요약은 신호가 아닌 잡음을 더합니다.

어디에 있나요

핵심 구현: MD0.

주의 사항

  • 기본적으로 꺼져 있습니다 — Louvain + LLM 요약은 벽시계 시간을 추가하고, 커뮤니티가 많은 그래프에서는 LLM 비용이 상당합니다. 캐시는 재컴파일 전반에 걸쳐 이를 분할 상환합니다.
  • 커뮤니티 멤버십은 Louvain 시드에 따라 비결정적입니다; 패스는 프로젝트 내 재현성을 위해 시드를 고정하지만, 프로젝트 간 커뮤니티 ID 비교는 의미가 없습니다.
  • 요약 프롬프트는 일반적입니다; 도메인별 프롬프트 오버라이드는 계획된 후속 작업입니다.

5. 감쇠 점수 + supersedes + fresh_insights

무엇인가요

두 가지 상호 보완적인 프리미티브로, 둘 다 A-MEM의 Ebbinghaus 감쇠 메모리 모델에서 영감을 받았습니다:

감쇠 점수는 모든 세션 발견 노드(Insight / Decision / Question / TODO / Hypothesis / Takeaway)에 고전적인 망각 곡선을 사용해 연속적인 decay_score ∈ (0, 1]을 할당합니다:

decay_score = exp(-ln(2) · age_days / half_life)

기본 반감기는 14일이며, access_count 증가(노드가 askfresh_insights에 의해 노출될 때마다)는 감쇠를 더 늦춥니다. 구조적 결정 타임스탬프는 부모 세션에서 파생되므로, 백필된 발견 사항도 합리적인 나이를 갖습니다.

supersedes 패스제목 + 콘텐츠 shingle에 대한 Jaccard 유사도로 거의 중복된 세션 발견을 찾은 다음, LLM에게 새 것이 실제로 옛 것을 대체하는지 판단하도록 요청하는 옵트인 컴파일 후 단계입니다. 확인된 쌍은 supersedes 엣지를 받고, 옛 노드의 유효 decay_score는 억제됩니다.

새로운 MCP 도구 fresh_insights(limit, kind) 는 현재 decay_score 기준 상위 발견 사항을 반환하며, 대체된 노드는 제외합니다. 이는 "에이전트가 과거 세션에서 무엇을 우선시해야 하는가?"라는 표준 질의입니다.

사용 방법

감쇠 점수는 모든 컴파일에서 자동으로 실행됩니다. supersedes 패스를 활성화하려면:

export TESSERAE_SUPERSEDE_PASS=true
tesserae project compile

그런 다음 대체되지 않은 가장 신선한 발견 사항을 질의합니다:

{
  "tool": "fresh_insights",
  "arguments": { "limit": 15, "kind": "Decision" }
}

또는 kind를 생략하면 모든 세션 발견 종류에 걸친 혼합 피드를 받습니다.

supersedes 패스는 언제 활성화하나요

  • 매주 세션을 누적하고 있고, Decision / Hypothesis 질의가 상충하는 오래된 항목을 반환하기 시작했을 때.
  • 에이전트의 using-tesserae 재현 흐름이 "X에 대해 우리가 생각했던 모든 것"이 아니라 "X에 대한 현재 사고방식"으로 편향되기를 원할 때.
  • 비용이 수용 가능할 때: 각 컴파일은 하나의 Jaccard 패스(저렴)와 Jaccard 임계값을 넘는 후보 쌍에 대한 N번의 LLM 판단 호출(콘텐츠 해시로 캐시됨)을 지불합니다.

세션이 몇 주 분량밖에 없다면 감쇠만으로도 보통 충분합니다 — supersedes 엣지는 더 오래되고 밀집된 그래프를 위한 최적화입니다.

어디에 있나요

  • 감쇠 점수: MD0
  • Supersedes 패스: MD0

주의 사항

  • 14일 반감기는 활발한 연구 프로젝트에 합리적인 기본값입니다; 장기 보관 그래프는 60-90일을 원할 수 있습니다. 종류별 반감기 테이블은 계획된 v0.3 기능입니다.
  • Jaccard 후보 생성은 고정된 shingle 크기 5를 사용합니다; 매우 짧은 발견 사항(한 문장 Takeaway)은 충분히 클러스터링되지 않을 수 있습니다.
  • supersedes LLM 판단기는 의도적으로 보수적입니다 — 거짓 음성(놓친 중복)이 거짓 양성(잘못된 supersedes 엣지)보다 우선됩니다.

6. tesserae project schema-drift — EDC enum 제안

무엇인가요

온톨로지가 코퍼스와 함께 진화하도록 돕는 새로운 CLI 서브커맨드입니다. EDC 패턴(Extract-Define-Canonicalize, EMNLP'24)을 구현합니다: 각 대용량 노드 종류에 대해 제목+콘텐츠 shingle로 멤버들을 Jaccard 클러스터링한 다음, LLM에게 클러스터당 짧은 근거와 세 개의 대표 멤버 미리보기와 함께 PascalCase 하위 타입을 제안하도록 요청합니다. 출력은 ontology/의 온톨로지 파일에 복사-붙여넣기 가능한 enum 추가 체크리스트로 .tesserae/schema-drift.md 에 작성됩니다.

LLM 제안은 클러스터 멤버 ID의 SHA를 키로 하여 원자적으로(임시 파일에 쓴 다음 이름 변경) 캐시되므로, 패스를 다시 실행하는 것은 저렴하며 코퍼스가 변경되지 않으면 동일한 제안으로 수렴합니다.

사용 방법

tesserae project schema-drift
# → .tesserae/schema-drift.md 작성

그런 다음 리포트를 열어 제안된 enum을 검토하고(각 블록은 복사-붙여넣기 가능한 Python 리터럴), 수락된 것을 ontology/ 아래의 관련 파일에 붙여 넣으세요. 다음 tesserae project compile은 업데이트된 스키마에 대해 검증할 것입니다.

언제 사용하나요

  • 새 문서 / 세션의 대규모 배치 이후, 새로운 노드 종류 값을 일급 enum으로 승격시키기 전에.
  • 장기 실행 프로젝트에서 주기적으로(매월) 온톨로지 드리프트를 드러내기 위해 — 리포트는 빠르고 읽기 전용입니다.
  • 핸드오프 산출물로: 마크다운은 독립적이므로, 전체 Tesserae CLI를 설정하지 않고도 리뷰어(또는 다른 에이전트)에게 넘길 수 있습니다.

어디에 있나요

핵심 구현: MD0.

주의 사항

  • 제안은 *제안*일 뿐입니다 — 어떤 클러스터가 실제 enum 값이 될지는 여전히 사람(또는 다운스트림 에이전트)이 결정합니다. 이 패스는 의도적으로 자체적으로 ontology/를 변형하지 않습니다.
  • Jaccard 클러스터링은 supersedes 패스와 동일한 shingle 크기 가정을 공유합니다; 매우 짧은 멤버는 덜 선명하게 클러스터링될 수 있습니다.
  • 패스는 대용량 종류에 초점을 맞춥니다; 드문 종류(≤ 3 멤버)는 추측성 enum을 피하기 위해 건너뜁니다.

v0.1.0에서 업그레이드하기

pip install --upgrade tesserae

이것이 전체 업그레이드입니다 — v0.2.0은 하위 호환성을 깨지 않는 추가 기능입니다. 알아두면 좋은 몇 가지 선택적 노브가 있습니다:

옵트인 패스를 위한 환경 변수:

# 컴파일 후 커뮤니티 요약 패스를 활성화 (기능 4)
export TESSERAE_COMMUNITY_SUMMARIES=true

# supersedes 거의-중복 패스를 활성화 (기능 5)
export TESSERAE_SUPERSEDE_PASS=true

알아두어야 할 한 가지 MCP 표면 변경: search_nodes는 이제 mode="hybrid"를 기본값으로 합니다. 정확한 v0.1.0 랭킹에 의존하는 자동화가 있다면 mode="legacy"를 전달하세요 — legacy 경로는 비트 단위로 보존됩니다.

실제 임베딩 백엔드를 위한 새로운 선택적 Python 의존성:

pip install 'sentence-transformers>=2.7'

이를 건너뛰어도 search_nodes mode="hybrid"는 여전히 동작합니다(해시 버킷 폴백); embedding_statusminilm-l6-v2 대신 hash-bucket을 보고하므로 선택이 관찰 가능합니다.

근육 기억에 추가할 새로운 CLI 서브커맨드:

tesserae project ingest-code      # 코드 노드 생성 (기능 3)
tesserae project schema-drift     # 온톨로지 enum 제안 (기능 6)

에이전트가 이제 사용할 수 있는 새로운 MCP 도구:

  • graph_ppr (기능 1)
  • embedding_status (기능 2)
  • list_communities (기능 4)
  • fresh_insights (기능 5)

그 외 모든 것 — 슬래시 커맨드, 훅, ask, 위키 / Obsidian 프로젝션 — 은 변경되지 않았습니다.


전략적 맥락

v0.2.0은 Tesserae를 구조적으로 2026년 GraphRAG / 에이전트 메모리 최신 기술 수준에 맞춥니다:

  • 하이브리드 검색(RRF를 통한 BM25 + 어휘 + 임베딩)Microsoft GraphRAG 로컬 검색과 LightRAG의 하이브리드 모드가 사용하는 것과 동일한 융합 레시피입니다.
  • Personalized PageRank 시드 확장HippoRAG 2의 핵심에 있는 멀티홉 프리미티브로, 여기서는 패시지 공출현이 아닌 타입드 엣지에 맞춰 조정되었습니다.
  • 커뮤니티 요약은 Microsoft GraphRAG의 클러스터-요약 레이어를 반영합니다 — "이 코퍼스는 대략 무엇에 관한 것인가?" 질의에 빠르고 구조적인 답을 제공하는 레이어입니다.
  • 감쇠 점수 + supersedes는 프로젝트 메모리에 적용된 A-MEM Ebbinghaus 모델입니다; supersedes 패스는 Mem0의 "ADD / UPDATE / DELETE" 메모리 연산에 더 가깝지만, 인-플레이스 재작성이 아니라 순수 엣지로 표현됩니다.
  • EDC를 통한 스키마 드리프트는 EMNLP'24의 Extract-Define-Canonicalize 아이디어를 관계 추출이 아닌 온톨로지 진화에 적용한 것입니다.

Tesserae 고유의 방어 가능한 틈새로 남아 있는 것: 곳곳에 있는 타입드 엣지, 일급 그래프 노드로서의 세션 발견 사항, 그리고 (이제는) 같은 그래프 안의 코드 심볼. 2026년 환경의 대부분의 경쟁자는 타입드 엣지가 전혀 없습니다; 그것을 갖춘 것 중에서도 산문 결정을 코드 심볼에 연결하는 것은 없습니다 — v0.2.0에서 마련된 feat/code-graph 기반은 그 틈새가 복리로 쌓이기 시작하는 곳입니다.

함께 보세요:

  • 아키텍처 개요 — 모듈 맵과 파이프라인
  • 기능 맵 — 소스 링크가 있는 전체 기능 상태 표
  • 세션 통합 — 감쇠와 supersedes가 동작하는 대상인 세션 그래프 기능
  • MCP 통합 — 전체 MCP 도구 목록 (네 개의 새 도구는 다음 문서 패스에서 여기에 추가됩니다)