< 返回项目列表

/// RAG 智能客服系统

产品手册 PDF 智能客服系统(FastAPI + LangChain + Chroma + 前端聊天 UI)

一、项目概述

本项目围绕“产品手册内容难检索、客服答复不一致、人工成本高”的痛点,构建了一套基于产品手册 PDF 的智能客服系统。系统采用RAG(检索增强生成)方案:用户在前端聊天界面提问后,后端先从向量知识库中检索出与问题最相关的手册片段,再将片段作为参考资料交给大模型生成回答,从而在保证体验的同时显著降低“幻觉回答”。

  • 项目形态:Web 端聊天 UI + FastAPI 后端接口
  • 核心能力:PDF 知识库导入、语义检索、受控生成、流式回复、答案可追溯(来源页码)
  • 适用场景:产品使用说明咨询、功能指引、参数/报错解释、安装部署流程问答等

二、业务痛点与目标

痛点

  • 客服/用户需要在 PDF 手册里手动搜索,效率低、容易漏查
  • 不同客服口径不一致,质量难以稳定
  • 直接使用 LLM 回答会编造信息,可信度不足

目标

  • 将产品手册 PDF 快速构建为可语义检索的知识库
  • 回答必须“有依据”:以检索片段为主,资料不足时明确说明
  • 支持流式输出提升对话体验
  • 架构可扩展:后续支持多份手册、多版本、增量更新、权限过滤

三、技术方案与架构

技术栈

  • 后端:FastAPI
  • RAG 框架:LangChain 1.x(LCEL + Runnable,统一 invoke/stream 调用范式)
  • 文档加载PyPDFLoader(PDF → Document)
  • 向量数据库:Chroma(支持持久化存储与复用)
  • Embedding:文本嵌入模型(将 chunk 向量化)
  • 输出解析StrOutputParser(将模型输出统一为可直接返回的字符串)
  • 前端:聊天 UI(支持增量渲染流式内容)

RAG 标准流程

  • 索引 Indexing:PDF 加载 → 文本切分 → Embedding → 写入 Chroma
  • 检索 Retrieval:问题向量化 → top_k 相似检索 → 得到参考片段
  • 生成 Generation:将参考片段 + 用户问题组成 Prompt → LLM 生成 → 流式返回

项目组织

  • 【agent】 Agent实现和工具
  • 【model】 模型工厂
  • 【rag】 RAG服务和向量存储
  • 【utils】 配置、日志、工具函数
  • 【prompts】 提示词模板
  • 【config】 YAML配置文件
  • 【data】 知识库文件(PDF/TXT)
  • 【tests】 单元测试
  • 【chroma_db】 向量数据库
  • 【logs】 日志文件

四、核心功能实现(项目亮点)

1)产品手册 PDF 知识库构建

  • 使用 PyPDFLoader 将 PDF 抽取为 LangChain Document
  • 为每段文本保留 metadata(如:文件名、页码、章节信息),方便溯源与展示引用
  • 对手册内容进行 chunk 切分(控制 chunk_size 与 overlap),兼顾召回率与上下文完整性
  • 将 chunk 向量化后写入 Chroma,支持持久化目录,避免每次启动重新建库

2)语义检索 + 受控生成(降低幻觉)

  • 用户问题进入后端后先做 embedding,在 Chroma 中召回 top_k 相关片段
  • Prompt 约束回答策略:
    • 必须基于参考资料回答
    • 若资料不足/未覆盖,直接说明“手册未提及”并建议用户提供更多信息
  • 通过“检索片段驱动回答”显著降低编造内容的风险,提升可信度与一致性

3)前端聊天 UI 流式输出

  • 后端基于 LangChain 的 stream() 将模型输出按 token/片段逐步返回
  • 前端聊天 UI 增量渲染内容,实现“打字机效果”,改善等待体验
  • 支持多轮对话的基础交互(提问、回答、加载状态、错误提示等)

4)答案可追溯(工程化可落地)

  • 在回答中可选择性输出“引用来源”(如:手册第 X 页 / 某章节),便于客服复核
  • 为后续升级“点击引用跳转到 PDF 对应页”预留接口与数据结构

五、项目效果

  • 将“人工翻 PDF 查答案”的流程改为“秒级语义检索 + 自动生成”,显著提升响应效率
  • 统一客服答复口径,减少培训成本与重复劳动
  • 基于检索证据生成回答,降低幻觉,提升用户信任度

六、可扩展与复盘

  • Rerank:在向量召回后增加重排序,提高相关性
  • 多手册/多版本:基于 metadata 做过滤检索(产品型号、版本号)
  • 增量更新:手册更新后仅重建变化部分向量
  • 评测体系:构建问题集,对召回质量与最终答案准确率做自动评估
  • 对话记忆:引入 RunnableWithMessageHistory 支持连续追问与上下文承接