回到课程目录

L2-08C 本地 RAG 量化、负载效率与企业级并发部署

L2-08C 加餐:本地 RAG 量化、负载效率与企业级并发部署

课程定位:承接 L2-08B 的“解析 → Chunk(把长文切成小段)→ Embedding(把文字变成可比较的数字)→ 混合检索(用多种方法一起找资料)→ Rerank(把找到的资料重新排队)→ 生成 → 评测”,进一步回答两个生产问题:一台本地设备怎样跑得稳、多人同时使用时怎样扩展且不形成单点故障。

课程导入:RAG 是什么,可以做什么

先想一个常见问题

你把公司的制度、课程资料、产品说明和客户项目文件放在电脑里,然后问 AI:

“客户项目延期以后,应该按照什么流程汇报?”

普通大模型可能不知道你公司的内部流程。它只能根据以前学过的公开内容回答,有时还会把不确定的内容说得很像真的。

RAG 解决的就是这个问题:先让 AI 去你指定的资料里找证据,再根据找到的证据回答。

可以把它理解成两种考试:

回答方式 像什么 可能出现的问题
普通大模型直接回答 闭卷考试,只能依靠以前记住的内容 不知道内部资料;资料可能过时;有时会猜答案
RAG 回答 开卷考试,先翻指定教材,再写答案并标出页码 如果教材本身错误、搜索没找到正确段落,答案仍可能出错

RAG 的全名不用死记

RAG 是 Retrieval-Augmented Generation 的缩写,中文常叫“检索增强生成”。

一句话记忆:

RAG = 先找资料,再让 AI 根据资料回答。

把 RAG 想成一位图书管理员:你提出问题后,他不会凭记忆乱答,而是先跑到正确的书架,找出几页最相关的内容,放到桌上,再根据这些页面回答你,并告诉你书名和页码。

RAG 四步流程插图:提问、查找资料、挑选证据、组织答案
① 提出问题说出真正想解决的事
② 查找资料从本地文档中找相关内容
③ 挑选证据把最有用的资料排在前面
④ 组织答案根据证据回答并给出来源
RAG 像图书管理员:先找对资料,再拿着证据回答。手机上可左右滑动查看图内标注。

RAG 可以做什么

场景 放入什么资料 可以向 AI 问什么 得到什么帮助
课程学习 讲义、书籍、课堂笔记、练习题 “这节课的三个重点是什么?” 总结、复习、出题,并找到对应章节
企业制度 员工手册、审批制度、报销流程 “出差报销需要准备哪些材料?” 根据当前制度回答并引用条款
产品客服 产品说明、常见问题、售后规则 “这个错误代码应该怎么处理?” 找到对应说明,生成客服答复草稿
项目管理 会议纪要、合同、计划、风险记录 “项目延期会影响哪些里程碑?” 汇总多个文件中的事实和风险
销售支持 产品资料、案例、报价规则 “这个客户适合哪个方案?” 找相关案例和产品信息,辅助准备方案
个人知识库 收藏文章、研究资料、工作记录 “过去关于这个主题做过哪些决定?” 从个人资料中找回历史信息

RAG 在企业中一般做哪些工作

在企业里,RAG 通常不是一个只会聊天的机器人。它更像一名数字资料助理:每天接收新文件、整理资料、帮助员工查找信息、起草答案,并把使用反馈变成下一轮改进依据。

企业工作 RAG 实际在做什么 给员工带来的帮助 必须由人负责什么
接收和整理资料 接收 PDF、Word、表格、扫描件;识别重复版本并建议分类 少做重复的搬运和归档工作 确认资料归属、保密级别和最终分类
建立企业知识库 解析文件、切成小段、生成向量并建立搜索索引 让大量资料变成“可以快速翻查的图书馆” 决定哪些资料可以进入知识库
内部制度问答 从员工手册、流程和制度中找证据后回答 快速查询报销、请假、采购和审批要求 人事、财务等负责人确认正式规则
客服和售后辅助 查产品手册、故障案例和服务政策,生成回复草稿 客服更快找到处理办法,减少漏项 客服人员检查语气、承诺和特殊情况
销售与项目支持 跨合同、会议纪要、案例和产品资料做比较与总结 准备方案、风险清单和会议材料更快 负责人判断商业条件并批准对外内容
经验复用 从历史项目中找相似问题、解决办法和复盘记录 新员工不必从零开始摸索 专家判断旧经验是否仍适用于当前情况
质量持续优化 记录“有用 / 没用”反馈,找到漏检和错检案例 搜索结果会随着真实使用不断改善 业务人员提供真实问题并设定验收标准
权限、版本和审计 按部门过滤资料,记录谁问了什么、引用哪个版本 降低越权查看和引用过期资料的风险 管理员配置权限、保存期限和审计规则

企业中的日常工作循环,可以记成五步:

  1. 上传资料负责人提交新制度、产品手册或项目复盘。
  2. 整理入库RAG 像图书管理员一样分类、贴标签、建目录。
  3. 员工提问直接说问题,不必记住文件名和文件夹。
  4. 查证回答系统先找证据,再显示答案、文件名和页码。
  5. 反馈改进员工标记是否有用,团队继续优化搜索效果。

企业落地的关键:AI 负责“搬资料、找资料、写草稿”,人负责“定权限、验事实、做决定”。涉及合同承诺、人事决定、财务付款、安全操作和对外发布时,不能只凭 RAG 自动完成。

本地 RAG 又是什么

“本地”表示资料解析、搜索、向量库和模型可以在自己的电脑或公司内网运行,资料不必发送到外部云服务。

它适合:

但“放在本地”不等于自动安全。仍然需要设置账号权限、文件权限、日志、备份和人工确认。

RAG 不是什么

一套完整 RAG 在背后经历什么

准备资料
  → 解析 PDF / Word / 图片
  → 清理重复、乱码和过期内容
  → 把长文切成小段
  → 把每段文字转换成向量
  → 保存到可以搜索的知识库
  → 用户提出问题
  → 找出相关资料并重新排序
  → AI 根据证据回答并给出引用
  → 用真实问题评测并持续优化

这节加餐后面的“量化、负载、并发和企业部署”,都是为了让这套流程在本地设备上跑得更省资源、更稳定,并能同时服务更多人。

一、学完这节课,你能做出什么

本课技术词“人话翻译”

第一次读时,可以把下面这些技术词直接替换成右侧的话。后文再次出现时,不再重复写长解释。

技术词 初中生也能懂的解释
RAG AI 回答前先去指定资料库找证据,再根据证据回答,像“开卷考试”。
LLM / 大语言模型 负责读文字、理解问题和组织答案的 AI 模型。
量化 / Q4 / Q8 把模型里的数字记得更简略,让它占更少内存;Q4 更省,Q8 通常更接近原模型。
token AI 读写文字时使用的小单位,一个汉字有时约占一个或多个 token。
上下文 这一次提问时,AI 能同时看到的问题、资料和历史对话。
Chunk 从长文档中切出来的一小段,方便搜索和引用。
Embedding / 向量 把一段文字转换成一串数字;意思越接近,两串数字通常越接近。
Dense 检索 按“意思像不像”找资料,例如“退款”和“退费”也可能被认为相近。
Sparse / BM25 检索 按关键词是否出现来找资料,特别适合编号、名称、型号和精确词。
Reranker 把第一轮找到的资料再精读一次,重新排出更可靠的前几名。
Top-K 搜索后先取前 K 条结果;Top-10 就是先看最相关的 10 条。
Recall@K 正确资料有没有出现在前 K 条里;越高说明越不容易漏掉。
KV Cache 模型生成答案时使用的“临时记忆区”,对话越长、同时回答的人越多,占用越大。
batch / 批处理 把多个小任务凑成一批一起算,像一次洗一桶衣服,而不是一件一件洗。
并发 / slots 同一时间有多少任务正在处理;slot 可以理解成模型的“服务窗口”。
TTFT 从点击发送到 AI 出现第一个字的等待时间。
TPOT / tokens/s AI 开始回答以后,后面的字出来得快不快。
p95 100 次请求里,大约有 95 次不会比这个时间更慢,用来观察大多数人的真实体验。
QPS / RPM 每秒 / 每分钟来了多少个请求,表示系统有多忙。
背压 系统忙不过来时,让新任务排队或稍后重试,而不是继续硬塞直到崩溃。
降级 / 熔断 某个高级功能出问题时改用简单方案,或暂时停止调用故障服务。
影子索引 在不影响旧知识库的地方先建一套新版,测试通过后再切换。
collection / alias collection 是一套向量资料;alias 是指向当前正式版本的“快捷名称”。
ACL 谁能看哪些资料的权限名单。
SLO 系统答应达到的服务目标,例如“95% 的请求在 3 秒内开始回答”。
RPO / RTO RPO 是最多允许丢多久的数据;RTO 是故障后最多允许多久恢复。
HNSW 向量数据库为了更快找相似资料而建立的“近路地图”。
CPU / GPU CPU 像通用员工,什么都能做;GPU 像大量并排的计算员工,特别适合模型计算。
RAM / VRAM RAM 是整台电脑的工作台;VRAM 是显卡自己的高速工作台。
FP16 / INT8 / INT4 保存模型数字的精细程度;数字越小越省空间,但可能损失质量。
GGUF / AWQ / GPTQ 不同的本地模型压缩和保存格式;选哪种取决于设备与推理软件。
ONNX 一种方便模型在不同设备和软件中运行的通用格式。
OCR 把扫描图片里的文字识别成可搜索文本。
API / API Gateway API 是软件之间说话的接口;Gateway 是统一接待、鉴权和限流的前台。
Load Balancer / LB 负载均衡器,把请求分给多台机器,避免所有人都挤到一台。
副本 / 分片 副本是多存一份防故障;分片是把大知识库分成几块分别保存。
无状态服务 服务本身不独占用户记录,换一台相同服务也能继续处理请求。
Kubernetes / Pod / HPA Kubernetes 管理许多服务;Pod 是一个运行单元;HPA 会根据忙闲自动增加或减少 Pod。
租户 共用一套系统的不同公司、部门或客户,彼此资料和配额需要隔离。
快照 某个时间点的完整备份,出问题时可以恢复。
幂等 同一个任务重复执行,也不会产生重复资料或破坏结果。

贯穿全课的比喻地图

技术概念 可以想成什么
Chunk 把一本很厚的书做成一张张知识卡片;每张卡片要保留标题和页码,不能剪成看不懂的碎纸。
Embedding 把所有知识卡片放到一张“意思地图”上;意思接近的卡片会住在同一个街区。
Dense + Sparse Dense 像按意思问图书管理员;Sparse 像拿着准确书名、编号去查目录。两种方法一起用更稳。
Reranker 第一位同学先拿来一叠可能相关的资料,第二位老师再认真检查,把最有用的几张放到最上面。
量化 像把冬天的大棉被压进真空袋,变小以后更容易放进行李箱,但压得太狠可能让细节变差。
KV Cache 像做题时的草稿纸;题目越长、同时做题的人越多,需要的桌面和草稿纸越大。
batch 像校车凑齐一批学生一起出发,比每个学生单独叫一辆车更省资源。
并发 slots 像食堂的打饭窗口;窗口越多,同时服务的人越多,但每个窗口都要占用工作人员和空间。
背压 像热门餐厅先发号码牌;厨房忙不过来时先排队,而不是让所有人一起冲进厨房。
影子索引 像演出前在排练厅搭一套新舞台,确认没问题后,才把正式舞台切换成新版。
副本与分片 副本像同一本书在不同分馆各放一本;分片像把一套百科全书分别放在几个书柜。
RPO / RTO 像游戏存档:RPO 决定最多退回多久以前的存档,RTO 决定坏掉后多久能重新进入游戏。

二、先分清三种“量化”

本地 RAG 里至少有三类量化(把数字用更省空间的方式保存),它们优化的对象不同,不能只说“把模型改成 4 bit”。

位置 量化对象 主要收益 主要风险 先验证什么
生成模型 LLM 权重、激活、KV Cache(生成时的临时记忆区) 降低模型常驻内存,让更大模型或更多并发进入设备 回答质量、长上下文稳定性、工具调用格式可能下降 业务测试集通过率、首字延迟、输出速度
Embedding / Reranker 编码器权重与推理精度 提高批处理吞吐(单位时间完成的任务量),降低嵌入与重排服务占用 相似度排序和召回率下降 Recall@K(正确资料是否进入前 K 条)、MRR / nDCG(正确资料排得是否靠前)、任务命中率
向量数据库 已存向量的 Scalar / Product / Binary Quantization 降低向量内存和磁盘占用,提高缓存命中与扫描速度 近邻排序发生偏移,需要原向量重打分 Recall@K、p95 检索延迟、索引体积

量化选择的实用顺序

  1. 先建立 FP16 / BF16 或原始向量的质量基线。
  2. 优先试风险较低的权重量化或向量 Scalar INT8。
  3. 如果仍放不进设备,再试 Q5 / Q4、量化 KV Cache或更激进的向量压缩。
  4. 每改一项只做一次变量变化,跑同一套真实业务题。
  5. 只有“质量过线 + p95 延迟过线 + 峰值内存安全”才进入生产。

关键判断:量化不等于一定更快。格式与硬件内核不匹配时,虽然模型更小,反量化开销或内存搬运仍可能让延迟变差。最终结论必须来自目标设备上的压测。

生活比喻:把高清照片压缩成小图片,文件会变小、传得更快,但压缩太狠就看不清细节。模型量化也是一样:省下的内存和速度,必须拿真实问题检查有没有损失重要信息。


三、显存 / 内存怎样估算

1. 模型权重的粗估

权重占用 ≈ 参数量 × 每参数 bit ÷ 8 × 运行时系数

运行时系数可先按 1.10~1.25 做规划,用来容纳元数据、量化分组和运行时开销。例如 8B 模型采用 4 bit,裸权重约 4 GB,但不要把“4 GB 模型文件”等同于“只需要 4 GB 内存”。

2. KV Cache(模型的临时记忆区)是并发时最容易漏算的部分

单请求 KV Cache(近似)
≈ 2 × 层数 × KV heads × head_dim × 上下文 token 数 × 每元素字节数

具体值受模型结构、GQA / MQA、KV 数据类型、分页缓存和推理框架影响,应以服务启动日志和监控数据校准。上下文从 4K 增至 16K,KV 占用通常也会接近线性增加;并发会让多条活动序列共同占用 KV 空间。

生活比喻:KV Cache 就像桌上的草稿纸。一个人做一道短题,只需要一小块;四个人同时做长题,就需要四张更大的桌子。电脑内存不够时,不是大家“挤一挤”就行,而是会明显变慢甚至停下来。

3. 整机安全预算

总占用 ≈ 模型常驻 + 活动请求 KV + 批处理工作区
       + Embedding / Reranker + 向量索引 + 服务进程 + 操作系统预留

课堂起始建议(是容量规划经验值,不是硬性标准):

4. 本地设备选型参考

设备与场景 建议起点 并发策略 不建议做法
16 GB Apple Silicon / 个人知识库 3B~8B 的 Q4 / Q5;Embedding 单独小批处理 生成活动槽位从 1 开始,检索可并发 2~4 一开始就开 16K/32K 上下文和多个生成槽位
32~64 GB Apple Silicon / 小团队 7B~14B 的 Q4 / Q5,视质量测试选型 llama-server 从 2~4 slots(同时服务窗口)压测,入口队列限长 只看模型能加载,不测多人长回答
单张 16~24 GB NVIDIA GPU AWQ / GPTQ / FP8 等须先核对 GPU 和推理框架兼容表 vLLM 连续批处理;以活动 token 和 KV 使用率限流 因为量化更小就盲目复制多个模型实例
CPU 服务器 / 内网轻负载 GGUF Q4~Q8;Embedding 使用 ONNX / CPU 优化 控制线程数,避免推理与向量索引争抢全部核心 把线程数直接设成逻辑核心数并无限接收请求

以上范围只是压测起点,最终模型大小和并发数由业务质量门槛、上下文长度和目标 SLO(系统承诺达到的服务目标)决定。


四、并发不是一个数字,而是四层负载

用户请求
  → 入口并发(鉴权、限流、排队)
  → 检索并发(解析、Embedding、向量/BM25、Rerank)
  → 生成并发(活动序列、连续批处理、KV Cache)
  → 后台并发(文档导入、重建索引、备份、评测)

1. 先定义四个指标

指标 含义 为什么重要
QPS / RPM(每秒 / 每分钟请求量) 单位时间进入多少请求 决定入口压力,但不能单独代表推理压力
TTFT(等到第一个字的时间) 从请求到首个 token 的时间 直接反映排队、Prefill(先读完问题和资料)和检索体验
TPOT / tokens/s(开始回答后的输出速度) 每个后续 token 延迟或生成速度 反映 Decode(逐步生成答案)阶段体验
p95 / p99 总延迟(绝大多数人的最慢体验) 95% / 99% 请求完成需要多久 平均值会掩盖峰值拥堵

估算所需并发槽位可先用 Little's Law:

所需在途并发 ≈ 到达率(请求/秒)× 平均处理时间(秒)

例如平均每秒 0.5 个请求、一次请求平均占用 12 秒,则系统平均约有 6 个在途请求。但“在途”不等于 6 个都必须同时生成,可以让 2~4 个活动生成,其余进入有上限的等待队列。

生活比喻:食堂来了 20 名学生,并不需要马上开 20 个打饭窗口。可以开 4 个窗口稳定服务,其余学生排队;如果队伍太长,就提前告诉后来的人稍后再来。

2. RAG 每层的并发原则

3. 背压(忙不过来就排队)与降级(高级功能失败就用简单方案)规则

一个稳定的本地服务一定会说“现在太忙”,而不是无限堆积直到崩溃。

生活比喻:背压像餐厅取号,降级像招牌菜卖完后改为供应简单套餐,熔断像发现煤气故障后先关闭厨房。它们的目的不是“少服务”,而是避免整个系统一起出事故。

触发条件 推荐动作
活动生成槽位已满 新请求进入有界队列,不直接创建更多推理任务
队列超过长度或等待超时 返回 429 / 503 和 Retry-After,记录拒绝次数
KV Cache 或显存达到高水位 暂停接收长上下文;降到短上下文或小模型路由
Reranker 超时 降级为混合检索排序,并在响应元数据标记降级
向量库不可用 对低风险场景降级到本地 BM25;高风险场景停止回答
生成服务异常 熔断(暂时停止调用故障服务)、健康探测,切换备份实例或返回“稍后重试”

五、工作忙时与闲时:让同一套算力更有效

本地设备不应该全天按同一种负载运行。更有效的方式是把任务分成三个优先级,再用“业务时段 + 实时资源水位”共同调度。

食堂比喻图:忙时优先服务在线用户,闲时利用空余算力执行后台任务
忙时:先保在线问答排队、限流,后台任务暂缓
闲时:让空余算力干活批量入库、重建索引、评测和备份
把本地算力想成学校食堂:饭点先服务排队的同学,夜间再备菜、盘点和清洁。
优先级 任务 忙时策略 闲时策略
P0 在线交互 用户问答、检索、权限校验、流式生成 保证 TTFT 和 p95;预留推理槽位;必要时拒绝低优先级请求 正常服务,允许更长上下文或高质量模型
P1 近线任务 报告生成、批量摘要、评测、低优先级 Agent 限制并发、缩短上下文、进入队列或暂停 提高批量与并发,利用连续批处理吃满设备
P2 后台任务 文档解析、Embedding、索引重建、压缩、备份 可抢占、可断点;只使用剩余资源 全速执行,完成索引优化、快照和质量回归

忙时:优先稳定响应

闲时:把空闲算力转换成可复用资产

不只看时间,还要看实时水位

进入忙时保护:
  在线队列最老等待 > 2s
  OR TTFT p95 连续 3 个窗口超标
  OR KV / VRAM > 80%
  OR 在线活动槽位使用率 > 75%

退出忙时保护:
  以上指标连续 10~15 分钟回落
  AND 无高优先级积压

阈值只是课堂起点,必须用目标设备压测校准。进入和退出条件要采用不同阈值与稳定窗口,避免任务在忙 / 闲模式之间反复抖动。

可抢占后台任务必须满足四个条件

  1. 小批次:每批文档或 Chunk 能在短时间内完成。
  2. 有检查点:记录 doc_id、版本、最后完成批次与索引目标。
  3. 幂等:同一批次重跑不会产生重复向量或破坏线上索引。
  4. 可取消:在线高水位出现时,能在当前小批结束后释放 GPU、CPU 和内存。

忙闲资源配额参考

资源 忙时 闲时 说明
LLM 在线推理 60%~80% 20%~60% 忙时为交互保留,闲时可借给评测和批量生成
Embedding / Rerank 10%~25% 40%~80% 忙时小批低延迟,闲时大批高吞吐
文档解析 / OCR 0%~15% 50%~90% CPU 在线拥堵时可完全暂停
索引构建 / 优化 仅增量 使用剩余 IOPS 全量重建必须走影子索引
内存 / 显存余量 至少 20% 至少 10%~15% 闲时也必须为突发请求和运行时波动留空间

百分比表示容量规划目标,不是所有设备都能严格切分。macOS 统一内存应重点观察系统 memory pressure 与 swap;独立 GPU 应同时观察显存、KV Cache、功耗和温度。

生活比喻:忙时像学校午餐时间,厨房优先出餐,不安排大扫除;闲时像放学以后,再集中清洗设备、盘点仓库和准备第二天的食材。算力也应该把重任务安排到空闲时间。


六、当前向量化、归档与可本地化模型参考

更新日期:2026-07-22。 模型版本、推理框架兼容性和许可条款会变化,部署前必须复核官方模型卡,并用自己的中文业务评测集比较。

1. 向量化 / Embedding 模型

模型 规模与上下文 向量维度 中文与能力特点 本地设备起点 推荐场景与注意点
Qwen/Qwen3-Embedding-0.6B 0.6B;32K 32~1024,支持 MRL(可缩短向量长度) 100+ 语言、长文本、代码、指令感知 16 GB RAM / 统一内存可作为测试起点;GPU 更适合批量 当前中文本地 RAG 的优先候选;先用 512 / 768 / 1024 维做质量与存储对照
Qwen/Qwen3-Embedding-4B 4B;32K 最高 2560,支持 MRL 更高质量档,支持任务指令 建议 32 GB+ 或独立 GPU,从低并发开始 高价值知识库、代码与跨语言检索;不要只因维度高就直接全量使用
Qwen/Qwen3-Embedding-8B 8B;32K 最高 4096,支持 MRL 系列质量优先档 建议服务器 GPU 或 64 GB 级设备评测 适合质量收益能够覆盖成本的项目;向量体积和重建时间显著增加
BAAI/bge-m3 约 0.6B;8192 1024 多语言;统一 Dense、Sparse、ColBERT 多向量能力 16 GB 级设备可测试,批量生产优先 GPU 需要一套模型同时实验稠密、稀疏与多向量检索时很实用
Alibaba-NLP/gte-multilingual-base 305M;8192 128~768 70+ 语言;Encoder-only;支持弹性 Dense 与 Sparse CPU / 16 GB 设备的轻量候选 资源有限、需要较高 Embedding 吞吐时优先对照;使用自定义代码前做安全审查

维度怎么选

2. Reranker 模型

模型 规模与上下文 本地化特点 推荐用法
Qwen/Qwen3-Reranker-0.6B 0.6B;32K;100+ 语言 Apache-2.0;可本地部署;支持任务指令 中文 / 代码 / 长文本优先候选;先将混合检索 Top-20~50 重排到 Top-5~10
Qwen/Qwen3-Reranker-4B/8B 4B / 8B;32K 质量档更高,计算和显存成本明显增加 只用于高价值或困难查询,忙时可路由回 0.6B
BAAI/bge-reranker-v2-m3 约 0.6B;最长约 8192 Apache-2.0;多语言;成熟轻量 资源有限或已有 BGE-M3 管线时的稳健候选

Reranker(重新排序模型)不负责生成向量归档,而是对“查询—候选文档对”直接打相关性分。它通常比继续扩大向量 top_k(多取更多条)更有效,但候选数会直接影响耗时,因此很适合忙闲动态路由。

3. 可本地化生成模型

模型 规模 / 上下文 本地格式与授权 设备起点(Q4 仅作估算起点) 适合角色
Qwen/Qwen3-4B 4B;原生 32K Apache-2.0;可用 GGUF 等本地格式 16 GB 设备先测 1~2 活动槽位 忙时默认问答、摘要、轻量 Agent
Qwen/Qwen3-8B 8.2B;原生 32K Apache-2.0;官方有 GGUF / FP8 等版本 16~32 GB 设备从 Q4、短上下文、单并发开始 中文 RAG 主模型;质量与本地成本较平衡
Qwen/Qwen3-14B 14.8B;原生 32K Apache-2.0;支持本地推理框架 32~64 GB 或服务器 GPU 起步 闲时高质量报告、复杂推理和重要任务升级路由
openbmb/MiniCPM4-8B 8B;面向端侧效率 Apache-2.0;官方提供 GGUF、vLLM / SGLang 路径 16~32 GB 设备做 GGUF Q4 实测 中文端侧与高效率备选,适合与 Qwen3-8B 对照
google/gemma-3-4b-it 4B;128K;多模态 可本地运行,但需接受并复核 Gemma 使用条款 16 GB 设备从短上下文开始 需要图文输入、多语言和轻量生成时对照;中文专项必须实测

设备起点不是保证值。实际占用由量化格式、上下文、KV 类型、batch、并发和推理框架共同决定;即使模型支持 32K / 128K,也不代表本地生产应默认开放最大上下文。

4. 向量归档不是只保存向量

层级 保存内容 存储位置 何时使用 恢复方式
热数据 当前原文、Chunk、向量、Sparse、payload(跟随资料保存的附加信息)、ACL(访问权限名单) 在线向量库 SSD / 内存缓存 日常在线检索 直接查询,保持副本与快照
温数据 上一版本 collection、量化向量、索引快照、评测结果 本地大盘 / NAS / 对象存储 回滚、低频历史查询 恢复快照或临时挂载只读实例
冷数据 原始文件、解析结果、Chunk 清单、内容 hash、模型与指令版本 版本化对象存储 + 离线 / 异地备份 审计、灾备、重新建库 重新解析或从中间产物重建向量

必须归档的版本字段:

embedding_model:
model_revision:
embedding_dimension:
normalize_embeddings:
query_instruction_version:
chunker_version:
corpus_version:
vector_quantization:
collection_or_alias:
created_at:
content_hash:

原则:原文、结构化 Chunk 和版本配置是主资产;向量与 HNSW 等索引是可重建派生物(可以根据原文重新制作的内容)。只备份向量、不备份原文和模型版本,不能算可恢复的归档。

生活比喻:原文像课本原件,Chunk 和向量像你做的目录卡与索引。目录卡丢了还能根据课本重做;如果只留下目录卡、把课本丢了,就无法真正恢复知识库。

5. 一套适合课程演示的默认组合

档位 Embedding Reranker 生成模型 适用设备与策略
轻量个人版 gte-multilingual-base 或 Qwen3-Embedding-0.6B 可先不启用 / bge-reranker-v2-m3 Qwen3-4B Q4 16 GB;生成并发 1;归档放闲时
中文质量平衡版 Qwen3-Embedding-0.6B 768 / 1024 维 Qwen3-Reranker-0.6B Qwen3-8B Q4 / Q5 32 GB 或单 GPU;忙时小模型路由,闲时批量重排评测
部门生产版 Qwen3-Embedding-0.6B/4B 对照后定型 0.6B 默认,4B 只处理困难查询 Qwen3-8B 主池 + Qwen3-14B 高质量池 服务池分离;在线和归档队列隔离;影子索引切换

七、普通用户场景:从批量文档到知识库的完整 AI 工作流程

真实业务通常不是“准备好一份干净 Markdown”,而是一次丢入多个 PDF、Word、扫描件和历史版本。学员需要理解:文件进入系统后,不是立刻“喂给大模型”,而是经过一条可检查、可评测、可回退的工程链路。

批量文档经过识别、分类、人工确认、建立索引后进入知识库并用于回答
① 接收文件PDF、Word、扫描件
② 扫描识别安全检查、OCR、解析版面
③ 建议分类AI 推荐标签和知识库
④ 人工确认检查低把握和敏感资料
⑤ 建立索引做成可以快速查找的目录
⑥ 检索回答带着证据回答真实问题
像整理学校图书室:先收书、检查、分类,再由老师确认,最后上架供大家查询。
批量拖入文件
  → 安全扫描 / OCR / 版面解析
  → AI 建议分类、标签、知识库和权限
  → 人工确认低置信度与敏感资料
  → Chunk 预览与解析质量抽查
  → 构建影子索引
  → 用真实问题做 A/B 召回实验
  → 反馈相关 / 不相关
  → 达到门槛后切换生产 alias

1. 六个必须理解的处理阶段

阶段 AI / 系统做什么 人负责什么 必须阻止什么
1. 文件接收 登记文件、去重、病毒扫描、识别格式和语言 确认资料来源、所有者和允许用途 加密、损坏、恶意或来源不明文件直接进入知识库
2. 分类与权限 建议分类、标签、目标知识库、ACL(谁可以查看)、保留期限和置信度 确认低置信度、敏感资料、跨部门资料和历史版本 AI 单独决定财务、人事、合同等资料权限
3. 解析与清洗 PDF / DOCX 解析、OCR、表格恢复、页眉页脚清理 抽查原文与解析结果,处理乱码、漏页和表格错位 解析质量未通过就继续向量化
4. Chunk 与向量化 按结构切块、补元数据、生成 Dense / Sparse 向量 选择拆分规则,检查标题路径、页码和上下文是否保留 新旧模型、维度或 Chunk 版本混入同一向量空间
5. 检索与生成 ACL 过滤、召回、融合、Rerank、上下文装配、生成与引用 用真实问题判断证据是否正确,确认高风险回答 只看最终答案、不检查原始召回证据
6. 评测与发布 比较基线和候选、构建影子索引、记录版本和指标 决定发布、继续优化或回滚 未通过质量、权限和恢复测试就覆盖生产索引

2. 分类不是让 AI 自己决定

推荐使用“建议 + 置信度 + 人工确认”:

3. 召回优化必须做 A/B 对照

固定:同一批文档 + 同一组问题 + 同一权限身份
改变:每轮只改一个变量
比较:Recall@K(有没有漏掉正确资料)、MRR/nDCG(正确资料排得够不够靠前)、p95(大多数人的最慢体验)、Top-K 证据、最终回答
决定:保存为候选 / 设为新基线 / 放弃并记录原因

评测中每条召回结果都应记录“相关 / 不相关 / 应排更高 / 权限错误 / 版本过期”。反馈不能只变成主观评价,而要形成带 query_id、chunk_id、配置版本和评测人的测试记录。

4. 一次问答背后的完整 AI 协作链

| 工作层 | 典型输入 | 典型输出 | 失败时先查什么 | | --- | --- | | 资料层 | PDF、Word、扫描件、Markdown | 可追溯原文、解析文本、文档元数据 | 来源、版本、权限、OCR / 解析质量 | | 检索层 | 用户问题、身份、过滤条件 | Top-K Chunk、相关分数、来源和版本 | ACL、Chunk、Embedding、Sparse、融合与 Rerank | | 生成层 | 问题与检索上下文 | 带引用的回答、拒答或人工确认请求 | 上下文是否正确、提示词、生成模型与引用验证 | | 评测层 | 问题集、相关文档、预期行为 | Recall@K、MRR、Groundedness(回答是否真的有资料依据)、坏例清单 | 测试集是否覆盖真实问题和风险场景 | | 运维层 | 日志、指标、版本、快照 | 更新、告警、回滚、容量和审计记录 | 队列、资源水位、索引健康、模型版本和恢复流程 |

5. 学员应该记住的完整闭环

业务资料进入
  → AI 辅助分类与解析
  → 人确认知识边界和权限
  → 系统切块、向量化并建立索引
  → 用户问题触发检索、重排和生成
  → 人用真实问题反馈召回质量
  → 系统形成评测集并优化参数
  → 候选索引通过验收后发布
  → 持续监控、增量更新和必要时回滚

这条链路的核心不是“让 AI 自动做完”,而是让 AI 负责高频处理,让人负责资料边界、权限、坏例判断和发布决策。

生活比喻:AI 像认真但经验不足的图书助理,擅长搬书、分类和初步查找;人像负责老师,决定哪些书能公开、判断资料是否正确,并在正式发布前签字。


八、单机方案:一台设备也要避免进程级单点

推荐结构

客户端
  → API Gateway(鉴权、限流、请求 ID)
  → 有界任务队列
  → RAG Orchestrator
       ├─ Embedding 微批处理器
       ├─ 本地向量库 + BM25
       ├─ Reranker(可降级)
       └─ LLM Server(连续批处理 / slots)
  → 日志、指标、追踪

文档原件 → 解析队列 → 影子索引 → 验收 → 索引别名切换

单机最小实现方案

  1. 进程隔离:入口、RAG 编排、模型服务、向量库分进程运行;一个组件崩溃不应把全部数据带走。
  2. 固定资源配额:推理服务固定活动槽位;Embedding 与索引任务设置线程上限。
  3. 有界队列:明确最大等待数和最大等待时长。
  4. 健康检查:分别检测进程存活、模型是否可推理、向量库是否可查询。
  5. 自动拉起:macOS 可用 launchd,Linux 可用 systemd 或 Docker restart policy。
  6. 数据可恢复:原始文档、索引配置、Embedding 模型版本、Chunk 版本和评测集独立备份;向量索引可重建。
  7. 降级路径:Rerank → Hybrid → BM25 → 明确停止,按业务风险配置。

llama.cpp 单机起步示例

llama-server \
  -m /models/model-Q4_K_M.gguf \
  -c 8192 \
  -np 2 \
  --host 127.0.0.1 \
  --port 8080 \
  --metrics

-np 2 只应作为两个并行 slots 的压测起点。上下文总预算、模型结构和版本参数应以当前 llama-server --help 为准。先测 np=1,再逐级增加,并记录 TTFT、单用户 tokens/s、总吞吐和峰值内存。

生活比喻:增加 slots 就像增加服务窗口。窗口太少会排长队;窗口太多又会让工作人员争抢同一间厨房。最合适的数量不是越多越好,而是要通过高峰测试找到。


九、企业级方案:本地化模型的并发与去单点

企业级本地 RAG:双入口、双网关、有界队列、服务池、模型池和双份数据
① 双入口一个入口故障还能走另一个
② 双网关鉴权、限流不靠一个进程
③ 有界队列人多时排队,不无限挤入
④ 服务池检索、重排、生成分工协作
⑤ 模型池一台故障时把请求转给别台
⑥ 双份数据索引可切换,原文可恢复
像连锁图书馆:入口、服务台、工作人员和资料库都有替补,坏掉一个点不会让全馆停摆。

目标架构

                    ┌─ 身份认证 / 租户配额
用户 → 双入口 LB/WAF ├─ API Gateway × 2+
                    └─ 请求队列 / 优先级 / 熔断
                              │
                 RAG Orchestrator × 2+
                    ├─ Embedding 服务池
                    ├─ Rerank 服务池
                    ├─ LLM 推理池(小/中/大模型路由)
                    └─ Prompt / Response Cache
                              │
      ┌───────────────────────┴───────────────────────┐
  向量数据库集群        元数据数据库主从/集群       对象存储/文档原件
  分片 + 副本 + LB        版本、权限、审计            版本化 + 异地备份
      └───────────────────────┬───────────────────────┘
          Metrics + Logs + Traces + Alert + Audit

各层去单点清单

层 企业级做法 不能只做什么
入口 至少两个网关副本,负载均衡与健康探测 只给单台推理机绑一个固定 IP
编排 无状态副本;会话与任务状态放外部存储 把会话只放某进程内存
推理 按模型建独立池;至少两个可用副本;滚动 / 金丝雀发布 一套大模型承担所有任务且无备用
队列 高可用消息队列或可恢复任务表;幂等键和死信队列 请求失败后无限自动重试
向量库 分片 + 副本,所有节点前放负载均衡;定期快照演练 有副本但所有流量仍进入一个节点
文档原件 对象存储版本化、校验和、异地或离线备份 只备份不可解释的向量索引
配置与密钥 集中密钥管理、最小权限、轮换与审计 把密钥写进镜像或课程代码
监控 指标、日志、Trace 统一关联 request ID 只看 GPU 利用率

生活比喻:企业级部署像连锁图书馆。负载均衡负责把读者分到不同分馆,副本保证某个分馆关门时还有书可看,分片把大量图书分开存放,监控则像总馆的值班大屏。

推理池的三种并发扩展方式

方式 解决什么 适用条件 注意点
单实例连续批处理 同一模型服务更多并发序列 单 GPU 已能容纳模型与 KV 优先调好批处理,再决定是否复制实例
模型并行(Tensor / Pipeline Parallel) 一个模型放不进单卡 多 GPU、互联带宽足够 它解决“模型装不下”,不自动等于高并发
数据并行 / 多副本 横向增加请求吞吐和容错 单副本可独立服务,请求可路由 需要负载均衡、健康探测、模型版本一致性

自动扩缩容不要只看 GPU 利用率

适合进入扩缩容决策的指标包括:

Kubernetes HPA 可使用 CPU、内存或自定义指标扩展无状态服务;LLM 实例启动和模型加载通常较慢,应配置预热、最小副本数、缩容稳定窗口和就绪探针,避免流量过早打到尚未加载完模型的 Pod。


十、从个人版到企业版的四阶段实现

阶段 用户量与目标 推荐实现 通过门槛
P0:离线个人版 1 人,资料不出设备 llama.cpp / 本地推理 + 本地向量库 + CLI / Web UI 50 道业务题质量达标;无并发也不崩溃
P1:单机服务版 2~10 人,低并发 API 网关 + 有界队列 + 2~4 活动 slots + 监控 + 自动拉起 峰值压测 30 分钟,无 OOM;p95 与拒绝策略达标
P2:部门高可用版 10~100 人,业务时段使用 双网关、双编排副本、推理池、向量副本、集中日志 任意一个无状态实例下线仍能服务;恢复目标演练通过
P3:企业多租户版 多部门、分级权限与审计 K8s / 调度平台、模型路由、租户配额、分片副本、灾备 容量、隔离、安全、审计、RPO / RTO 与 SLO 全部验收

不要从 P0 直接跳到 P3。先让业务测试集、容量模型和故障演练在小规模成立,再扩展基础设施。


十一、压测与验收:怎样找到“安全并发上限”

固定测试矩阵

每轮只改变一个变量:

必记指标

类别 指标
质量 Answer pass rate、Groundedness、Citation correctness、Recall@K、MRR / nDCG
体验 TTFT p50 / p95、TPOT、总延迟 p95 / p99、流式中断率
吞吐 请求/分钟、输入 token/s、输出 token/s、Embedding 条目/s
资源 RAM / VRAM 峰值、KV Cache 使用率、CPU / GPU 利用率、磁盘 IOPS
稳定性 OOM、超时、429 / 503、队列最老等待时间、错误重试次数

示例验收线(需改成自己的业务目标)

quality:
  answer_pass_rate: ">= 90%"
  retrieval_recall_at_10: ">= baseline - 2pp"
performance:
  ttft_p95: "<= 3s"
  total_latency_p95: "<= 20s"
stability:
  error_rate: "< 1%"
  oom: 0
  sustained_test: "30min"
capacity:
  max_active_generation: 4
  max_queue: 20
  queue_timeout: "15s"

安全并发上限应取以下条件中最先触发的那个:质量跌破门槛、TTFT / p95 超标、单用户生成速度不可接受、内存越过高水位、或错误率升高。生产配置再从该上限保留 20%~30% 余量。


十二、故障演练与企业验收题

上线前至少演练:

  1. 关闭一个推理副本,进行中的请求怎样失败,下一次请求是否自动转移。
  2. 关闭一个向量节点,检索是否仍可用,延迟增加多少。
  3. Reranker 超时,是否按规则降级且可在日志中追踪。
  4. 队列满时,系统是否快速拒绝并返回可理解的重试提示。
  5. 新模型质量不合格,是否能在分钟级回滚到旧版本。
  6. 索引构建失败,线上旧索引是否不受影响。
  7. 删除向量索引后,能否由原始文档、版本化配置和 Embedding 模型重建。
  8. 一个租户达到配额,是否不会拖慢其他租户。

必须写清的 RPO / RTO

RPO / RTO 不是技术团队单方面决定,应由业务风险、合规要求和成本共同确定。

生活比喻:如果游戏每 15 分钟自动存档一次,机器坏掉时最多损失 15 分钟进度,这接近 RPO;从故障发生到重新打开游戏用了 30 分钟,这接近 RTO。


十三、课堂作业:交付一页容量与架构决策

请填写:

# 本地 RAG 容量与并发决策

- 业务场景:
- 使用人数 / 峰值请求:
- 设备:CPU / GPU / RAM / VRAM:
- 生成模型与量化:
- Embedding / Reranker 与量化:
- 向量数据库与向量量化:
- 最大输入 / 输出 token:
- 活动生成槽位 / 等待队列:
- TTFT p95 / 总延迟 p95 目标:
- 质量门槛:
- 降级顺序:
- 单点清单与消除方案:
- 备份、RPO、RTO:
- 压测结果与最终安全并发:

十四、实施检查清单


十五、官方参考资料

以下链接用于课后核对当前版本参数,部署前应再次阅读目标版本文档:

版本提醒:量化内核、硬件兼容性和服务参数更新较快。本课给出的是决策方法和架构边界,命令行参数必须以部署当天使用版本的官方文档和 --help 输出为准。