项目简介
LEANN 是一个创新的本地向量数据库,旨在通过极低的存储成本,在个人电脑上实现强大的检索增强生成(RAG)功能。它通过图基选择性重计算和高维度保留剪枝技术,仅在需要时计算嵌入向量,从而大幅减少存储空间和内存占用。LEANN通过MCP协议与LLM客户端(如Claude Code)集成,提供语义搜索和上下文服务,让你的本地数据成为个人AI助手的强大知识库,支持文档、邮件、浏览器历史、聊天记录和代码库等多种数据源。
主要功能点
- 超低存储占用: 比传统向量数据库节省高达97%的存储空间,可在笔记本电脑上索引和搜索数百万份文档。
- 本地化与隐私保护: 数据完全在本地处理,不依赖云服务,确保数据隐私。
- 多源数据RAG: 支持对PDF、TXT、Markdown文档、Apple Mail邮件、Chrome浏览器历史、微信聊天记录和代码仓库进行语义搜索和问答。
- AST感知代码分块: 针对代码文件,采用抽象语法树(AST)感知分块技术,更好地理解代码结构,提升代码搜索和问答质量。
- MCP服务集成: 作为MCP服务后端,可无缝集成到支持MCP协议的LLM客户端,为代码编辑器等工具提供智能上下文检索能力。
- 灵活的配置与优化: 支持多种嵌入模型、LLM提供商(OpenAI, Ollama, HuggingFace)、搜索策略和数据处理参数,可根据需求进行定制。
安装步骤
- 克隆仓库:
git clone https://github.com/yichuan-w/LEANN.git leann cd leann - 安装 'uv' (如果尚未安装):
'uv' 是一个快速的Python包管理器。
curl -LsSf https://astral.sh/uv/install.sh | sh - 创建并激活虚拟环境,然后安装 LEANN:
uv venv source .venv/bin/activate uv pip install leann - (可选)构建并安装 DiskANN 后端(推荐用于高级搜索性能):
根据你的操作系统,可能需要安装额外的系统依赖,并运行:
- macOS:
brew install libomp boost protobuf zeromq pkgconf uv sync --extra diskann - Linux (Ubuntu/Debian):
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 \ libmkl-full-dev uv sync --extra diskann
- macOS:
- (可选)全局安装 'leann' CLI 和 MCP 服务器依赖:
uv tool install leann-core --with leann
服务器配置
LEANN作为MCP服务器,通过其CLI工具 'leann' 提供功能。MCP客户端(例如Claude Code)需要配置MCP服务器的启动命令。以下是标准的MCP服务器配置示例(JSON格式,供MCP客户端使用,无需代码):
{ "serverName": "LEANN MCP 服务器", "command": "leann_mcp", "args": [], "description": "LEANN MCP服务器提供本地化的代码语义搜索、文档RAG、邮件问答、聊天记录查询等功能。它通过调用LEANN CLI来实现工具调用,实现与LLM客户端的上下文交互。", "tools": [ { "name": "leann_search", "description": "🔍 使用自然语言搜索代码——就像拥有一个了解整个代码库的编码助手!\n\n🎯 适用场景:\n- '认证如何工作?' → 查找与认证相关的代码\n- '错误处理模式' → 定位try-catch块和错误逻辑\n- '数据库连接设置' → 查找数据库初始化代码\n- 'API端点定义' → 定位路由处理程序\n- '配置管理' → 查找配置文件和使用情况\n\n💡 提示:在进行任何更改之前,先使用此功能了解现有模式和约定。", "inputSchema": { "type": "object", "properties": { "index_name": { "type": "string", "description": "要搜索的LEANN索引名称。请先使用'leann_list'查看可用索引。" }, "query": { "type": "string", "description": "搜索查询——可以是自然语言(例如,'如何处理错误')或技术术语(例如,'异步函数定义')" }, "top_k": { "type": "integer", "default": 5, "minimum": 1, "maximum": 20, "description": "返回的搜索结果数量。使用5-10个用于聚焦结果,15-20个用于全面探索。" }, "complexity": { "type": "integer", "default": 32, "minimum": 16, "maximum": 128, "description": "搜索复杂度级别。使用16-32个用于快速搜索(推荐),64+个用于在需要时获得更高精度。" } }, "required": ["index_name", "query"] } }, { "name": "leann_list", "description": "📋 显示所有已索引的代码库——您的个人代码库!使用此功能查看可供搜索的内容。", "inputSchema": { "type": "object", "properties": {} } } ] }
配置说明:
- 'serverName': 服务器的友好名称。
- 'command': 启动LEANN MCP服务器的命令。在全局安装'leann-core'后,'leann_mcp'命令应该在系统的PATH中可执行。
- 'args': 启动命令的参数列表。对于LEANN MCP服务器,通常为空,因为所有参数都通过JSON-RPC请求传递。
- 'description': 服务器的详细描述。
- 'tools': 服务器暴露给LLM客户端的工具列表。
- 'leann_search': 用于语义搜索已索引文档的工具。
- 'index_name':要搜索的索引名称。
- 'query':搜索内容。
- 'top_k':返回结果数量。
- 'complexity':搜索复杂度。
- 'leann_list': 列出所有已创建的索引。
- 'leann_search': 用于语义搜索已索引文档的工具。
基本使用方法
LEANN MCP服务器通过CLI工具 'leann' 进行管理和操作,MCP客户端会调用这些功能。
- 创建索引(通过CLI):
要让MCP客户端能够搜索你的数据,首先需要使用'leann' CLI工具创建索引。例如,索引一个文档目录:
leann build my-documents --docs ./my_docs_folder # 或者索引你的代码库: leann build my-codebase --docs ./my_project --use-ast-chunking - 列出可用索引(LLM客户端调用 'leann_list' 工具): 在MCP客户端中,LLM可以通过调用 'leann_list' 工具来获取当前所有可用的索引列表。例如,在Claude Code中,你可以询问 "列出所有可用的LEANN索引"。
- 进行语义搜索(LLM客户端调用 'leann_search' 工具): 在MCP客户端中,LLM可以通过调用 'leann_search' 工具来查询已创建的索引。例如,在Claude Code中,LLM可能会执行类似以下工具调用来搜索你的代码库: 'leann_search(index_name="my-codebase", query="如何实现用户认证?", top_k=5)'
信息
分类
AI与计算