789445 发表于 2025-2-7 00:33:47

RAG实践

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

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

[*]文档中心的文档 https://finclip.com/mop/document/
[*]在社区交付过程中,交付整理的问题 QA
[*]售前和销售在和客户阐述方案的时候,腾讯会议纪要
在构建知识库的时候,希望的采用的是「自动化数据集」为主 & 「手动数据集」为辅的策略。将文档中心 & 腾讯会议纪要两部分打通自动化设置数据集的流程,剩余的交付整理的 QA 文档作为手动数据集为补充。
实现效果

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

整体架构设计


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

[*]文档中心Gitlab仓库:基于 Gitlab 管理所有技术文档

[*]CI Pipeline:在文档中心的文档负责文档更新的自动化处理流程

[*]LLM Service:大语言模型服务层,负责文档理解和问答生成,此处会针对源文档进行一次 QA 的拆分
[*]FastGPT:向量数据库和知识检索服务
[*]用户交互层:提供统一的问答接口
这种设计带来几个明显优势:

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

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

[*]文档变更触发:通过 Gitlab CI 监听文档更新
[*]自动化处理:CI Pipeline 自动执行以下步骤:

[*]检测文档增量更新
[*]提取文档内容
[*]进行 QA 拆分,生成问答对
[*]推送到知识库

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

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


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

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

[*]使用 embedding 模型将文本转换为向量
[*]通过 ReRank 优化搜索结果相关性
[*]动态调整检索阈值,平衡召回率和精确度
最终的流程图如下

AI 问答实现

问答系统的核心流程:

[*]知识检索:

[*]用户提问向量化
[*]在知识库中检索相关内容
[*]通过 Rerank 筛选最相关片段

[*]答案生成:

[*]将检索内容作为上下文
[*]通过 LLM 生成自然、准确的回答
[*]添加引用来源,提升可信度

[*]质量保证:

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

页: [1]
查看完整版本: RAG实践