AI 学习笔记(十一):把本地模型接进知识库与 RAG 工作流(最小实践)

上一篇我们聊了“本地模型 + 云模型”怎么分工协作,这一篇继续 Phase 4,落到很多团队都会问的实操问题:
本地模型怎么真正接进知识库与 RAG,而不是只停留在本机聊天 demo?

很多人做 RAG 卡住,不是因为模型不够强,而是链路不完整:
文档进不来、索引不稳定、检索命中差、回答不可追踪,最后只能退回“全靠大模型记忆”。
这篇给你一套可落地、可迭代的最小实现。

1. 先统一目标:RAG 不是“加个向量库”

在工程里,RAG 的目标不是“让模型看起来更聪明”,而是三件事:

  1. 让回答基于可追溯证据(而不是编出来)
  2. 让知识更新成本可控(文档更新后可快速生效)
  3. 让结果质量可评估(命中率、引用率、失败原因可观测)

如果只做“文档 embedding -> topK -> 拼 prompt”,短期能跑,长期很容易失控。
更稳的做法是从一开始就把数据流和回退策略定义清楚。

2. 一条最小可用链路(先跑通,再优化)

建议先固定成 5 个环节:

  • Ingest:读取文档,提取 metadata(来源、更新时间、权限标签)
  • Chunk:按语义和长度切分,保留段落标题与来源位置信息
  • Index:向量化并写入向量库,同时保存原文引用
  • Retrieve:检索 topK + 可选重排,输出证据片段
  • Answer:模型基于证据回答,并返回引用与置信度

关键点:

  • 不要在 Answer 阶段“自由发挥”过多;明确要求“仅基于检索片段回答”
  • 每次回答必须返回引用 ID,避免后续无法复盘

3. 本地模型接入时,优先解决这 4 个工程问题

3.1 模型角色分工

最稳妥的起步方式:

  • 本地 embedding 模型做向量化
  • 本地或云模型做生成(按任务成本与质量要求切换)

这样可以先把“知识进入索引”稳定下来,再逐步把生成层迁到本地。

3.2 切分策略

比“固定 500 token”更实用的是:

  • 主切分按标题/段落
  • 超长段再按长度切
  • 每块保留 docId + section + offset

没有这些 metadata,检索命中了也很难给出可信引用。

3.3 检索失败回退

常见失败不是模型崩溃,而是“检索不到可用证据”。
建议至少有两级回退:

  1. 降低相似度阈值并扩大 topK
  2. 仍失败时返回“未命中知识库”的明确响应,并提示补充文档

不要在无证据时让模型硬答。

3.4 可观测性

每次请求至少记录:

  • query hash
  • topK 命中文档 ID
  • 相似度分数
  • 最终引用片段
  • token 用量与耗时

没有这组日志,你很难判断是“索引问题、检索问题,还是生成问题”。

4. 一个最小接口契约(便于后续替换模型)

1
2
3
4
5
6
7
8
9
10
11
12
13
interface RagRequest {
question: string;
scope?: string[];
topK?: number;
allowCloudFallback?: boolean;
}

interface RagResponse {
answer: string;
citations: Array<{ docId: string; chunkId: string; score: number }>;
confidence: 'low' | 'medium' | 'high';
lane: 'local' | 'cloud';
}

这层契约稳定后,你可以自由替换:

  • embedding 提供方
  • 向量库实现
  • 本地/云推理模型

业务侧不需要跟着频繁改动。

5. 推荐的落地顺序

  1. 先接 1 类高价值文档(如内部技术规范)
  2. 先做只读问答,不做自动写入与自动执行
  3. 用真实问题集评估“命中率 + 引用准确率”
  4. 再逐步扩展文档范围和自动化程度

这比一开始追求“全量知识库 + 全自动 Agent”更稳,也更容易拿到可复用结果。

总结

把本地模型接入知识库与 RAG,核心不在“模型名字”,而在链路治理

  • 数据怎么进来
  • 检索怎么命中
  • 回答怎么引用
  • 失败怎么回退
  • 过程怎么观测

先做最小闭环,再做能力增强。这样你得到的不是一个 demo,而是一条可长期维护的 AI 工程链路。

参考资料

本文永久链接: https://www.mulianju.com/learning-notes/ai-learning-notes-local-model-knowledge-base-rag-workflow-practice/