OpenKB: Open LLM Knowledge Base
이 번역은 AI가 원문 README를 옮긴 것입니다. 원문이 항상 우선합니다.
<div align="center">
<a href="https://openkb.ai"> <img src="https://docs.pageindex.ai/images/openkb.png" alt="OpenKB (by PageIndex)" /> </a>
<br /> <br />
<p align="center"> <a href="https://trendshift.io/repositories/26145" target="_blank"><img src="https://trendshift.io/api/badge/repositories/26145" alt="VectifyAI%2FOpenKB | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a> </p>
<p align="center"><i>긴 문서 확장 • 추론 기반 검색 • 네이티브 멀티모달 • 벡터 DB 불필요</i></p>
</div>
<details open> <summary><h2>📢 최근 업데이트</h2></summary>
</details>
OpenKB (오픈 지식 베이스)는 CLI 기반의 오픈소스 시스템으로, LLM을 사용하여 원시 문서를 구조화되고 상호 연결된 위키 스타일의 지식 베이스로 컴파일하며, PageIndex의 벡터리스 추론 기반 검색을 통해 긴 문서를 처리합니다.
이 아이디어는 Andrej Karpathy가 설명한 개념에 기반합니다: LLM이 요약, 개념 페이지, 상호 참조를 생성하고 자동으로 유지 관리합니다. 지식은 매 쿼리마다 재도출되는 대신 시간이 지남에 따라 축적됩니다.
기존 RAG는 매 쿼리마다 처음부터 지식을 재발견합니다. 아무것도 축적되지 않습니다. OpenKB는 지식을 한 번 컴파일하여 영구적인 위키로 만든 다음 최신 상태로 유지합니다. 상호 참조는 이미 존재하고, 모순은 플래그 지정되며, 종합은 소비된 모든 것을 반영합니다.
OpenKB는 두 개의 레이어로 구성됩니다: 지식을 컴파일하고 유지 관리하는 위키 기반과 이를 유용한 출력으로 변환하는 생성기(쿼리/채팅/스킬 팩토리)입니다. 전체 명령어 목록은 사용법을 참조하세요.
.md 파일입니다. 그래프 보기를 위해 Obsidian에서 열 수 있습니다.pip install openkb
<details> <summary><b><i>기타 설치 옵션:</i></b></summary>
pip install git+https://github.com/VectifyAI/OpenKB.git
git clone https://github.com/VectifyAI/OpenKB.git
cd OpenKB
pip install -e.
</details>
# 1. 지식 베이스 디렉토리 생성
mkdir my-kb && cd my-kb
# 2. 지식 베이스 초기화
openkb init
# 3. 문서 추가
openkb add paper.pdf
openkb add ~/papers/ # 전체 디렉토리 추가
openkb add https://arxiv.org/pdf/2509.11420 # URL에서 가져오기
# 4. 질문하기
openkb query "주요 발견은 무엇인가요?"
# 5. 또는 대화형 채팅
openkb chat
# (선택 사항) 위키를 다른 출력으로 변환
openkb skill new my-expert "<주제>에 대한 전문가처럼 추론" # 휴대용 에이전트 스킬
openkb visualize # 대화형 지식 그래프
openkb deck new my-deck "<주제>에 대한 소개 덱" # 슬라이드 — 단일 파일 HTML 덱
OpenKB는 LiteLLM을 통해 여러 LLM 제공자 (OpenAI, Claude, Gemini 등)를 지원합니다 (안전한 버전으로 고정됨).
openkb init 중 또는 .openkb/config.yaml에서 provider/model LiteLLM 형식 (예: anthropic/claude-sonnet-4-6)을 사용하여 모델을 설정하세요. OpenAI 모델은 접두사를 생략할 수 있습니다 (예: gpt-5.4).
LLM API 키와 함께 .env 파일을 생성하세요:
LLM_API_KEY=your_llm_api_key
<div align="center"> <img src="assets/openkb-architecture.webp" alt="OpenKB 아키텍처: 원시 문서(markitdown / PageIndex)에서 LLM 위키 컴파일을 거쳐 wiki/ 기반으로, 쿼리/채팅, 스킬 팩토리 및 미래 생성기를 지원" width="900" /> </div>
| 짧은 문서 | 긴 문서 (PDF 20페이지 이상) | |||
|---|---|---|---|---|
| 변환 | markitdown → Markdown | PageIndex → 트리 인덱스 + 요약 | ||
| 이미지 | 인라인 추출 (pymupdf) | PageIndex가 추출 | ||
| LLM 읽기 | 전체 텍스트 | 문서 트리 | ||
| 결과 | 요약 + 개념 | 요약 + 개념 |
짧은 문서는 LLM이 전체를 읽습니다. 긴 PDF는 PageIndex에 의해 계층적 트리 인덱스로 처리됩니다. LLM은 전체 텍스트 대신 트리를 읽어 긴 문서에 대한 정확하고 확장 가능한 검색이 가능합니다.
문서를 추가하면 LLM은:
단일 소스는 10~15개의 위키 페이지에 영향을 미칠 수 있습니다. 지식이 축적됩니다: 각 문서는 기존 위키를 풍부하게 하며 고립되지 않습니다.
OpenKB 명령어는 두 레이어로 나뉩니다: 위키 기반 (지식 컴파일 + 관리) 및 생성기 (위키를 유용한 출력으로 변환). 각 명령어는 구체적인 예제와 연결됩니다 — OpenKB가 하나의 샘플 논문에서 생성한 실제 아티팩트입니다 (examples/에서 모두 확인 가능).
| 명령어 | 설명 | ||
|---|---|---|---|
openkb init |
새 지식 베이스 초기화 (대화형) | ||
| <code>openkb add <파일또는디렉토리또는URL></code> | 파일, 디렉토리 또는 URL을 추가하고 위키로 컴파일 (URL 콘텐츠 유형은 자동 감지) | ||
openkb list |
인덱싱된 문서 및 개념 나열 | ||
openkb status |
지식 베이스 통계 표시 | ||
openkb watch |
raw/ 디렉토리 감시 및 새 파일 자동 컴파일 |
||
openkb lint |
구조 및 지식 상태 검사 실행 |
<details> <summary><i>추가 위키 명령어:</i></summary> <br>
| 명령어 | 설명 | ||
|---|---|---|---|
| <code>openkb remove <문서></code> | 문서를 제거하고 해당 위키 페이지, 이미지, 레지스트리 및 PageIndex 상태 정리 (--dry-run으로 미리보기, --keep-raw / --keep-empty로 아티팩트 유지) |
||
| <code>openkb recompile [<문서>] [--all]</code> | 이미 인덱싱된 문서에 대해 재인덱싱 없이 컴파일 파이프라인 재실행. 요약을 재생성하고 개념 페이지를 다시 작성하며, 수동 편집은 덮어씁니다 (--dry-run으로 미리보기, --refresh-schema로 wiki/AGENTS.md도 업데이트) |
||
| <code>openkb feedback ["메시지"]</code> | 미리 채워진 GitHub 이슈를 열어 피드백 제출 (--type bug/feature/question으로 태그 지정) |
</details>
→ 예제: 일상적인 루프를 처음부터 끝까지 단계별로 설명 — examples/commands/.
"생성기"는 컴파일된 위키를 읽고 유용한 것을 생성합니다: 답변, 대화, 스킬 폴더 등. 위키는 기반이며, 생성기는 표면입니다.
| 명령어 | 출력 | 예제 | ||
|---|---|---|---|---|
| <code>openkb query "질문"</code> | 인용이 포함된 근거 있는 답변 (--save로 wiki/explorations/에 저장) |
query & save | ||
| <code>openkb chat</code> | 위키에 대한 대화형 다중 턴 세션 (--resume, --list, --delete로 세션 관리) |
chat | ||
| <code>openkb visualize</code> | output/visualize/graph.html에 자체 포함된 대화형 지식 그래프 — 3D, 마인드맵, 방사형 보기 |
visualize | ||
| <code>openkb skill new <스킬-이름> "<의도>"</code> | 위키에서 재배포 가능한 에이전트 스킬 추출 (아래 스킬 팩토리 참조) | skills | ||
| <code>openkb deck new <이름> "<의도>"</code> | 단일 파일 HTML 슬라이드 덱 생성 (--skill로 테마 선택, --critique로 품질 검사 실행) |
slides |
<details> <summary><i>추가 스킬 명령어:</i></summary> <br>
| 명령어 | 출력 | ||
|---|---|---|---|
| <code>openkb skill validate [이름]</code> | 컴파일된 스킬 검증 (skill new 후 자동 실행) |
||
| <code>openkb skill eval <이름></code> | 스킬이 올바른 프롬프트에서 트리거되는지 확인 | ||
| <code>openkb skill history <이름></code> / <code>openkb skill rollback <이름></code> | 스킬의 버전 기록 + 롤백 |
</details>
<a id="skill-factory"></a>
플래그십 생성기: openkb skill new는 위키에서 휴대용 에이전트 스킬을 추출하며, Claude Code, Codex 및 Gemini가 기본적으로 설치하고 로드할 수 있습니다. 논문 한 권 분량을 넣으면 다른 에이전트가 호출할 수 있는 전문가가 나옵니다. → 실제 생성된 스킬과 설치/공유/eval/롤백은 examples/skills/에서 설명합니다.
openkb init는 .openkb/config.yaml을 작성합니다:
model: gpt-5.4 # LLM 모델 (LiteLLM 지원 제공자)
language: en # 위키 출력 언어
pageindex_threshold: 20 # PageIndex 사용을 위한 PDF 페이지 임계값
전체 설정 참조 — entitytypes, OAuth 제공자 (chatgpt/, githubcopilot/), LiteLLM 튜닝 (Ollama/LM Studio와 같은 느린 로컬 런타임을 위한 타임아웃, drop_params, GitHub Copilot 헤더, 설치 참고 사항) — examples/configuration/에 있습니다.
긴 문서 검색은 LLM에게 알려진 과제입니다. PageIndex는 벡터리스 추론 기반 검색으로 이를 해결하며, 계층적 트리 인덱스를 구축하여 LLM이 컨텍스트 인식 검색을 위해 인덱스에 대해 추론할 수 있게 합니다.
PageIndex는 기본적으로 오픈소스 버전을 사용하여 로컬에서 실행되며, 외부 종속성이 필요하지 않습니다.
클라우드 지원 (선택 사항):
크거나 복잡한 PDF의 경우 PageIndex Cloud를 사용하여 추가 기능에 액세스할 수 있습니다:
클라우드 기능을 활성화하려면 .env에 PAGEINDEXAPIKEY를 설정하세요:
PAGEINDEX_API_KEY=your_pageindex_api_key
→ 예제: 로컬 vs 클라우드 인덱싱 및 클라우드 인덱싱된 문서 가져오기 — examples/pageindex-cloud/.
wiki/AGENTS.md
[...생략...]