离线开源RAG:摄取本地文件、GitHub仓库、网站,用本地Ollama模型问答
Ollama提供本地聊天与嵌入模型,LlamaIndex负责检索与流式响应,Streamlit提供Web界面,全程离线
方案简介
Local RAG 是一个离线、开源的检索增强生成(RAG)应用。它将本地文件、GitHub 仓库和网站作为数据源摄取并建立索引,通过本地 Ollama 模型进行问答。整个方案的聊天、嵌入与索引内容都保留在你的机器或网络内,不依赖第三方服务,敏感数据不会离开本地网络。适合希望在本地搭建私有知识库问答、对数据隐私有要求的开发者与团队。
亮点与能力
- 本地 Ollama 聊天模型
- Ollama 或本地 Hugging Face 嵌入模型
- 多种摄取来源:本地文件、GitHub 仓库、网站
- 通过 LlamaIndex 流式输出 RAG 响应
- 浏览器本地设置持久化
- 聊天历史导出
- 上传、URL、仓库及摄取防护措施
组成与分工
- Ollama:本地运行聊天模型(如 gemma4、llama3)与嵌入模型(默认 embeddinggemma),是 LLM 推理与嵌入后端
- LlamaIndex:构建查询引擎,负责检索 Top K 相似块并以 compact 模式生成流式响应
- Hugging Face 模型:可选的本地嵌入后端,默认使用 Alibaba-NLP/gte-modernbert-base
- Streamlit:Web 应用界面,通过
streamlit run main.py启动,设置存储在浏览器 localStorage - Docker:提供容器化部署,官方镜像
jonfairbanks/local-rag运行在 8501 端口
前置要求
开始前请确保具备:
- 一个本地 Ollama 实例
- Ollama 中至少有一个支持聊天的模型
- 如使用默认 Ollama 嵌入后端,至少有一个嵌入模型(默认模型名为 embeddinggemma)
- Python 3.14+
警告:本应用在 Windows Subsystem for Linux 上未测试,建议使用 Linux 主机。
实施步骤
1. 安装并拉取模型
安装 pipenv 与依赖:
bash
pip install pipenv
pipenv install
拉取所需模型:
bash
ollama pull gemma4:latest
ollama pull embeddinggemma
ollama list
2. 启动应用
本地方式启动:
bash
pipenv run streamlit run main.py
或使用 Docker:
bash
docker compose up -d
3. 配置并使用
- 打开 Settings 确认 Ollama 端点。
- 选择有效的聊天模型。
- 选择嵌入后端和模型。
- 从本地文件、GitHub 仓库或网站导入数据。
- 摄取完成后,在聊天框中提问。
在必需的模型设置有效之前,数据导入控件保持禁用状态。
使用与配置要点
默认 Ollama 端点为 http://localhost:11434,可在 Settings 标签页修改,应用会刷新该端点下的聊天与嵌入模型列表。
关键设置:
- Top K:每次查询检索的最相似块数量,默认
3 - Chunk Size:索引源文本的最大块大小,默认
1024 - Chunk Overlap:相邻块之间的文本重叠,必须小于 Chunk Size,默认
200
设置存储在浏览器 localStorage 中,下次访问同一浏览器时恢复。聊天历史不以此方式持久化,请使用 Export Data 部分下载。
本地文件上传限制:每次最多 10 个文件,单文件 25 MB,单次上传总计 100 MB。上传的文件被写入临时 data/ 目录进行摄取,索引完成后删除。
注意事项与常见问题
- 本应用在 WSL 上未测试,建议使用 Linux 主机
- GitHub 源仅支持
github.com仓库 URL,必须直接指向仓库,issue、PR、分支等路径会被拒绝;仓库以--depth 1克隆 - 网站摄取一次最多接受 5 个公共 HTTPS URL,仅允许 HTTPS,阻止本地/私有等网络地址,重定向最多 3 次,响应体每 URL 限 5 MB
- 如 Ollama 运行在宿主机而非容器内,Linux Docker 可能需要
extra_hosts: - 'host.docker.internal:host-gateway',然后使用http://host.docker.internal:11434作为端点
优缺点
- ✓ 数据不出本地网络
- ✓ 支持三种数据摄取源
- ✕ WSL未测试,建议Linux
- ✕ 上传单文件限25MB
出处
本方案挖掘自开源项目 jonfairbanks/local-rag,方案内容与实施命令均来自其 README 原文。
本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。