RAG实践 - AI 知识库问答功能的建设

最近在工作中构建了一套自动的基于文档中心为数据集构建知识库 AI 问答的系统,来提升用户体验和技术支持效率,分享一下在实现过程中的技术选型和架构设计。

背景

先说下背景,我们公司的产品 FinClip 是做小程序全套解决方案的,因为产品属性的原因,接入的过程中主要是面向开发者的,会有很多的开发相关的问题。我们有一个文档中心 https://finclip.com/mop/document/ ,里面几乎存储了我们大部分的面向客户开发的文档。

所以在构建知识库问答的时候,我们有以下的数据源

  1. 文档中心的文档 https://finclip.com/mop/document/
  2. 在社区交付过程中,交付整理的问题 QA
  3. 售前和销售在和客户阐述方案的时候,腾讯会议纪要

在构建知识库的时候,希望的采用的是「自动化数据集」为主 & 「手动数据集」为辅的策略。将文档中心 & 腾讯会议纪要两部分打通自动化设置数据集的流程,剩余的交付整理的 QA 文档作为手动数据集为补充。

实现效果

实现效果侧还是还对比较简单,对于用户而言在我们的管理后台实现了一个聊天框,能够回答整个系统内的基本所有的问题,只要数据集有涉及到的

整体架构设计

整个基于 RAG 实现的AI 问答的链路,主要包含以下几个核心部分:

  • 文档中心Gitlab仓库 :基于 Gitlab 管理所有技术文档
    • CI Pipeline:在文档中心的文档负责文档更新的自动化处理流程
  • LLM Service:大语言模型服务层,负责文档理解和问答生成,此处会针对源文档进行一次 QA 的拆分
  • FastGPT:向量数据库和知识检索服务
  • 用户交互层:提供统一的问答接口

这种设计带来几个明显优势:

  1. 文档更新自动化,确保知识库实时性
  2. 服务解耦,便于独立扩展和维护
  3. 分层处理提升系统可靠性

文档处理流程

文档处理是整个系统的基础,我们的处理流程如下:

  1. 文档变更触发:通过 Gitlab CI 监听文档更新
  2. 自动化处理 :CI Pipeline 自动执行以下步骤:
    • 检测文档增量更新
    • 提取文档内容
    • 进行 QA 拆分,生成问答对
    • 推送到知识库

这个流程确保了知识库能够及时反映最新的文档内容,无需人工干预。

知识库技术选型

在知识库方案选型时,我们主要对比了 FastGPT 和 RAGFlow:

FastGPT 的优势:

  • 开箱即用的向量检索能力
  • 良好的社区支持
  • 简单的部署维护
  • 内置的文本分块策略

Embedding 和 Rerank

我们的向量检索策略采用:

  1. 使用 embedding 模型将文本转换为向量
  2. 通过 ReRank 优化搜索结果相关性
  3. 动态调整检索阈值,平衡召回率和精确度

最终的流程图如下

AI 问答实现

问答系统的核心流程:

  1. 知识检索

    • 用户提问向量化
    • 在知识库中检索相关内容
    • 通过 Rerank 筛选最相关片段
  2. 答案生成

    • 将检索内容作为上下文
    • 通过 LLM 生成自然、准确的回答
    • 添加引用来源,提升可信度
  3. 质量保证

    • 答案相关性评分
    • 兜底策略处理
    • 用户反馈收集