benmaster82/Kwipu

Ask questions across your Markdown notes using a fully local Graph RAG engine. Built for Obsidian vaults, works with any folder of Markdown files. Extracts entity-relation triples from wikilinks & YAML frontmatter, retrieves answers via hybrid search (vector + BM25 + temporal). Multilingual. No cloud. Runs on Ollama.

해결하는 문제

지식을 일반 파일(Markdown 노트나 Obsidian 볼트 등)에 저장하는 것은 저장에는 좋지만, 연결을 보거나 "Project Alpha에서 누가 일하나요?" 또는 "1월 회의에서 무엇이 결정되었나요?" 같은 질문을 하기 어렵게 만듭니다. Kwipu는 문서 폴더를 검색 가능하고 연결된 그래프로 변환하여 노트가 엔티티가 되고, 노트 간의 링크가 관계가 되며, 모든 답변에는 정확한 소스 청크에 대한 인용이 포함됩니다.

작동 방식

Kwipu는 .md, .txt, .pdf, .docx 파일을 읽고 속성 그래프를 구축합니다. 각 노트가 노드이고 노드 간의 연결은 두 가지 소스에서 옵니다:

  • 구조적 관계: YAML frontmatter(태그, 역할, 프로젝트 필드)와 [[wikilinks]](예: "[[Bob]]과 협력"이 "협력" 관계가 됨)에서 자동으로 추출됩니다. 이러한 관계는 출처(어떤 파일, 어떤 frontmatter 필드 또는 줄, 콘텐츠 해시)를 기록합니다.
  • 의미적 관계: LLM이 텍스트 자체에서 추출합니다(예: "Alice는 React에 특화되어 있음"이 "특화" 엣지가 됨). 이러한 관계는 소스 청크에 대한 링크를 유지하여 답변이 인용할 수 있게 합니다.

그래프와 벡터는 저장 디렉토리에 영속화됩니다. 시스템은 소스 폴더를 감시합니다: 새 파일은 증분 삽입을 유발하고, 편집이나 삭제는 배치에 대한 전체 재구축을 트리거합니다. 변경 사항은 수정 매니페스트와 함께 원자적으로 게시되며, 모든 구성 요소(터미널, 브리지, MCP)는 새로 커밋된 생성을 자동으로 다시 로드합니다.

질문을 하면 Kwipu는 벡터 유사도, BM25 키워드 검색, 시간 메타데이터, 선택적 동의어 검색(동의어 검색은 --fast 모드, MCP 및 브리지 쿼리에서 비활성화됨)의 조합을 사용하여 관련 컨텍스트를 검색합니다. 그런 다음 LLM은 해당 컨텍스트에 기반한 답변을 만들고 소스 청크에 대한 인용을 포함합니다.

세 가지 인터페이스를 통해 상호 작용할 수 있습니다 — 모두 동일한 지식을 공유합니다:

  • 터미널(핵심 CLI): 질문하고, 폴더를 감시하고, 근거 있는 답변을 직접 출력합니다.
  • 웹 브라우저: 대화형 3D 그래프 시각화로, 노드를 클릭하면 컨텍스트 카드(frontmatter, 출처 줄이 있는 링크, 역링크, LLM 관계, 소스 청크)가 표시되고 UI에서 질문할 수 있습니다.
  • MCP 서버: stdio를 통해 query_graph 및 query_graph_detailed를 노출하여 AI 클라이언트가 동일한 인덱스를 쿼리할 수 있게 합니다.

대상 사용자

노트, 회의록, 프로젝트 문서 또는 연구를 일반 파일이나 Obsidian 볼트에 저장하고 대화식으로 쿼리하려는 사람들. 개인 또는 팀으로 작업하든, 원시 문서가 아닌 출처가 있는 답변을 원한다면 Kwipu가 적합합니다. 터미널 전용 사용자는 Python과 Ollama가 필요합니다. 웹 UI는 추가로 Node.js가 필요합니다. 로컬 모델로 모든 것을 완전히 로컬에서 실행하거나, 데이터 정책에 문제가 없다면 클라우드 LLM을 사용할 수 있습니다.

하이라이트

  • 노트 폴더를 속성 그래프 RAG 인덱스로 변환 — 수동 태깅이나 그래프 모델링이 필요 없습니다.
  • 엔티티는 노트 자체입니다: 별칭, 이름 변경, 경로 한정 이름(예: People/Alice vs Archive/Alice)은 모두 동일한 노드로 해석됩니다.
  • 답변은 항상 소스 청크에 근거하며 인용이 포함됩니다.
  • 터미널 전용 모드는 완전한 인터페이스입니다 — 브라우저나 Node.js가 필요 없습니다.
  • 대화형 3D 웹 시각화로 모든 관계의 정확한 줄 출처를 보여주는 컨텍스트 카드를 제공합니다.
  • 소스 폴더를 감시하고 새 파일에 대해 인덱스를 증분 업데이트하며, 편집이나 삭제 시 안전하게 재구축합니다.
  • Ollama(예: qwen2.5:7b + nomic-embed-text)를 사용한 완전 로컬 옵션 또는 클라우드 기본값(gpt-oss:20b-cloud) — 선택은 인덱싱 전에 이루어지며, 원격 엔드포인트는 명시적으로 허용되지 않는 한 HTTPS가 필요합니다.
  • 영어, 이탈리아어, 프랑스어, 독일어, 스페인어, 포르투갈어를 지원합니다.
  • 터미널, REST 브리지 API, MCP 서버를 통해 동일한 지식을 노출합니다.

관련

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