项目简介

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)、搜索策略和数据处理参数,可根据需求进行定制。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/yichuan-w/LEANN.git leann
    cd leann
  2. 安装 'uv' (如果尚未安装): 'uv' 是一个快速的Python包管理器。
    curl -LsSf https://astral.sh/uv/install.sh | sh
  3. 创建并激活虚拟环境,然后安装 LEANN:
    uv venv
    source .venv/bin/activate
    uv pip install leann
  4. (可选)构建并安装 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
  5. (可选)全局安装 '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 MCP服务器通过CLI工具 'leann' 进行管理和操作,MCP客户端会调用这些功能。

  1. 创建索引(通过CLI): 要让MCP客户端能够搜索你的数据,首先需要使用'leann' CLI工具创建索引。例如,索引一个文档目录:
    leann build my-documents --docs ./my_docs_folder
    # 或者索引你的代码库:
    leann build my-codebase --docs ./my_project --use-ast-chunking
  2. 列出可用索引(LLM客户端调用 'leann_list' 工具): 在MCP客户端中,LLM可以通过调用 'leann_list' 工具来获取当前所有可用的索引列表。例如,在Claude Code中,你可以询问 "列出所有可用的LEANN索引"。
  3. 进行语义搜索(LLM客户端调用 'leann_search' 工具): 在MCP客户端中,LLM可以通过调用 'leann_search' 工具来查询已创建的索引。例如,在Claude Code中,LLM可能会执行类似以下工具调用来搜索你的代码库: 'leann_search(index_name="my-codebase", query="如何实现用户认证?", top_k=5)'

信息

分类

AI与计算