基于在线LLM+离线Embedding混合架构的RAG知识库搭建方案
为了帮助新手顺利搭建RAG系统,本文详细介绍了一个基于langchain-chatchat框架的分步搭建流程。
转载自本人知乎: 基于在线LLM+离线Embedding混合架构的RAG知识库搭建方案 - 知乎
一、前期准备:环境与工具说明
以下是基于我本地软硬件环境的搭建流程,先明确环境与所需工具,方便后续步骤顺利推进。
1.1 硬件环境要求
- CPU:英特尔 酷睿 i7 8550U
- 内存:16 G
- 硬盘:512 G
- GPU:GTX 1050TI
1.2 系统与软件环境要求
- 操作系统:Windows 11 系统
- Python 版本:3.10.8(需提前安装并配置环境变量)
- Python 包管理器:UV(替代 pip,提升包安装效率)
1.3 核心架构与工具列表
- 核心框架:langchain-chatchat 0.3.1(用于快速搭建 RAG 系统)
- 在线 LLM 模型:DeepSeek(提供对话生成能力)
- 离线 Embedding 模型:bge-base-zh-v1.5(用于文本向量化,构建向量库)
- 模型管理工具:Ollama(Windows 版本,用于加载和管理离线模型)
- 服务中间件:OneAPI(Windows 版本,用于对接各类模型,统一接口)

架构图
二、分步搭建流程
本搭建流程遵循“环境配置→工具安装→模型部署→项目配置→测试验证”的逻辑顺序,各步骤均提供标准化操作说明及执行命令,保障搭建过程的可重复性与可操作性。
2.1 安装并配置 OneAPI
OneAPI 是连接各类大模型的中间件,通过它可以统一接口对接在线 DeepSeek 模型和离线 Embedding 模型,简化项目对接逻辑。
- 下载与安装 OneAPI
- 从 OneAPI 官方下载页面 点击获取 Windows 版 exe 安装包;
- 双击 exe 即可启动。

双击后弹出命令行框
启动 OneAPI 主程序后,打开管理界面(默认地址:http://127.0.0.1:3000);
配置在线 DeepSeek 模型:进入「渠道」→「添加新的渠道」,选择“DeepSeek”类型,填写模型名称、申请的 API 密钥,测试连接成功后保存;

OneAPI的渠道管理界面
配置oneapi密钥:进入「令牌」→「添加新的令牌」,模型范围选择“deepseek-chat”,填写名称、额度设置为无限制后保存;

令牌页面,点击复制即可复制oneapi密钥(备用)
2.2 安装 Ollama 并部署离线 Embedding 模型
Ollama 是轻量级的模型管理工具,支持在本地快速加载和运行各类开源模型,这里用于部署 bge-base-zh-v1.5 离线 Embedding 模型。
- 下载与安装 Ollama
- 从 Ollama 官网
Ollama-Windows下载界面ollama.com/download/windows
Windows 版 exe 安装包;
- 双击安装(默认路径即可,自动配置环境变量);
- 打开 CMD 输入以下命令验证安装:
ollama –version
若输出版本信息,则说明安装成功。
- 下载并启动 bge-base-zh-v1.5 模型
- CMD 中输入以下命令下载模型:
ollama pull bge-base-zh-v1.5
- 下载完成后,输入以下命令启动 Ollama 服务(保持窗口开启,服务关闭则模型不可用):
ollama serve
服务启动成功后,会显示“Listening on 127.0.0.1:11434”,表示本地服务端口为 11434。

ollama serve启动界面
2.3 安装 langchain-chatchat 并配置
langchain-chatchat 是基于 LangChain 开发的 RAG 系统框架,集成了对话、向量库管理等功能,通过它可以快速搭建 RAG 知识库界面。
- 安装 langchain-chatchat 0.3.1
- 确保 UV 可用(未安装则先执行 pip install uv);
- 输入以下命令安装 langchain-chatchat 0.3.1 完整版:
uv pip install langchain-chatchat[all]==0.3.1
初始化langchain-chatchat,生成配置文件
chatchat init
配置 langchain-chatchat 核心配置文件
- 打开核心配置文件「model_settings.yaml」;
- 配置核心参数:LLM 模型部分填写 OneAPI 本地服务地址(默认:http://localhost:3000/v1)及 OneAPI 生成的访问令牌,llm_models列表也要添加模型名称,实现通过 OneAPI 对接 DeepSeek 模型;

langchain-chatchat基于oneapi配置deepseek
- Embedding 模型部分直接对接本地 Ollama 服务,填写 Ollama 服务地址(http://localhost:11434)及 bge-base-zh-v1.5 模型名称,无需密钥;

langchain-chatchat基于ollama配置bge-base-zh-v1.5
- 同时修改配置文件的默认LLM模型和Embeddin模型的名称(保持一致);

langchain-chatchat配置文件
- 保存配置(注意 YAML 缩进规范,避免语法错误)。
初始化知识库
- 在命令行中输入以下命令初始化知识库:
chatchat kb -r

初始化过程
若输出“已将向量库保存到磁盘”,则说明初始化成功。

初始化知识库成功
2.4 启动 langchain-chatchat 并进入 UI 界面
- 确保 OneAPI 和 Ollama 服务已启动;
- CMD 输入以下命令启动 langchain-chatchat:
chatchat start -a
- 启动成功后,访问命令行提示的地址(默认 http://localhost:8501),即可进入可视化 UI 界面。

UI-对话
2.5 功能测试与知识库使用
完成搭建后,通过两次测试验证系统功能:基础对话测试(验证在线 LLM 模型)和 RAG 问答测试(验证离线 Embedding 与知识库功能)。
- 基础对话测试(验证在线 LLM 模型)
- 在 UI 对话窗口输入问题,发送后能正常返回回答,即说明在线模型对接成功。

在线LLM问答(无RAG)
RAG 问答测试(验证知识库功能)
- 准备测试 TXT 文档;
姓名:小张
身份证号:123457
姓名:小王
身份证号:179643
- 通过 UI 「知识库管理」→「Browse files」上传文件;

上传知识库文档
- 等待系统完成文本向量化与向量库存储;
- 输入与文档相关的问题,发送后若能结合文档内容回答,即说明 RAG 功能正常。

LLM+RAG回答
三、方案核心特性
3.1 架构灵活适配,平衡性能与隐私
采用在线 LLM(DeepSeek)+ 离线 Embedding(bge-base-zh-v1.5)混合架构。其中离线 Embedding 模型本地化部署,内部文档的向量化处理全程在本地完成,无需上传至第三方服务器,从数据流转源头保障机密、内部资料等敏感信息的安全性,完美解决对数据隐私保护的核心顾虑;同时借助在线 LLM 的强语义生成能力,确保对话回答的流畅度与专业性,即便无高性能环境,也能通过离线模块完成核心数据处理,在线模块按需调用,兼顾使用体验与环境适配性。
3.2 部署门槛友好,降低运维成本
基于 Windows 环境实现全流程可视化部署,核心工具(OneAPI、Ollama、langchain-chatchat)多数提供 Windows 版便捷安装包,无需复杂的 Linux 环境配置经验。配置流程标准化,关键参数均提供明确示例,非专业运维人员也能按照步骤快速完成搭建;同时大幅降低后续系统维护的技术门槛与人力成本。
3.3 扩展兼容性强,支撑业务迭代
通过 OneAPI 实现多模型统一调度接口,后续企业可根据业务发展需求,灵活替换为其他在线或离线 LLM/Embedding 模型,无需重构整体架构;langchain-chatchat 框架原生支持 Chroma、Milvus 等多种向量库,以及 TXT、PDF、Word 等多格式文档接入,可随知识库规模扩大、业务场景丰富而平滑扩展功能,有效延长方案的生命周期,避免重复投入。
3.4 硬件适配宽泛,控制部署成本
充分考虑有限的硬件预算,所选 bge-base-zh-v1.5 模型与 langchain-chatchat 框架对硬件资源要求适中,在普通办公级硬件(i7 8550u + GTX1050ti + 16G 内存)配置下即可稳定运行。无需额外采购高配置服务器,可直接利用现有办公设备完成部署,大幅降低初始投入成本,无需承担高额硬件开销就能拥有专业的 RAG 知识库系统。
四、常见问题排查
- 问题 1:Ollama 服务启动失败? 解决:检查端口 11434 是否被占用(通过 netstat -ano | findstr “11434” 查看),关闭占用端口的程序后重新启动。
- 问题 2:langchain-chatchat 启动后无法访问 UI? 解决:检查端口 7860 是否被占用,或重新执行 langchain-chatchat run 命令,查看命令行中的错误提示(多为配置文件错误)。
- 问题 3:RAG 问答无法关联知识库内容? 解决:检查文档是否成功导入、向量库初始化是否正常,或重新配置 model_settings.yaml 中的 Embedding 模型参数。
更多推荐





所有评论(0)