rlama
本地文档智能问答工具,零成本零隐私风险的私有知识库解决方案
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
本地文档智能问答工具,零成本零隐私风险的私有知识库解决方案
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你的文件夹里堆满了项目文档、技术手册、内部 wiki,每次想找某个具体答案都得来回翻找半天——现在,你可以直接问 AI 了。RLAMA 正是这样一款工具:它让任何人都能在本地文档上构建【专属知识问答机器人】,无需云端 API,无需付费订阅,数据完全留在你自己手里。
RLAMA 由独立开发者 LeDonTizi(意大利开发者)于 2024 年创建,是一个完全开源的本地 RAG(检索增强生成)框架。项目采用 Go 语言编写,利用 Ollama 在本地运行大语言模型(如 llama3、mistral 等),用户只需一行命令即可对本地文件夹建立索引并开始对话。截至目前已收获超过 1000 颗 GitHub stars,Apache-2.0 开源许可证。
RLAMA 的设计理念是【零配置即可上手】,但功能深度不容小觑:
最基础的使用方式是 rlama rag [模型] [名称] [文件夹]:RLAMA 会自动递归扫描指定目录下的所有文件(支持 .txt、.md、.html、.json、.csv 以及各类代码文件),调用 Ollama 的嵌入模型(默认使用 snowflake-arctic-embed2)将文档切块并生成向量,存入本地 Bleve 全文搜索引擎。用户随后通过 rlama run [名称] 即可对索引后的文档发起自然语言提问,系统会检索最相关的片段并注入 LLM 上下文,返回精准答案。
文档切分质量直接决定问答效果。RLAMA 内置了多种分块策略(默认策略 + 可配置 chunk_size / chunk_overlap 参数),internal/service/chunker_service.go 实现了完整的分块逻辑,cmd/chunk_eval.go 提供了分块效果评估命令,用户可以量化不同策略在本场景下的表现。
pkg/vector/hybrid_store.go 实现了混合向量存储,结合了 HNSW 图索引(hnsw_vector_store.go)和 Bleve 倒排索引,支持关键词 + 语义双重检索。reranker(重排)模块(internal/service/reranker_service.go)可选开启,在初筛结果基础上用独立模型重新排序,提升 top-K 结果的相关性。
cmd/agent.go 实现了 AI Agent 能力,不仅仅是简单的问答——Agent 可以调用工具(tools)执行实际操作:执行 shell 命令、搜索网页、抓取 URL 内容、管理文件系统。internal/domain/agent/ 下包含多种 Agent 架构:
conversational_agent.go:对话式 Agent,维持多轮上下文orchestrator.go:编排式 Agent,调度多个子 Agent 协同任务orchestrated_agent.go:混合编排模式tools.go(44KB):核心工具集,定义了 Agent 可调用的所有能力docs/AGENTS_README.md 和 docs/orchestrator.md 详细描述了 Agent 系统的设计理念和实现细节。
对于不习惯命令行的用户,RLAMA 还提供了 rlama-ui 子项目:一个基于 Electron + React 的跨平台桌面应用。前端(rlama-ui/app/)使用 React + Ant Design 构建界面,后端(rlama-ui/backend/app.py,73KB)基于 FastAPI 提供 REST API,封装了 CLI 的所有功能。
UI 支持的功能包括:RAG 创建与管理、文档查看、Agent 对话、API Key 配置等。打包配置(electron-builder)支持 macOS / Windows / Linux 三平台生成可执行文件。对于开发者而言,可以通过 rlama api 命令直接启动 API 服务器(FastAPI + Uvicorn),然后通过 HTTP 调用所有功能。
后端核心(Go):
| 模块 | 技术选型 | 说明 |
|---|---|---|
| CLI框架 | spf13/cobra | 命令行入口 |
| 全文检索 | bleve v2 | 本地索引引擎 |
| 向量索引 | HNSW算法 | 高维向量最近邻检索 |
| LLM通信 | Ollama API | 本地模型推理 |
| 嵌入模型 | snowflake-arctic-embed2 | Ollama 嵌入服务 |
| HTML解析 | goquery | 网页内容提取 |
| Markdown | html-to-markdown | HTML转Markdown |
前端(Electron):
React 18 + Ant Design 5 + Axios + React Router + React Markdown(支持 GFM 语法高亮)。
API服务(Python):
FastAPI + Uvicorn + Pydantic + httpx,实现与 Go CLI 的进程间通信。
安装要求: Go 1.23+、已运行 Ollama(curl -fsSL https://ollama.com/install.sh | sh)。安装后运行 install.sh 脚本,程序会自动检测 Ollama 状态并引导安装必要的模型。
命令行 vs 桌面应用:
局限性:
RLAMA 代表了【隐私优先 AI】这一重要趋势:数据不离开本地,用户完全掌控自己的文档和对话历史。在企业内网、个人知识库、敏感行业(医疗、法律、金融)等场景,本地 RAG 方案正获得越来越多的关注。
与云端方案(如 OpenAI RAG、Claude API)相比,RLAMA 的优势在于零成本、隐私安全和离线可用性;劣势在于效果上限受限于本地模型能力,部署和维护需要一定技术门槛。随着 Ollama 生态的成熟和模型质量的持续提升,这类本地 RAG 工具的实用价值正在快速增长。