☕ 我把本地 RAG 智能客服,做成了一个可观测 AI Support Demo(Streamlit + Chroma + Ollama)

0 阅读4分钟

从最开始的一个 本地知识库问答小 Demo,到现在这个版本,我终于把它升级成了一个:

可检索、可追踪、可调试、可本地部署的 RAG AI Support 工程化 Demo

这次升级我没有继续停留在“能回答问题”这个层面,而是重点补齐了:

  • 检索证据可追踪
  • Chunk 级别可观察
  • Prompt Context 可调试
  • 本地 LLM 完整工作流
  • 产品级 Streamlit UI

它已经不再只是一个课程项目,而是一个我会愿意直接放到 简历首页 / 面试项目一号位 的 AI Engineering Demo。


一、为什么我继续升级这个项目

很多本地 RAG Demo 做到这里就结束了:

  • 文档切分
  • 向量化
  • 检索
  • LLM 回答
  • 页面显示结果

但我越来越觉得:

真正能打的,不是“答出来”,而是“你能不能解释它为什么这么答”。

所以这次我把重点放在了 RAG 可观测性(Observability) 上。

系统不仅要给答案,还要完整展示:

  • 来源文件
  • 检索到的 Chunk
  • Top-K 命中情况
  • 实际送入 LLM 的上下文

这一层做完之后,整个项目的工程味一下就出来了。

chat-ui-overview.png


二、核心架构:本地 RAG 全链路

这个项目的完整链路非常清晰:

用户问题 → 向量检索 → Chunk 聚合 → Prompt 构建 → 本地 Ollama 推理 → 答案 + 证据返回

相比很多只讲“用了 LangChain”的 Demo,我更关注:

每一步是否可解释、可定位、可调试

核心模块包括:

  • Streamlit Chat UI
  • 文档知识库(TXT)
  • HuggingFace Embedding
  • Chroma Vector DB
  • Ollama 本地推理
  • Retrieval Evidence
  • Debug Context

整个流程我也专门补了系统架构图。

architecture.png


三、这次升级最值钱的部分:Evidence Sources

我认为这次升级最值钱的点,是把:

“RAG 检索到了什么”

真正展示出来了。

现在每次回答后,页面都会显示:

1)Evidence Sources

明确列出命中的知识库文件:

  • faq.txt
  • product_manual.txt
  • menu_recipes.txt

2)Retrieved Chunks

不仅展示来源,还可以展开看每个 Chunk。

这意味着整个系统不再是黑盒。

面试时如果被问:

为什么它回答支持燕麦奶替换?

我可以直接展示:

命中的 FAQ + 产品手册 + 菜单文档

这就是 grounded answer 的工程价值。

retrieval-evidence.png


四、真正拉开差距的:Debug Context 可观测性

如果说 Evidence 是证明:

它查到了什么

那 Debug Context 证明的是:

它到底把什么喂给了 LLM

这一块我专门加了:

Context sent to LLM

直接显示最终 Prompt Context。

包括:

  • Chunk 排序结果
  • Source 文件顺序
  • 实际拼接后的上下文
  • Top-K 命中内容

这个功能对我来说非常关键。

因为真实 AI 工程里,很多问题不是模型能力,而是:

Prompt 输入上下文出了问题

有了这一层,整个项目开始具备真正的:

RAG Debug / Prompt Inspection 工程能力

这个点我认为对 AI 面试特别加分。

debug-context-view.png


五、为什么我坚持做本地 LLM

这次我没有继续走云 API,而是坚持本地:

  • Ollama
  • DeepSeek-R1 8B
  • 本地向量库
  • 本地 UI

原因很简单:

1)完整可复现

面试官可以直接本地跑起来。

2)隐私友好

知识库完全本地,不依赖外部服务。

3)更像真实 AI 产品原型

尤其适合企业内部知识库场景。

4)低成本持续迭代

后续接入 FastAPI、多用户、Docker 都很自然。

这也是为什么我越来越偏向:

AI Product Workflow + AI Platform Engineering

而不只是“调个 API”。


六、这次升级后,我认为它终于进入简历级别

现在这个项目已经不是:

本地问答玩具

而是一个完整的:

Local RAG AI Support Engineering Demo

它能体现我比较完整的 AI 工程能力:

  • Retrieval pipeline
  • Vector DB
  • Embedding
  • Local inference
  • Source grounding
  • Prompt observability
  • Product UI
  • Debug workflow

这套能力和我最近在做的 AI Browser Agent Workflow Platform 正好形成互补:

一个偏 AI 应用检索
一个偏任务平台工程

整个作品集结构会非常完整。


七、下一步准备继续升级什么

下一阶段我准备继续往工程化方向推:

  • FastAPI 后端化
  • 多用户 session
  • Docker 部署
  • PDF / DOC 文档接入
  • Citation confidence score
  • Retrieval metrics dashboard
  • rerank + hybrid search

目标不是继续堆功能,而是让它更像:

真实可落地的 AI SaaS 原型


结尾

我越来越强烈地感受到:

AI 项目真正的分水岭,不是“它能不能回答”,而是“它是否可解释、可调试、可持续演进”。

这次项目一的升级,算是我正式把自己的 RAG 项目,从:

算法 Demo

推进到了:

AI Engineering Demo

下一步继续冲 Platform。😈