local-rag
完全本地运行的隐私优先 RAG 工具,支持本地文件/GitHub/网页摄入,Ollama 驱动,数据
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
完全本地运行的隐私优先 RAG 工具,支持本地文件/GitHub/网页摄入,Ollama 驱动,数据
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:Local RAG 应用界面演示,动图展示完整文件摄入 → 检索 → 对话流程
想象这样一个场景:你在公司内网工作,涉及大量机密文档,传统的云端 RAG 方案(将文件上传到第三方服务)完全无法使用。Local RAG 正是为这类痛点而生——它允许你将本地文件、GitHub 仓库甚至网页内容摄入本地知识库,通过 Ollama 驱动的开源大模型进行检索增强对话,所有数据流转完全在本地网络内完成。
这款工具的作者是 Jon Fairbanks,一位专注于本地化 AI 部署的独立开发者。项目采用 Python 开发,前端基于 Streamlit 构建友好的 Web 界面,核心 RAG 引擎由 LlamaIndex 驱动,接入 Ollama API 调用本地大语言模型(如 Llama 3、Qwen 等)。截至目前已在 GitHub 获得 700+ stars,Topic 标签覆盖 llm、rag、ollama、retrieval-augmented-generation 等多个 AI 热门方向。
Local RAG 支持三种数据摄入方式,覆盖了大多数本地知识管理的使用场景:
本地文件摄入是最基础的功能。用户通过 Web 界面上传 PDF、Markdown、TXT 等格式文件,系统自动进行文本提取和分块处理。根据代码分析,分块上限为 1000 个文档、总字符量不超过 10MB,超出限制会抛出明确的 ValueError 异常,这是防止用户意外摄入过多数据导致内存溢出的保护机制。
GitHub 仓库摄入允许用户输入任意 GitHub 仓库地址,系统自动 clone 并摄入其中的代码文件和文档。这对于开发者来说非常实用——你可以让 AI 基于某个开源项目的源码回答"这个模块是如何工作的"这类问题,而无需将代码上传到任何第三方服务。
网页摄入功能支持输入 URL,自动抓取并解析网页内容。用户可以构建基于特定网站或博客的知识库,比如让 AI 基于某位博主的全部文章回答相关问题。
摄入完成后,所有文档通过 Ollama 管理的 embedding 模型转换为向量,存储在本地向量数据库中。检索时,用户的问题同样转换为向量,通过向量相似度搜索找到最相关的文档片段,作为上下文注入到大模型的 prompt 中,生成最终回答。
从代码结构看,Local RAG 采用了分层模块化架构,各组件职责清晰:
| 目录/文件 | 职责 |
|---|---|
main.py | Streamlit 应用入口,页面布局编排 |
utils/ollama.py | Ollama API 封装(模型列表查询、LLM 实例创建、流式对话) |
utils/llama_index.py | LlamaIndex 服务上下文配置(嵌入模型、向量存储) |
utils/rag_pipeline.py | RAG 核心管道:摄入 → 分块 → 嵌入 → 索引 → 检索 → 生成 |
utils/helpers.py | 辅助工具函数 |
components/ | Streamlit UI 组件(chatbox、sidebar、header 等) |
RAG Pipeline 的关键流程在 rag_pipeline.py 中实现,约 200 行代码涵盖了完整的数据流:
llama-index-readers-file)加载本地文件,GitHub 读取器和网页读取器分别由 llama-index-readers-github 和 llama-index-readers-web 处理validate_ingested_documents() 检查文档数量和总字符量上限值得注意的是,Ollama 客户端的创建使用了 @st.cache_data 装饰器缓存 LLM 实例,避免每次请求都重新连接 Ollama 服务,这是 Streamlit 应用中常见的性能优化手段。
对于希望快速体验的用户,项目提供了生产级 Docker 部署方案,体验门槛大幅降低。
Dockerfile 采用了三阶段多阶段构建:
python:3.14-slim,设置 UTF-8 环境变量Pipfile.lock 部署依赖到 /.venv 虚拟环境appuser,暴露 8501 端口,配置 Streamlit 健康检查这种构建策略确保最终镜像只包含运行时依赖,体积精简。同时通过非 root 用户运行提升了容器安全性。
docker-compose.yml 的配置更为细致,体现了生产环境的考量:安全加固(no-new-privileges、cap_drop:ALL、read_only:true)、内存/CPU 配额(8GB 内存、4 核 CPU、512 进程数限制),以及 NVIDIA GPU 直通(device_ids:['0'], capabilities:[gpu])。这套配置兼具安全性和性能保障,不是简单的开发级配置。
优势方面,Web UI 的存在让 Local RAG 对非技术人员友好,无需命令行即可完成文件摄入和对话。对于已经有 Ollama 环境的开发者,docker-compose up 即可启动,零配置运行。
局限性方面,必须强调两点:一是 Ollama 需要单独部署和下载模型,docker-compose 只启动了 Local RAG 的 Web 服务,大模型本身需要通过 ollama pull 命令预先拉取到本地,首次使用有一定门槛;二是 对 GPU 显存有较高要求(docker-compose 配置 8GB 内存限制),运行 7B 量级的量化模型勉强可行,13B 及以上的模型在消费级显卡上体验会明显下降。
| 维度 | 评价 |
|---|---|
| 代码质量 | 较高。模块划分清晰,函数文档完整(Google Style Docstring),类型注解规范,异常处理充分 |
| 文档质量 | 优秀。README 链接了 7 个专项文档(setup、usage、pipeline、troubleshooting 等),CONTRIBUTING.md 和 SECURITY.md 均有覆盖 |
| 测试覆盖 | 有 tests/ 目录,测试框架存在但具体覆盖率需运行后评估 |
| 社区活跃度 | Commit 活动稳定,OpenSSF Best Practices 认证通过 |
| 许可证 | GPL-3.0,商用需注意传染性 |
Local RAG 代表了数据隐私与 AI 能力结合的一个细分方向。随着企业数据合规要求日益严格,"数据不出域"成为很多行业的硬需求。本地 RAG 工具正好填补了这个空白——用户既能利用大模型的语义理解能力,又无需将敏感数据交给第三方。
从技术趋势看,Ollama 的成熟降低了本地大模型部署的门槛(一条命令即可拉取和运行模型),LlamaIndex 等框架降低了 RAG 应用的开发成本,两者结合让 Local RAG 这类应用得以快速落地。

图2:Local RAG 项目官方 Logo