基于 Ollama 与 AnythingLLM 搭建本地 RAG 知识库
最近一直想基于 RAG(检索增强生成,Retrieval-Augmented Generation)和大语言模型(Large Language Model, LLM)技术搭建一套属于自己的个人知识库。以为会涉及到诸多复杂的流程,包括模型调用、界面开发等。经过实践发现,利用开源工具组合可以非常简单地实现,主要用到三个核心软件:Ollama、Docker 和 AnythingLLM。
本文介绍如何利用 Ollama、Docker 和 AnythingLLM 搭建本地 RAG 知识库。通过部署开源大语言模型服务,结合文档向量化处理,实现私有数据的智能问答。步骤涵盖环境安装、模型配置、文档上传及向量化处理,无需云端 API,确保数据隐私。文章详细说明了从 Ollama 模型拉取到 AnythingLLM 容器部署的全流程,并提供了 Docker Compose 配置示例及常见问题排查指南,适合希望构建本地化 AI 应用的个人开发者。

最近一直想基于 RAG(检索增强生成,Retrieval-Augmented Generation)和大语言模型(Large Language Model, LLM)技术搭建一套属于自己的个人知识库。以为会涉及到诸多复杂的流程,包括模型调用、界面开发等。经过实践发现,利用开源工具组合可以非常简单地实现,主要用到三个核心软件:Ollama、Docker 和 AnythingLLM。
检索增强生成(RAG)是指对大型语言模型输出进行优化,使其能够在生成响应之前引用训练数据来源之外的权威知识库。大型语言模型(LLM)用海量数据进行训练,使用数十亿个参数为回答问题、翻译语言和完成句子等任务生成原始输出。在 LLM 本就强大的功能基础上,RAG 将其扩展为能访问特定领域或组织的内部知识库,所有这些都无需重新训练模型。这是一种经济高效地改进 LLM 输出的方法,让它在各种情境下都能保持相关性、准确性和实用性。
与 RAG 并生的另一种技术叫监督式微调(SFT),是将 LLM 模型注入新的知识库并将模型本身进行训练以获得所需要的结果,需要有一定的硬件设备。两种技术并不矛盾,其实互相结合才是最好的解决方案。本文重点介绍 RAG 的落地方案。
Ollama 是一个开源的大型语言模型服务工具,它允许用户在自己的硬件环境中轻松部署和使用大规模预训练模型。Ollama 的主要功能是在 Docker 容器内部署和管理大型语言模型(LLM),使得用户能够快速地在本地运行这些模型。它简化了模型下载、管理和推理的过程,支持多种主流模型架构。
官网地址:https://ollama.com/
Docker 是一个软件平台,让您可以快速构建、测试和部署应用程序。Docker 将软件打包成名为容器的标准化单元,这些单元具有运行软件所需的所有功能,包括库、系统工具、代码和运行时。使用 Docker,可以将应用程序快速部署和扩展到任何环境中,保证环境的一致性。
AnythingLLM 是由 Mintplex Labs Inc. 开发的一个全栈应用程序,是一款高效、可定制、开源的企业级文档聊天机器人解决方案。它能够将任何文档、资源或内容片段转化为大语言模型在聊天中可以利用的相关上下文。AnythingLLM 支持几乎所有的主流大模型和多种文档类型,可定制化,而且安装和设置简单,非常适合本地化知识库搭建。
qwen2 系列,例如 qwen2:7b,大小约为 4.4G,适合大多数消费级显卡。ollama run qwen2:7b
回车后会自动下载模型(可能网络会有些问题,建议配置镜像源)。下载完成后,直接在终端对话提问即可验证模型是否可用。为了更稳定的运行,建议使用 Docker Compose 方式部署 AnythingLLM,或者通过 Docker CLI 手动启动。
AnythingLLM,点击 Pull 自动开始下载。创建 docker-compose.yml 文件,内容如下:
version: '3'
services:
anythingllm:
image: mintplexlabs/anythingllm:latest
container_name: anythingllm
ports:
- "3001:3001"
environment:
- PERSIST_DATA=true
volumes:
- ./data:/app/server/storage
restart: unless-stopped
执行 docker-compose up -d 启动服务。
qwen2:7b 模型,max token 根据显存情况自行调整。AnythingLLM Embedder;Vector Database 向量库默认选择 LanceDB。如果 Ollama 模型下载速度较慢,可以在环境变量中配置代理,或者使用国内镜像源加速。例如在 Windows 上可以通过修改 hosts 或使用科学上网工具解决网络问题。
如果运行大模型时显存不足,可以尝试选择参数量更小的模型(如 qwen2:0.5b 或 phi2),或者减少并发请求数。AnythingLLM 支持动态加载模型,关闭不用的工作区可以释放显存。
如果问答结果不准确,可以调整文档切片策略。在 AnythingLLM 设置中,可以修改 Chunk Size(切片大小)和 Chunk Overlap(重叠部分)。较小的切片通常能提高检索精度,但会增加计算量。
基于 RAG 的个人本地知识库搭建其实很简单,通过 Ollama 提供本地推理能力,AnythingLLM 提供文档管理与交互界面,配合 Docker 实现环境隔离,即可构建一个完全私有化的 AI 助手。后续可以尝试把专业相关的知识注入进去,方便自己的个人知识库检索,实现知识的沉淀与复用。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online