ThoughtDAG: 편집 가능한 그래프를 통한 LLM 컨텍스트 관리

ThoughtDAG는 전통적인 선형 채팅 인터페이스를 방향성 비순환 그래프(DAG)로 대체함으로써 LLM 컨텍스트를 시각화하고 편집할 수 있도록 설계된 오픈소스 도구입니다. "선이 컨텍스트다"는 개념을 적용함으로써, 사용자는 관련 없는 대화 브랜치를 수동으로 제거하고 모델 요청에 포함될 상류 노드를 정확히 제어할 수 있어, 컨텍스트 오염을 방지하고 응답 정확도를 향상시킵니다.

그래프 구조를 통한 명시적 컨텍스트 제어

ThoughtDAG는 컨텍스트 선택의 책임을 숨겨진 모델 메모리나 자동 검색(RAG)에서 사용자로 옮깁니다. 일반적인 채팅 인터페이스에서는 전체 대화 기록이 모델에 전송되는 경우가 많아, 관련 없는 부가 대화(예: 저녁 식사에 대한 이야기)가 기술적 연구 요약에 영향을 미치는 "오염된" 요약이 발생할 수 있습니다.

ThoughtDAG에서는 모든 질문과 답변이 그래프의 노드입니다. 사용자가 특정 노드에서 요청을 시작할 때, 상류 "선"으로 연결된 노드들만 프롬프트에 포함됩니다. 이 메커니즘은 다음과 같은 핵심 기능을 제공합니다:

  • 컨텍스트 정리: 사용자는 특정 대화 브랜치를 모델 메모리에서 제거하기 위해 엣지(선)를 삭제할 수 있지만, 시각화에서 메시지는 삭제되지 않습니다.
  • 재현 가능한 컨텍스트: 컨텍스트가 그래프의 엣지로 명시적으로 정의되므로, 동일한 프롬프트로 하지만 다른 컨텍스트 세트를 사용해 답변을 재생성하여 특정 정보가 출력에 어떤 영향을 미치는지 관찰할 수 있습니다.
  • 토큰 확인: 요청 전에 소스 노드, 그 순서, 총 토큰 수를 미리 확인할 수 있어, LLM 상호작용의 "숨겨진 결정" 요소를 제거합니다.

소스 출처 및 클리핑 통합

대화 기록 외에도 ThoughtDAG는 클리핑 메커니즘을 통해 외부 데이터를 통합합니다. 사용자는 PDF에서 특정 문장이나 그림을 선택하여 소스 링크가 있는 노드로 변환할 수 있습니다. 이러한 클리핑된 문장은 출처(예: 페이지 번호)를 유지하며, 사용자는 이러한 특정 증거 노드를 대화 흐름에 "선"으로 연결할 수 있습니다. 이는 특정 추론 체인에 필요한 몇 가지 사실만 필요할 때 전체 문서로 인해 모델이 과부하되는 것을 방지합니다.

기술적 구현 및 생태계

ThoughtDAG는 다음의 기술 사양을 갖춘 로컬 우선 애플리케이션으로 구현되었습니다:

  • 라이선스: MIT 라이선스.
  • 호환성: Ollama 및 OpenAI 호환 엔드포인트를 지원하여 로컬 모델과 최신 모델 모두 사용 가능.
  • 데이터 처리: 사용자 데이터 프라이버시를 보장하기 위해 로컬 우선 아키텍처.
  • 기능: 대규모 그래프의 시각적 복잡도를 관리하기 위한 세미틱 줌 레벨과 "웨이브/콘덴스" 기능 포함.

커뮤니티 피드백 및 비판적 분석

Hacker News에서의 커뮤니티 논의는 그래프 기반 접근 방식의 유용성과 잠재적인 구현 과제를 모두 강조했습니다.

워크플로우 및 UX 도전 과제

일부 사용자는 인터페이스가 "거칠게" 느껴진다고 지적하며, 캔버스 이동과 사이드 패널에서 포함된 메시지의 가시성 문제를 언급했습니다. 또한 비기술 사용자에게는 "엣지 삭제"가 너무 추상적일 수 있으며, 노드 참조를 나열하고 삭제 버튼을 제공하는 사이드바가 더 직관적일 수 있다는 제안도 있었습니다.

보안 우려

한 리뷰어는 애플리케이션이 PDF 처리를 어떻게 처리하는지와 관련된 잠재적인 심각한 보안 취약점을 지적했습니다. 구체적으로, pdftoppm과 함께 execSync를 사용하면서 서버가 0.0.0.0(모든 네트워크 인터페이스)에 바인딩되어 있으면 원격에서 호스트 머신의 쉘에 접근할 수 있는 가능성이 있습니다.

개념적 수렴

여러 개발자들은 ThoughtDAG가 "컨텍스트 컴파일러" 또는 트리 기반 결정 로그와 같은 다른 새로운 패턴들과 수렴하고 있다고 지적했습니다. 한 사용자는 이 접근 방식을 "physarum 점액 곰팡이"에 비유했는데, 연구자가 모든 방향으로 갈라지지만 가장 유망한 경로만 강화하고 관련 없는 브랜치는 방치하는 방식이라고 설명했습니다.

"선을 제거하면 모델이 실제로 보는 것이 바뀐다는 아이디어는 명확하지 않을 수 있습니다. 노드를 클릭했을 때, 제거 버튼이 있는 (노드 참조) 목록을 사이드바에 표시하여 '이 답변은 나에 대해 어떤 것을 알고 있는가' vs. '그래프 편집'이라는 관점을 재정의해 보세요."

"나는 명시적 컨텍스트 제어가 장기간 연구에 유용한지, 아니면 대부분의 사람들이 메모리 선택을 검색에 위임하는 것이 더 낫다고 생각하는지 테스트하고 있습니다."

Sources

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • Dispatch