LEANN 是一个创新的向量数据库,通过基于图的选择性重计算技术,在保持高检索精度的同时,将存储空间需求降低了 97%
LEANN 高效向量数据库详细部署教程
LEANN 是一个创新的向量数据库,通过基于图的选择性重计算技术,在保持高检索精度的同时,将存储空间需求降低了 97%。它能让您在个人设备上轻松运行 RAG(检索增强生成)应用,索引海量数据(如电子邮件、聊天记录、浏览器历史等),且完全本地化、注重隐私。本教程将指导您完成 LEANN 的安装、配置与核心应用。
📋 目录
- LEANN 是什么
- 核心优势与工作原理解析
- 系统要求与准备
- 安装步骤
- 快速开始
- 核心功能与 RAG 应用
- 命令行界面与高级配置
- 更新与卸载
- 常见问题排查
LEANN 是什么
LEANN(Low-storage Embedding bAsed on recomputatioN)是一个为个人设备设计的轻量级向量数据库。它的核心创新是不存储所有向量,而是存储一个压缩的图结构,并在查询时按需重计算部分向量,从而大幅降低存储消耗。
关键突破:
- 97% 存储节省:索引 6000 万文本块仅需 6GB(传统方案需 201GB)。
- 无损精度:保持与 FAISS 等传统方案相同的检索质量。
- 完全本地化:所有数据在本地处理,无云端依赖,保护隐私。
核心优势与工作原理解析
LEANN 通过在查询时动态重计算向量来实现高压缩率。
| 传统向量数据库 | LEANN |
|---|---|
| 存储所有向量 | 存储压缩图结构 |
| 查询时直接读取向量 | 查询时重计算所需向量 |
| 高存储成本 | 97% 存储节省 |
| 精度高 | 精度无损 |
| 依赖大量资源 | 适合个人设备 |
核心技术:
- 基于图的选择性重计算:仅在搜索路径中计算节点向量。
- 高节点度保留剪枝:保留关键枢纽节点,剪除冗余连接。
- 动态批处理:高效利用 GPU 进行向量计算。
- 两阶段搜索:智能图遍历优先访问高潜力节点。
系统要求与准备
基础要求
- 操作系统:macOS(13.3+)、Linux(Ubuntu/Debian/Arch/RHEL 系)或 Windows(需 Visual Studio 2022)。
- Python:版本 3.8 或更高。
- 包管理器:
uv。
安装 uv
1 | curl -LsSf https://astral.sh/uv/install.sh | sh |
可选依赖
- DiskANN 后端(高性能搜索)需要额外安装依赖(见下文)。
- GPU 加速(CUDA 或 Apple Silicon MPS)可提升计算速度。
安装步骤
1. 克隆仓库
1 | git clone https://github.com/yichuan-w/LEANN.git leann |
2. 创建虚拟环境并安装基础包
1 | uv venv |
3. (可选)安装 DiskANN 后端
根据操作系统安装依赖并同步:
macOS:
1 | brew install libomp boost protobuf zeromq pkgconf |
Linux (Ubuntu/Debian):
1 | sudo apt-get update && sudo apt-get install -y \ |
Windows:需安装 Visual Studio 2022 Build Tools、vcpkg 并配置环境,详见项目 README。
快速开始
构建索引与搜索
1 | from leann import LeannBuilder, LeannSearcher |
使用聊天功能(RAG)
1 | from leann import LeannChat |
核心功能与 RAG 应用
LEANN 支持对多种个人数据进行 RAG 索引和查询。以下是一些主要应用场景。
文档 RAG (PDF, TXT, MD)
1 | # 索引文档目录并查询 |
代码库语义搜索
1 | # 索引代码库 |
浏览器历史搜索 (Chrome)
1 | python -m apps.browser_rag --query "Tell me my browser history about machine learning" |
38,000 条历史记录仅占 6MB 存储。
电子邮件搜索 (Apple Mail, macOS)
1 | python -m apps.email_rag --query "What's the food I ordered by DoorDash?" |
780,000 封邮件仅占 78MB 存储。
微信聊天记录搜索 (macOS)
1 | python -m apps.wechat_rag --query "Show me all group chats about weekend plans" |
400,000 条消息仅占 64MB 存储。
ChatGPT 与 Claude 对话历史
1 | # 索引 ChatGPT 导出文件 |
iMessage 搜索 (macOS)
1 | python -m apps.imessage_rag --query "What did we discuss about the weekend plans?" |
MCP 集成:实时数据(Slack, Twitter)
1 | # 索引 Slack 消息 |
命令行界面与高级配置
LEANN 提供了一个强大的 CLI,方便进行索引构建、搜索和交互。
全局安装 CLI
1 | uv tool install leann-core --with leann |
基本 CLI 命令
1 | # 构建索引 |
配置 LLM 与嵌入模型
LEANN 支持多种 LLM 和嵌入提供者,只需设置环境变量或使用 CLI 参数。
使用 OpenAI:
1 | export OPENAI_API_KEY="your-api-key" |
使用本地 Ollama(推荐隐私保护):
1 | export OPENAI_BASE_URL="http://localhost:11434/v1" |
使用 Jina AI 作为嵌入模型:
1 | python -m apps.document_rag --embedding-mode openai \ |
更新与卸载
更新 LEANN
1 | cd leann |
卸载
1 | # 删除项目目录即可 |
常见问题排查
问题:安装 DiskANN 时编译失败。
- 解决:确保所有系统依赖已安装。Ubuntu 20.04 用户可能需要更新 Protobuf 版本,详见 Issue #30。
问题:运行 macOS 应用(如 email_rag)时提示权限不足。
- 解决:在 系统设置 → 隐私与安全性 → 完全磁盘访问权限 中添加您的终端或 IDE。
问题:MCP 集成(如 Slack)连接失败。
- 解决:确保已安装对应的 MCP 服务器(如
npm install -g slack-mcp-server),并正确设置了 API 密钥。检查 MCP 服务器的日志输出。
问题:索引构建慢。
- 解决:
- 设置
LEANN_EMBEDDING_DEVICE="cuda:0"或"mps"以启用 GPU 加速。 - 使用
--max-items N限制处理的数据量。 - 考虑使用更轻量的嵌入模型。
- 设置
通过以上步骤,您应能顺利部署并开始使用 LEANN。这个工具将极大提升您处理个人数据的能力,让您能轻松构建私密、高效的 RAG 应用。如需了解更多高级用法或贡献代码,请查阅项目官方文档和 GitHub 仓库。


