能力标签
🛠
AI工具

LumoKit

基于 Swift · 开源免费,本地部署,数据完全自主可控
⭐ 124 Stars 🍴 8 Forks 💻 Swift 📄 MIT 🏷 AI 7.5分
7.5AI 综合评分
RAGSwift6端侧AI本地模型隐私保护
✦ AI Skill Hub 推荐

经 AI Skill Hub 精选评估,LumoKit 获评「推荐使用」。这款AI工具在功能完整性、社区活跃度和易用性方面表现出色,AI 评分 7.5 分,适合有一定技术背景的用户使用。

📚 深度解析
LumoKit 是一款基于 Swift 的开源工具,在 GitHub 上收获 0k+ Star,是RAG、Swift6、端侧AI、本地模型领域中的优质开源项目。开源工具的最大优势在于代码完全透明,你可以审计每一行代码的安全性,也可以根据自身需求进行二次开发和定制。

**为什么要使用开源工具而非商业 SaaS?**
对于个人开发者和有隐私需求的用户,本地部署的开源工具意味着数据不离本机,不受第三方服务商的数据政策约束。同时,开源工具通常没有使用次数限制和月度费用,一次安装即可长期使用,对于高频使用场景的总拥有成本(TCO)远低于订阅制商业工具。

**安装与环境准备**
LumoKit 依赖 Swift 运行环境。建议通过 pyenv(Python)或 nvm(Node.js)管理 Swift 版本,避免全局环境污染。对于新手用户,推荐先创建虚拟环境(python -m venv venv && source venv/bin/activate),再安装依赖,这样即使出现问题也可以随时删除虚拟环境重新开始,不影响系统稳定性。

**社区与维护**
GitHub Issue 和 Discussion 是获取帮助的最快渠道。在提问前建议先检查 Closed Issues(已关闭的问题),大多数常见问题都已有解答。遇到 Bug 时,提供 pip list 的输出、完整错误堆栈和最小可复现示例,能显著提高开发者响应速度。AI Skill Hub 将持续追踪 LumoKit 的版本更新,及时通知重要功能变化。
📋 工具概览

一款开源Swift软件包,专为iOS/macOS提供端侧检索增强生成(RAG)能力。无需云端依赖,支持本地AI模型集成,适合隐私优先的移动应用开发者和AI集成爱好者使用。

LumoKit 是一款基于 Swift 开发的开源工具,专注于 RAG、Swift6、端侧AI 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。

GitHub Stars
⭐ 124
开发语言
Swift
支持平台
macOS / iOS
维护状态
轻量级项目,按需更新
开源协议
MIT
AI 综合评分
7.5 分
工具类型
AI工具
Forks
8
📖 中文文档
以下内容由 AI Skill Hub 根据项目信息自动整理,如需查看完整原始文档请访问底部「原始来源」。

一款开源Swift软件包,专为iOS/macOS提供端侧检索增强生成(RAG)能力。无需云端依赖,支持本地AI模型集成,适合隐私优先的移动应用开发者和AI集成爱好者使用。

LumoKit 是一款基于 Swift 开发的开源工具,专注于 RAG、Swift6、端侧AI 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。

📌 核心特色
  • 开源免费,支持本地部署,数据完全自主可控
  • 活跃的 GitHub 开源社区,持续迭代更新
  • 提供详细文档和使用示例,新手友好
  • 支持自定义配置,灵活适配不同使用环境
  • 可作为基础组件集成进现有技术栈或进行二次开发
🎯 主要使用场景
  • 本地部署运行,保护数据隐私,满足合规要求
  • 自定义集成到现有系统,扩展技术栈能力
  • 作为开源基础组件进行商业化二次开发
以下安装命令基于项目开发语言和类型自动生成,实际以官方 README 为准。
安装命令
# 克隆仓库
git clone https://github.com/rryam/LumoKit
cd LumoKit

# 查看安装说明
cat README.md

# 按 README 完成环境依赖安装后即可使用
📋 安装步骤说明
  1. 访问 GitHub 仓库页面
  2. 按照 README 文档完成依赖安装
  3. 根据系统环境完成初始化配置
  4. 参考官方示例或文档开始使用
  5. 遇到问题可在 GitHub Issues 中查找解答
以下用法示例由 AI Skill Hub 整理,涵盖最常见的使用场景。
常用命令 / 代码示例
# 查看帮助
lumokit --help

# 基本运行
lumokit [options] <input>

# 详细使用说明请查阅文档
# https://github.com/rryam/LumoKit
以下配置示例基于典型使用场景生成,具体参数请参照官方文档调整。
配置示例
# lumokit 配置说明
# 查看配置选项
lumokit --config-example > config.yml

# 常见配置项
# output_dir: ./output
# log_level: info
# workers: 4

# 环境变量(覆盖配置文件)
export LUMOKIT_CONFIG="/path/to/config.yml"
📑 README 深度解析 真实文档 完整度 62/100 查看 GitHub 原文 →
以下内容由系统直接从 GitHub README 解析整理,保留代码块、表格与列表结构。

LumoKit

LumoKit is a Swift package for building on-device Retrieval-Augmented Generation (RAG) workflows. It combines PicoDocs for document ingestion with VecturaKit for vector storage and semantic search, giving you an end-to-end pipeline for creating searchable knowledge bases.

The name Lumo blends the Mandarin characters (liú, “flow”) and (, “model”), representing the flow of knowledge into machine learning models.

Features

  • Document Parsing: Parse PDFs, Markdown, HTML, and text files using PicoDocs
  • Multiple Chunking Strategies: Sentence-based, paragraph-based, or semantic chunking with configurable overlap
  • Content-Aware: Different handling for prose, code, markdown, and mixed content
  • Semantic Search: Vector search powered by VecturaKit
  • Async API: Built with Swift concurrency
  • Database Management: Reset, delete chunks, or re-index on demand

Requirements

  • Swift 6.2+
  • iOS 18.0+, macOS 15.0+

Installation

Add LumoKit to your Package.swift using Swift Package Manager:

dependencies: [
    .package(url: "https://github.com/rryam/LumoKit.git", from: "3.2.0")
]

Then attach the dependency to your target:

.target(
    name: "AppModule",
    dependencies: [
        .product(name: "LumoKit", package: "LumoKit")
    ]
)

Getting Started

import LumoKit
import VecturaKit

// Configure vector database
let vecturaConfig = VecturaConfig(
    name: "knowledge-base",
    searchOptions: .init(
        defaultNumResults: 10,
        minThreshold: 0.7
    )
)

// Configure chunking strategy
let chunkingConfig = ChunkingConfig(
    chunkSize: 500,
    overlapPercentage: 0.15,  // 15% overlap between chunks
    strategy: .semantic,  // Content-aware chunking
    contentType: .prose  // For prose text
)

// Initialize LumoKit
let lumoKit = try await LumoKit(
    config: vecturaConfig,
    chunkingConfig: chunkingConfig
)

// Optionally choose a specific embedding model.
// Use a separate store when switching models so stored vector dimensions stay consistent.
let customModelConfig = VecturaConfig(
    name: "knowledge-base-retrieval",
    searchOptions: .init(
        defaultNumResults: 10,
        minThreshold: 0.7
    )
)

let customModelLumoKit = try await LumoKit(
    config: customModelConfig,
    chunkingConfig: chunkingConfig,
    modelSource: .id("minishlab/potion-retrieval-32M")
)

// Or provide any Vectura embedder directly
let customEmbedderConfig = VecturaConfig(
    name: "knowledge-base-multilingual",
    searchOptions: .init(
        defaultNumResults: 10,
        minThreshold: 0.7
    )
)

let customEmbedderLumoKit = try await LumoKit(
    config: customEmbedderConfig,
    chunkingConfig: chunkingConfig,
    embedder: SwiftEmbedder(modelSource: .id("intfloat/multilingual-e5-small"))
)

// Parse and index a document
let url = URL(fileURLWithPath: "/path/to/document.pdf")
try await lumoKit.parseAndIndex(url: url)

// Search
let results = try await lumoKit.semanticSearch(
    query: "Explain vector databases",
    numResults: 5,
    threshold: 0.65
)

for result in results {
    print(result.text)
}

Custom Embedder Examples

LumoKit can also accept any embedder that conforms to VecturaEmbedder.

Use NLContextualEmbedder

import LumoKit
import VecturaKit
import VecturaNLKit

let embedder = try await NLContextualEmbedder(language: .english)
let lumoKit = try await LumoKit(
    config: vecturaConfig,
    chunkingConfig: chunkingConfig,
    embedder: embedder
)

Use OpenAICompatibleEmbedder

import LumoKit
import VecturaKit
import VecturaOAIKit

let embedder = OpenAICompatibleEmbedder(
    baseURL: "https://api.openai.com/v1",
    model: "text-embedding-3-small",
    apiKey: "<api-key>"
)

let lumoKit = try await LumoKit(
    config: vecturaConfig,
    chunkingConfig: chunkingConfig,
    embedder: embedder
)

Use MLXEmbedder

import LumoKit
import VecturaKit
import VecturaMLXKit
import MLXEmbedders

let embedder = try await MLXEmbedder(configuration: .multilingual_e5_small)
let lumoKit = try await LumoKit(
    config: vecturaConfig,
    chunkingConfig: chunkingConfig,
    embedder: embedder
)

Examples

API Overview

public final class LumoKit {
    public init(
        config: VecturaConfig,
        chunkingConfig: ChunkingConfig? = nil,
        modelSource: VecturaModelSource = .default
    ) async throws

    public init(
        config: VecturaConfig,
        chunkingConfig: ChunkingConfig? = nil,
        embedder: VecturaEmbedder
    ) async throws

    public func parseAndIndex(url: URL, chunkingConfig: ChunkingConfig? = nil) async throws -> [UUID]
    public func parseDocument(from url: URL, chunkingConfig: ChunkingConfig? = nil) async throws -> [Chunk]

    public func chunkText(_ text: String, config: ChunkingConfig) throws -> [Chunk]

    public func semanticSearch(
        query: String,
        numResults: Int = 5,
        threshold: Float = 0.7
    ) async throws -> [VecturaSearchResult]

    public func addDocuments(texts: [String]) async throws -> [UUID]
    public func deleteChunks(ids: [UUID]) async throws
    public func documentCount() async throws -> Int
    public func resetDB() async throws
}

public struct ChunkingConfig {
    public let chunkSize: Int
    public let overlapPercentage: Double
    public let strategy: ChunkingStrategyType // .sentence, .paragraph, .semantic
    public let contentType: ContentType // .prose, .code, .markdown, .mixed
}

public enum LumoKitError: Error {
    case emptyDocument
    case invalidChunkSize
    case invalidURL
    case fileNotFound
    case unsupportedFileType
    case invalidSearchParameters
    case chunkingFailed(strategy: String, underlyingError: Error)
}
🎯 aiskill88 AI 点评 A 级 2026-05-24

LumoKit填补Swift生态RAG空白,端侧部署方案符合隐私趋势,代码质量良好,但社区规模小、文档需强化。

⚡ 核心功能
👥 适合人群
AI 技术爱好者研究人员和学生开发者和工程师技术创业者
🎯 使用场景
  • 本地部署运行,保护数据隐私,满足合规要求
  • 自定义集成到现有系统,扩展技术栈能力
  • 作为开源基础组件进行商业化二次开发
⚖️ 优点与不足
✅ 优点
  • +MIT 协议,可免费商用
  • +完全开源免费,无授权费用
  • +本地部署,数据完全自主可控
  • +开发者社区支持,遇问题可查可问
⚠️ 不足
  • 安装和初始配置可能需要一定技术基础
  • 功能完整性通常不如成熟商业产品
  • 技术支持主要依赖开源社区,响应速度不稳定
⚠️ 使用须知

AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。

建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。

📄 License 说明

✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。

🔗 相关工具推荐
🧩 你可能还需要
基于当前 Skill 的能力图谱,自动补全的工具组合
❓ 常见问题 FAQ
支持兼容本地运行的开源模型,可自定义集成各类端侧LLM。
💡 AI Skill Hub 点评

AI Skill Hub 点评:LumoKit 的核心功能完整,质量良好。对于AI 技术爱好者来说,这是一个值得纳入个人工具库的选择。建议先在非生产环境试用,再逐步推广。

📚 深入学习 LumoKit
查看分步骤安装教程和完整使用指南,快速上手这款工具
🌐 原始信息
原始名称 LumoKit
Topics RAGSwift6端侧AI本地模型隐私保护
GitHub https://github.com/rryam/LumoKit
License MIT
语言 Swift
🔗 原始来源
🐙 GitHub 仓库  https://github.com/rryam/LumoKit

收录时间:2026-05-24 · 更新时间:2026-05-24 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。