利用 Ollama + RAGFlow 部署千问大模型构建个人知识库 AI 智能体
将开源的大语言预训练模型部署到用户设备上进行推理应用,特别是结合用户专业领域知识库构建 AI 应用,让 AI 在回答时更具有专业性。目前已有许多成熟的应用方案,支持大模型本地化部署的平台及工具包括 Ollama、vLLM、LangChain、Ray Serve 等,大大简化了模型的部署工作并提供全生命周期管理。针对知识库构建,需要能处理多种格式文档(doc/pdf/txt/xls 等)的工具,实现文本自动分割、向量化处理及本地检索增强生成(RAG)。常用工具包括 RAGFlow、MaxKB、AnythingLLM、FastGPT、Dify、Open WebUI 等。
本文将采用 Ollama + RAGFlow 方式进行搭建,系统架构如下:

1. 安装 Ollama
Ollama 是一个开源的大型语言模型服务工具,旨在帮助用户在本地环境中部署和运行大型语言模型。其核心功能是提供简单、灵活的方式,将复杂的 AI 模型从云端迁移到本地机器上,简化大型语言模型在本地环境中的运行和管理。
(1) 执行安装命令
curl -fsSL https://ollama.com/install.sh | sh
在安装过程中,Ollama 会识别相应的 GPU 加速卡。若未识别相应设备,则使用 CPU 模式。
GPU 模式提示: "NVIDIA GPU installed"

CPU 模式提示: "No NVIDIA/AMD GPU detected. Ollama will run in CPU-only mode"

(2) 查看 Ollama 状态
sudo systemctl status ollama

(3) 设置 Ollama 环境变量
为了后续在 RAGFlow 容器环境下配置连接时能够正常连接 Ollama,需要修改服务配置文件。
sudo vi /etc/systemd/system/ollama.service
增加 Environment="OLLAMA_HOST=0.0.0.0:11434"。

修改后重启服务:
sudo systemctl daemon-reload
sudo systemctl restart ollama.service
sudo systemctl status ollama.service

2. 部署千问大模型
(1) 模型下载
与 Docker 类似,可以通过 ollama pull 命令进行预训练模型下载。目前 Ollama 已支持许多大模型,可通过访问 https://ollama.com/library 获取相关信息。

这里使用 ollama run qwen2.5:7b。当本地没有 qwen2.5:7b 预训练模型时,Ollama 将先下载模型到本地,然后运行该模型。

测试运行正常,可进行问答测试。基于 Ollama 的千问 7B 大模型部署完毕。
3. 安装 RAGFlow
RAGFlow 是一款基于深度文档理解构建的开源 RAG(Retrieval-Augmented Generation)引擎。它可以为各种规模的企业及个人提供一套精简的 RAG 工作流程,结合大语言模型(LLM)针对用户各类不同的复杂格式数据提供可靠的问答以及有理有据的引用。
RAGFlow 部署采用的是 Docker 容器化部署,因组件较多使用了多个容器,需要通过 docker compose 进行多容器部署方式。
(1) 克隆仓库
git clone https://github.com/infiniflow/ragflow.git
cd ragflow
git checkout -f v0.14.1

(2) 修改配置文件
修改 docker 子目录下的 .env 文件,进行初始化配置。
注意:在初始化环境变量里 RAGFLOW_IMAGE 环境变量指向的是标签为 v0.14.1-slim 镜像文件,该镜像未打包 embedding models,建议修改为 v0.14.1。

其他变量参数包括相关组件的端口、应用的用户初始化密码、镜像下载地址等,按需进行调整和设置。
vi docker/.env
注释掉第 84 行,使用第 87 行。

(3) 启动应用
进入 ragflow 目录,使用 docker compose 启动应用。
cd ragflow
docker compose -f docker/docker-compose.yml up -d


(4) 查看组件及启动情况
docker images
docker compose images
docker logs -f ragflow-server



4. 配置 RAGFlow - 接入本地大模型
在浏览器中输入服务器 IP 地址并登录 RAGFlow。默认 HTTP 服务端口为 80,无需额外指定端口。

完成注册登录后,将页面调整为中文。

点击图像进入模型提供商配置界面。默认为各种在线大模型供应商模型接入,但需申请 API key 填入。此处我们配置接入本地部署的 Ollama 管理的大模型。

添加成功后显示如下:

5. 配置 RAGFlow - 创建知识库
进入知识库管理界面进行初始化配置,点击保存。

上传个人相关知识文档等,由系统进行解析处理。

点击新增文件,上传相关文档。可以选择当前文件夹或拖拽文件夹。


点击解析,系统将对上传文档进行文本识别(图片类文档)、分割、向量化处理。

由于个人笔记本性能问题,这里只做简单测试,不做大规模文档入库。解析完成后,进行检索测试。从王国维的《东山杂记》里,尝试检索柳如是的信息。

可以看到,向量化后的资料库里已经有了柳如是的信息,但切片不完整。由此可见,在进行资料入库时需要有针对性的辅助切片标注等。另外,也可能跟文言文有关系。
6. 智能体应用测试
建立一个特定专业的智能体(Agent),相当于你的一个数字助手,赋予它一个角色(role),制定提示词(Prompt),设置自由度、温度等。
(1) 新建助理

(2) 角色设定及提示词

设置使用本地千问大模型并结合知识库内容进行回答,设定自由度为'精确'。

(3) 问答测试
先只用本地千问大模型进行问答测试,询问灶神是谁,千问没有正面回答我的问题。

尝试追问灶神具体是谁?让千问从王国维的《东山杂记》里找答案,AI 开始胡说八道了,大模型幻觉病发作。

再通过本地千问大模型结合本地知识库进行问答测试,该智能助理很快从本地知识库中找到了准确的答案。

可以看到,在专业知识库下回答的问题更有特定性。但总的来看,人工智能对文言文的理解还是较白话文差一些。通过 RAGFlow 可以建立不同领域的个人知识库及智能体,本文演示了如何结合 AI 大模型和知识库进行 RAG。

7. 常见问题与优化建议
在实际部署和使用过程中,可能会遇到一些常见问题,以下提供相应的优化建议。
7.1 显存不足问题
如果本地 GPU 显存不足以加载大模型,可以尝试以下操作:
- 调整模型大小:选择参数量更小的模型,如 Qwen2.5-1.5B 或 3B 版本。
- 限制并发数:在 Ollama 环境变量中设置
OLLAMA_MAX_LOADED_MODELS=1,避免同时加载多个模型占用显存。
- 量化模型:使用 GGUF 格式的量化模型(如 Q4_K_M),可以在保证效果的同时显著降低显存占用。
7.2 文档解析不准确
RAGFlow 的文档解析效果直接影响检索质量。如果遇到解析错误:
- 检查文件格式:确保上传的 PDF 是文字版而非扫描图片版,或者启用 OCR 功能。
- 调整切片策略:在知识库设置中,尝试更改 chunk 大小和重叠率。对于长文档,适当减小 chunk size 有助于提高检索精度。
- 人工干预:对于关键文档,建议在解析后进行人工校对,修正错误的切片内容。
7.3 网络与安全配置
- 内网隔离:生产环境部署时,建议将 Ollama 和 RAGFlow 部署在内网,仅开放必要的 API 端口。
- API 鉴权:虽然本地部署相对安全,但仍建议开启 RAGFlow 的账户权限管理,防止未授权访问。
- 备份策略:定期备份向量数据库和用户上传的文档,防止数据丢失。
7.4 性能调优
- 索引优化:对于大量文档,建议使用 SSD 存储以加快向量检索速度。
- 缓存机制:开启 RAGFlow 的查询缓存功能,减少重复问题的计算开销。
- 硬件升级:若频繁使用,建议升级 CPU 核心数或增加内存,以提升整体响应速度。
通过上述配置和优化,可以构建一个稳定、高效且具备专业知识的本地 AI 智能体系统。