yichuan-w/LEANN
요약
LEANN은 개인 AI를 민주화하는 혁신적인 벡터 데이터베이스로, 노트북 환경에서 클라우드 비용 없이 완전한 개인 정보 보호를 보장합니다. 이 시스템은 그래프 기반 선택적 재계산과 고차원 보존 가지치기를 활용하여, 기존 솔루션 대비 97% 적은 저장 공간으로 수백만 개의 문서를 인덱싱하고 검색할 수 있습니다. LEANN은 파일 시스템, 이메일, 브라우저 기록 등 다양한 개인 데이터를 통합하여 강력한 RAG(Retrieval-Augmented Generation) 기능을 제공하며, Claude Code와 호환되는 시맨틱 검색 MCP 서비스로 작동합니다.
핵심 포인트
- LEANN은 노트북 기반의 벡터 데이터베이스 솔루션으로, 클라우드 의존성 없이 완전한 개인 정보 보호를 보장합니다.
- 그래프 기반 선택적 재계산 및 고차원 보존 가지치기를 통해 저장 공간을 97% 절감하면서도 높은 검색 정확도를 유지합니다.
- 파일 시스템, 이메일, 브라우저 기록 등 광범위한 개인 데이터를 통합하여 강력한 RAG 기능을 구현할 수 있습니다.
- Claude Code와 완벽하게 호환되는 드롭인 시맨틱 검색 MCP 서비스로 작동하여 워크플로우 변경 없이 지능적인 검색을 가능하게 합니다.
- 다양한 OS 환경(macOS, Linux 등)에 대한 상세 빌드 가이드가 제공됩니다.
저희는 어떠한 원격 측정(telemetry)도 추적하지 않습니다. 이 설문조사는 여러분이 다음으로 GPU 가속을 원하는지 아니면 더 많은 통합 기능을 원하는지 알려줄 유일한 방법입니다.
👉 투표하기 (2분 소요)
LEANN 커뮤니티의 일원이 되어 주시면 감사하겠습니다!
👉 LEANN Slack 참여하기
초대 링크가 만료되었거나 가입에 문제가 있는 경우, 이슈를 열어주세요. 저희가 입장하는 것을 도와드리겠습니다!
LEANN은 개인 AI를 민주화하는 혁신적인 벡터 데이터베이스입니다. 노트북을 강력한 RAG(Retrieval-Augmented Generation) 시스템으로 변환하여 전통적인 솔루션보다 97% 적은 저장 공간을 사용하면서도 정확도 손실 없이 수백만 개의 문서를 인덱싱하고 검색할 수 있습니다. LEANN은 *그래프 기반 선택적 재계산(graph-based selective recomputation)*과 *고차원 보존 가지치기(high-degree preserving pruning)*를 통해 이를 달성하며, 모든 임베딩을 저장하는 대신 온디맨드(on-demand)로 임베딩을 계산합니다. 설명 자료 Fig → | 논문 Paper →
모든 것을 RAG할 준비가 되셨나요? 노트북을 개인 AI 비서로 변환하여 파일 시스템, 이메일, 브라우저 기록, 채팅 기록(WeChat, iMessage), 에이전트 메모리(ChatGPT, Claude), 실시간 데이터(Slack, Twitter), 코드베이스* 또는 외부 지식 기반(예: 60M 문서)을 검색할 수 있습니다. 이 모든 것이 클라우드 비용 없이 노트북에서, 완전한 개인 정보 보호를 보장합니다.
*Claude Code는 기본 grep 스타일의 키워드 검색만 지원합니다. LEANN은 Claude Code와 완벽하게 호환되는 드롭인(drop-in) 시맨틱 검색 MCP 서비스로, 워크플로우를 변경하지 않고도 지능적인 검색을 가능하게 합니다. 🔥 쉬운 설정 확인 →
숫자가 모든 것을 말해줍니다: 60백만 개의 텍스트 청크를 단지 6GB 만에 인덱싱할 수 있으며, 기존의 201GB가 필요하지 않습니다. 이메일에서 브라우저 기록까지, 모든 것이 노트북에 들어갑니다. 다양한 애플리케이션에 대한 자세한 벤치마크는 아래를 확인하세요 ↓
🔒 개인 정보 보호: 여러분의 데이터는 절대 노트북을 벗어나지 않습니다. OpenAI도 없고, 클라우드도 없고,
📦 휴대성 (Portable): 최소한의 비용으로 기기 간(심지어 타인과도) 전체 지식 베이스를 전송하세요. 여러분의 개인 AI 메모리가 여러분과 함께 이동합니다.
📈 확장성 (Scalability): 기존의 벡터 DB (Vector DB)를 다운시킬 정도로 무질서한 개인 데이터를 처리하며, 점점 늘어나는 개인화된 데이터와 에이전트 (Agent)가 생성한 메모리를 쉽게 관리할 수 있습니다!
✨ 정확도 손실 없음 (No Accuracy Loss): 저장 공간을 97% 적게 사용하면서도 무거운 솔루션들과 동일한 검색 품질을 유지합니다.
uv가 없다면 먼저 설치하세요. 일반적으로 다음과 같이 설치할 수 있습니다:
curl -LsSf https://astral.sh/uv/install.sh | sh
모든 예제를 확인하고 놀라운 애플리케이션을 시도해 보려면 리포지토리 (Repository)를 클론 (Clone) 하세요:
git clone https://github.com/yichuan-w/LEANN.git leann
cd leann
그리고 즉시 실행할 수 있도록 PyPI에서 LEANN을 설치하세요:
uv venv
source .venv/bin/activate
uv pip install leann
...
🔧 소스에서 빌드 (Build from Source) (개발 시 권장)
git clone https://github.com/yichuan-w/LEANN.git leann
cd leann
git submodule update --init --recursive
macOS:
참고: DiskANN은 macOS 13.3 이상이 필요합니다.
brew install libomp boost protobuf zeromq pkgconf
uv sync --extra diskann
Linux (Ubuntu/Debian):
참고: Ubuntu 20.04에서는 DiskANN 빌드를 위해 더 최신 버전의 Abseil을 빌드하고 Protobuf (예: v3.20.x) 버전을 고정해야 할 수도 있습니다. 단계별 안내는 Issue #30을 참조하세요.
DiskANN을 위해 libmkl-full-dev 대신 Intel oneAPI MKL을 수동으로 설치할 수 있습니다. 또한 아래 명령에서 --extra diskann을 제거하면 HNSW 빌드만을 위해 libopenblas-dev를 사용할 수 있습니다.
sudo apt-get update && sudo apt-get install -y \
libomp-dev libboost-all-dev protobuf-compiler libzmq3-dev \
pkg-config libabsl-dev libaio-dev libprotobuf-dev \
...
Linux (Arch Linux):
sudo pacman -Syu && sudo pacman -S --needed base-devel cmake pkgconf git gcc \
boost boost-libs protobuf abseil-cpp libaio zeromq
# DiskANN의 MKL을 위한 설정
...
Linux (RHEL / CentOS Stream / Oracle / Rocky / AlmaLinux):
자세한 내용은 Issue #50을 참조하세요.
sudo dnf groupinstall -y "Development Tools"
sudo dnf install -y libomp-devel boost-devel protobuf-compiler protobuf-devel \
abseil-cpp-devel libaio-devel zeromq-devel pkgconf-pkg-config
...
Windows:
C++ 데스크톱 개발 (C++ desktop development) 워크로드가 포함된 Visual Studio 2022 Build Tools와 vcpkg가 필요합니다.
# 툴체인 설치 (이미 설치되어 있지 않은 경우)
choco install cmake swig pkgconfiglite nuget.commandline -y
# vcpkg를 통해 C++ 의존성 설치
...
우리의 선언적 API (declarative API)는 RAG (Retrieval-Augmented Generation)를 설정 파일을 작성하는 것만큼 쉽게 만듭니다.
demo.ipynb를 확인하거나 아래 코드를 참조하세요.
from leann import LeannBuilder, LeannSearcher, LeannChat
from pathlib import Path
INDEX_PATH = str(Path("./").resolve() / "demo.leann")
...
LEANN은 문서(.pdf, .txt, .md), Apple Mail, Google 검색 기록, WeChat, ChatGPT 대화, Claude 대화, iMessage 대화, 그리고 MCP (Model Context Protocol) 서버를 통해 Slack, Twitter 등을 포함한 모든 플랫폼의 실시간 데이터를 포함한 다양한 데이터 소스에 대한 RAG를 지원합니다.
LEANN은 텍스트 생성을 위해 많은 LLM (Large Language Model) 제공업체(HuggingFace, Ollama, Anthropic, 그리고 모든 OpenAI 호환 API)를 지원합니다.
🔑 OpenAI API 설정 (기본값)
OpenAI API 키를 환경 변수로 설정하세요:
export OPENAI_API_KEY="your-api-key-here"
CLI를 사용할 때는 반드시 --llm openai 플래그를 사용해야 합니다.
--llm-model <model-name> 플래그로 모델 이름을 지정할 수도 있습니다.
🛠️ 지원되는 LLM 및 임베딩 (Embedding) 제공업체 (OpenAI 호환성을 통해)
OpenAI API 형식의 광범위한 채택 덕분에, LEANN은 방대한 양의 LLM 및 임베딩 제공업체와 즉시 호환됩니다. 선호하는 서비스에 연결하려면 OPENAI_BASE_URL 및 OPENAI_API_KEY 환경 변수를 설정하기만 하면 됩니다.
export OPENAI_API_KEY="xxx"
export OPENAI_BASE_URL="http://localhost:1234/v1" # 제공업체의 기본 URL (base url)
CLI 인터페이스에서 OpenAI 호환 엔드포인트를 사용하려면:
텍스트 생성용으로 사용하는 경우, 반드시 --llm openai를 사용해야 합니다.
플래그(flag)를 사용하고 --llm-model <model-name>으로 모델 이름을 지정하십시오.
임베딩 (Embedding) 용도로 사용하는 경우, --embedding-mode openai 플래그를 설정하고 --embedding-model <MODEL>로 모델 이름을 지정하십시오.
시작하는 데 도움이 될 수 있도록 일반적인 제공업체들의 베이스 URL (Base URL) 목록을 아래에 정리하였습니다.
| 제공업체 (Provider) | 샘플 베이스 URL (Sample Base URL) |
|---|---|
| Ollama | http://localhost:11434/v1 |
| LM Studio | http://localhost:1234/v1 |
| vLLM | http://localhost:8000/v1 |
| llama.cpp | http://localhost:8080/v1 |
| SGLang | http://localhost:30000/v1 |
| LiteLLM | http://localhost:4000 |
🚨 개인정보 보호 관련 주의사항: 클라우드 제공업체를 선택하기 전에, 해당 업체의 개인정보 보호 및 데이터 보유 정책을 주의 깊게 검토하십시오. 약관에 따라 귀하의 데이터가 인간 검토(human reviews) 및 모델 학습 (model training)을 포함하되 이에 국한되지 않는 자체적인 목적으로 사용될 수 있으며, 적절하게 처리되지 않을 경우 심각한 결과로 이어질 수 있습니다.
| 제공업체 (Provider) | 베이스 URL (Base URL) |
|---|---|
| OpenAI | https://api.openai.com/v1 |
| OpenRouter | https://openrouter.ai/api/v1 |
| Gemini | https://generativelanguage.googleapis.com/v1beta/openai/ |
| x.AI (Grok) | https://api.x.ai/v1 |
| Groq AI | https://api.groq.com/openai/v1 |
| DeepSeek | https://api.deepseek.com/v1 |
| SiliconFlow | https://api.siliconflow.cn/v1 |
| Zhipu (BigModel) | https://open.bigmodel.cn/api/paas/v4/ |
| Mistral AI | https://api.mistral.ai/v1 |
| Anthropic | https://api.anthropic.com/v1 |
| Jina AI (Embeddings) | https://api.jina.ai/v1 |
💡 팁: 임베딩 제공업체 분리하기
LLM에는 다른 제공업체를 사용하면서 임베딩 (Embeddings)에는 다른 제공업체(예: Jina AI)를 사용하려면, --embedding-api-base 및 --embedding-api-key를 사용하십시오:
leann build my-index --docs ./docs \ --embedding-mode openai \ --embedding-model jina-embeddings-v3 \ --embedding-api-base https://api.jina.ai/v1 \ --embedding-api-key $JINA_API_KEY
만약 사용 중인 제공업체가 이 목록에 없더라도 걱정하지 마세요! 해당 업체의 문서에서 OpenAI 호환 엔드포인트 (OpenAI-compatible endpoint)가 있는지 확인해 보십시오. 아마 OpenAI 호환 (OpenAI Compatible) 방식일 가능성이 높습니다!
🔧 Ollama 설정 (완전한 개인정보 보호를 위해 권장됨)
macOS:
먼저, macOS용 Ollama를 다운로드하세요.
# 경량 모델 다운로드 (일반 소비자용 하드웨어 권장)
ollama pull llama3.2:1b
Linux:
# Ollama 설치
curl -fsSL https://ollama.ai/install.sh | sh
# Ollama 서비스를 수동으로 시작
...
LEANN은 사용자의 특정 요구 사항에 맞출 수 있도록 임베딩 모델 (Embedding models), 검색 전략 (Search strategies), 그리고 데이터 처리 (Data processing)를 위한 유연한 파라미터 (Parameters)를 제공합니다.
📚 설정 모범 사례가 필요하신가요? 상세한 최적화 팁, 모델 선택 조언, 그리고 느린 임베딩 (Slow embeddings)이나 낮은 검색 품질 (Poor search quality)과 같은 일반적인 문제에 대한 해결책이 담긴 Configuration Guide를 확인하세요.
📋 클릭하여 확장: 공통 파라미터 (모든 예제에서 사용 가능)
모든 RAG 예제는 이러한 공통 파라미터를 공유합니다. 모든 예제에서 **대화형 모드 (Interactive mode)**를 사용할 수 있습니다. --query 없이 실행하기만 하면 여러 질문을 던질 수 있는 연속적인 Q&A 세션을 시작할 수 있습니다. 종료하려면 'quit'을 입력하세요.
# 환경 변수 (GPU 장치 선택)
LEANN_EMBEDDING_DEVICE # 임베딩 모델용 GPU (예: cuda:0, cuda:1, cpu)
LEANN_LLM_DEVICE # HFChat LLM용 GPU (예: cuda:1, 또는 멀티 GPU 자동 설정을 위해 "cuda")
...
사용자의 개인 PDF, 문서, 그리고 파일이 포함된 모든 디렉토리에 대해 직접 질문해 보세요!
아래 예제는 저희 논문을 요약해 달라는 질문을 던집니다 (data/ 디렉토리에 있는 기본 데이터를 사용하며, 이 디렉토리는 두 편의 논문, 오만과 편견(Pride and Prejudice), 그리고 중국어로 된 Huawei의 LLM 관련 기술 보고서 등 다양한 데이터 소스를 포함하고 있습니다). 이것이 여기서 실행할 수 있는 가장 쉬운 예제입니다:
source .venv/bin/activate # 가상 환경(Virtual environment) 활성화를 잊지 마세요
python -m apps.document_rag --query "What are the main techniques LEANN explores?"
📋 클릭하여 확장: 문서 특정 인자 (Document-Specific Arguments)
--data-dir DIR # 처리할 문서가 포함된 디렉토리 (기본값: data)
--file-types .ext .ext # 특정 파일 유형으로 필터링 (선택 사항 - 생략 시 LlamaIndex가 지원하는 모든 유형)
학술 논문을 위해 더 큰 청크 (chunk)로 모든 문서 처리
python -m apps.document_rag --data-dir "~/Documents/Papers" --chunk-size 1024
더 작은 청크로 markdown 및 Python 파일만 필터링
...
ColQwen2/ColPali 모델을 사용하여 텍스트와 시각적 이해 (visual understanding)를 모두 활용해 PDF를 검색하세요. 연구 논문, 기술 문서, 그리고 복잡한 레이아웃, 그림 또는 도표가 포함된 모든 PDF에 완벽합니다.
🍎 Mac 사용자: ColQwen은 Apple Silicon에 최적화되어 있으며, 더 빠른 추론 (inference)을 위해 MPS 가속을 지원합니다!
# PDF로부터 인덱스 (index) 구축
python -m apps.colqwen_rag build --pdfs ./my_papers/ --index research_papers
# 텍스트 쿼리 (query)로 검색
...
📋 클릭하여 확장: ColQwen 설정 및 사용법
# 의존성 (dependencies) 설치
uv pip install colpali_engine pdf2image pillow matplotlib qwen_vl_utils einops seaborn
brew install poppler # macOS 전용, PDF 처리를 위함
python -m apps.colqwen_rag build \
--pdfs ./pdf_directory/ \
--index my_index \
...
python -m apps.colqwen_rag search my_index "your question here" --top-k 5
ColQwen2(colqwen2): 성능이 향상된 최신 시각-언어 모델 (vision-language model)
ColPali(colpali): 검증된 멀티모달 검색기 (multimodal retriever)
자세한 사용법은 ColQwen 가이드를 참조하세요.
참고: 아래 예제들은 현재 macOS만 지원합니다. Windows 지원은 곧 추가될 예정입니다.
아래 예제를 실행하기 전에, 시스템 설정(System Preferences) → 개인정보 보호 및 보안(Privacy & Security) → 전체 디스크 접근 권한(Full Disk Access)에서 터미널/VS Code에 전체 디스크 접근 권한을 부여해야 합니다.
python -m apps.email_rag --query "What's the food I ordered by DoorDash or Uber Eats mostly?"
780K 이메일 청크 (chunks) → 78MB 저장 공간. 드디어 Google에서 검색하듯이 이메일을 검색할 수 있습니다.
📋 클릭하여 확장: 이메일 전용 인자 (Arguments)
--mail-path PATH # 특정 메일 디렉토리 경로 (생략 시 자동 감지)
# 특정 계정의 업무 이메일 검색
python -m apps.email_rag --mail-path "~/Library/Mail/V10/WORK_ACCOUNT"
# 모든 영수증 및 주문 확인서 찾기 (HTML 포함)
...
📋 클릭하여 확장: 시도해 볼 수 있는 예시 쿼리 (Example queries you can try)
인덱스 (index)가 구축되면 다음과 같은 질문을 할 수 있습니다:
- "마감 기한에 대해 상사가 보낸 이메일 찾아줘"
- "John이 프로젝트 일정에 대해 뭐라고 말했지?"
- "출장비에 관한 이메일 보여줘"
python -m apps.browser_rag --query "Tell me my browser history about machine learning?"
38K개의 브라우저 항목 → 6MB 저장 공간. 당신의 브라우저 기록이 개인용 검색 엔진이 됩니다.
📋 클릭하여 확장: 브라우저 전용 인자 (Browser-Specific Arguments)
--chrome-profile PATH # Chrome 프로필 디렉토리 경로 (생략 시 자동 감지)
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Python (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기