从传统搜索到智能问答:自研 RAG 系统的技术实践与工程落地
一、引言
在数字化转型浪潮下,企业知识服务体系正经历着深刻变革。如何让用户高效获取所需信息,成为提升产品竞争力和用户满意度的关键。葡萄城作为企业级开发工具与解决方案提供商,长期致力于知识服务体系的建设。本文将系统介绍葡萄城自研 RAG(Retrieval-Augmented Generation,检索增强生成)智能问答系统的技术创新、架构设计与工程实践,分享我们在智能搜索与问答领域的探索与思考。
二、项目缘起:从搜索到智能问答的需求升级
1. 现状与挑战
葡萄城已建立了完善的知识服务体系,包括标准化文档、技术社区、搜索平台等。现有“葡萄城搜索中心”支持跨平台内容检索,覆盖官网、博客、社区、视频等多种内容源。然而,随着知识库规模的扩大和用户需求的提升,传统基于关键词的搜索方式暴露出诸多不足:
- 用户难以精准定位帮助文档中的功能说明;
- 技术支持人员难以快速查重和定位历史解决方案;
- 方案搜寻效率低,用户体验不佳。
2. 技术探索与自研动因
随着大语言模型(LLM)技术的快速发展,基于 RAG 的智能问答成为提升知识服务能力的理想路径。我们调研了多种开源与商业化 RAG 方案,发现它们难以直接适配葡萄城多源异构的数据结构和业务需求。为此,我们决定自研 RAG 系统,目标包括:
- 适配多样化内容结构(如帮助文档、论坛帖子等);
- 支持高频动态更新,保障知识库时效性;
- 灵活扩展,满足未来产品演进需求;
- 性能与维护可控,便于长期运维。
三、创新点:QA 预生成与“问题对问题”匹配
1. 传统 RAG 的局限
传统 RAG 方案通常将用户问题与文档段落直接匹配,但用户提问多为简洁疑问句,文档内容则为陈述性描述,二者在语义表达上存在结构性差异,导致检索准确率受限。
2. 预生成 QA 对的创新
我们基于大语言模型的信息抽取能力,提出了“问题与问题匹配”的创新思路:
- 利用 LLM 为每段文档生成“预设问题”,将原始文档转化为多个 QA 对(问题+答案);
- 用户问题与预设问题进行语义一致的精准匹配,显著提升检索效果;
- 每个 QA 对还配有详细答案(Full Answer)和上下文摘要(Summary),为后续生成环节提供丰富上下文。
这种方式不仅解决了语义错位问题,还能将一篇文档拆解为多个知识点,极大提升了知识库的颗粒度和检索相关性。
四、产品设计:融合搜索与智能问答的极致体验
1. 界面设计
我们摒弃了传统对话式 AI 助手的设计,转而采用“传统搜索界面 + 智能问答”的混合方案:
- 首页(Home):聚焦搜索,支持产品切换,输入框简洁直观;
- 搜索页(Search):顶部导航+产品切换器+搜索框,智能回答区域采用打字机效果逐字输出,搜索结果分为“全部/帮助文档/求助中心/专题教程”四个选项卡,支持数量提示与禁用。

2. 智能回答与多轮对话
- 智能回答区域支持加载动画、逐字生成、停止生成、复制、追问等操作;
- 支持多轮追问,自动折叠历史内容,保持上下文连贯;
- 回答区提供“有用/没用”反馈,便于后续优化。
3. 搜索结果优化
- 选项卡显示结果数量,无结果时自动禁用;
- 帮助文档类结果支持“展开更多”查看详细答案,无需跳转原文;
- 搜索结果无分页,提升信息获取效率。
五、技术架构:三阶段 RAG 流程与多通道混合检索
1. 架构总览
系统采用典型的三阶段 RAG 架构:
- 构建(ETL):文档采集、QA 对生成、向量化、入库;
- 检索(Retrieval):多通道混合检索(稀疏+稠密),RRF 融合排序;
- 生成(Generation):基于 LLM 和检索结果生成自然语言回答。
2. 知识构建(ETL)
- 支持多源内容采集(帮助文档、论坛、API 文档等);
- 基于 LLM 生成结构化 QA 对,人工抽检保证质量;
- 向量化采用稀疏(BM25)+稠密(Dense Vector)双通道,支持前缀机制区分不同文档场景;
- 每条知识条目包含问题、答案、详细答案、摘要、链接、标题、分类、时间等丰富元数据。
3. 检索机制
- 混合检索策略:BM25(关键词)+ Dense(语义)双通道,分别检索问题和答案字段;
- RRF(Reciprocal Rank Fusion)融合排序,提升相关性与多样性;
- TopK 策略,最终返回最优结果集。
4. 生成机制
- LLM 结合用户问题与检索结果生成自然语言回答,附带文档链接;
- 支持“思考模式”,输出中间推理过程,增强信任感;
- 多轮对话场景下,自动识别用户意图并改写问题,保证上下文连贯。
六、工程落地:高可用、可扩展的系统实践
1. 部署架构
系统分为两大模块:
- 知识检索与问答服务:Qdrant 向量数据库、MySQL 日志与反馈、Server 应用(API)、Client 应用(前端)、第三方 LLM 服务接入;
- 知识库构建服务(ETL):定时任务驱动的文档采集、QA 生成、向量化与入库,支持全量与增量更新。
2. 请求限流与熔断
- 采用移动窗口算法实现多维度限流(接口/时间),防止突发流量冲击;
- 支持熔断与降级机制,保障系统稳定性。
3. 性能与监控
- 检索性能:2 秒内返回结果,支持异步加载;
- 生成性能:依赖 LLM,平均 30 秒内完成;
- 全链路监控:请求成功率、响应时间、LLM 调用、向量库查询等多维度指标。
4. 用户体验优化
- 前端界面简洁直观,支持 Markdown 展示详细答案;
- 多轮对话与上下文记忆,提升连续交互体验;
- 用户反馈机制完善,所有反馈入库用于后续优化。
七、落地效果与未来展望
1. 实际应用成效
- 首批覆盖活字格、Wyn、SpreadJS、GcExcel 四大核心产品,支持帮助文档与技术社区内容;
- 日活用户数、提问频次、热门问题分布等数据持续增长;
- 答案准确率与用户满意度显著提升,系统稳定性良好。
2. 持续优化方向
- 拓展更多内容源(API 文档、视频、插件等);
- 优化检索与生成策略,提升响应速度与准确率;
- 深化用户反馈分析,驱动系统持续迭代;
- 探索模型微调与新功能(如图像复制、链接分享等)。
八、结语
葡萄城自研 RAG 智能问答系统,融合了前沿的自然语言处理技术与工程化最佳实践,实现了从传统搜索到智能问答的跨越。我们相信,随着技术的不断演进和用户需求的持续升级,智能知识服务将在企业数字化转型中发挥越来越重要的作用。欢迎业界开发者交流探讨,共同推动智能问答技术的创新与落地!
葡萄城 AI 搜索地址: https://ai-assist.grapecity.com.cn/
从传统搜索到智能问答:自研 RAG 系统的技术实践与工程落地的更多相关文章
- iPad版微信终于来临了 微信5.4版搜索更智能 转账就是发消息
等待甚久的iPad版微信终于来临了!昨日微信iOS版本更新至5.4.0.16,新增功能包括搜索公众号.识别图中二维码.面对面收钱,同时适配iPad.(微信5.4安卓版重回ios风格 导航菜单都放底栏位 ...
- Android之智能问答机器人
本文主要利用图灵机器人的接口,所做的一个简单的智能问答机器人 实现 由于发送与接收消息都是不同的listView,所以要用有两个listVeiw的布局文件 接收消息布局文件 <?xml vers ...
- springboot+lucene实现公众号关键词回复智能问答
一.场景简介 最近在做公众号关键词回复方面的智能问答相关功能,发现用户输入提问内容和我们运营配置的关键词匹配回复率极低,原因是我们采用的是数据库的Like匹配. 这种模糊匹配首先不是很智能,而且也没有 ...
- 智能问答中的NLU意图识别流程梳理
NLU意图识别的流程说明 基于智能问答的业务流程,所谓的NLU意图识别就是针对已知的训练语料(如语料格式为\((x,y)\)格式的元组列表,其中\(x\)为训练语料,\(y\)为期望输出类别或者称为意 ...
- AI智能问答助手 AI智能批量文章生成器 网站优化SEO批量内容生成工具 原创文章生成软件
<AI智能问答助手> 软件基于当下热门的OpenAI的ChatGPT技术,导入问题列表就可以批量生成对应的内容,内容质量高.原创度高.适合对内容生成需求量大的场景,如网站优化.广告文案 ...
- 全网最详细中英文ChatGPT-GPT-4示例文档-官网推荐的48种最佳应用场景——从0到1快速入门AI智能问答应用场景(附python/node.js/curl命令源代码,小白也能学)
目录 Introduce 简介 setting 设置 Prompt 提示 Sample response 回复样本 API request 接口请求 python接口请求示例 node.js接口请求示 ...
- 从自动化到智能化,网易杭研的AIOps探索与实践
在大数据时代下,我们借助机器学习.数据仓库.大数据平台等大数据技术手段,将运维产生的数据进行分析.处理,得出最佳运维策略,以期实现对故障的事先干预,将风险降低到最低,从而降低运维成本,提升运维效率,最 ...
- 【新品发布】智能驾驶实车测试系统-VDAS
智能驾驶技术的迭代研发,需要多种传感器.海量数据.海量场景的支撑.而目前多种传感器Gbit/s级别的数据同步采集.海量数据的快速分析和评估.关键场景的切片和提取,是业界公认的棘手问题. 为了解决上述的 ...
- 基于深度学习的智能PCB板缺陷检测系统(Python+清新界面+数据集)
摘要:智能PCB板缺陷检测系统用于智能检测工业印刷电路板(PCB)常见缺陷,自动化标注.记录和保存缺陷位置和类型,以辅助电路板的质检.本文详细介绍智能PCB板缺陷检测系统,在介绍算法原理的同时,给出P ...
- 使用jsonp跨域调用百度js实现搜索框智能提示,并实现鼠标和键盘对弹出框里候选词的操作【附源码】
项目中常常用到搜索,特别是导航类的网站.自己做关键字搜索不太现实,直接调用百度的是最好的选择.使用jquery.ajax的jsonp方法可以异域调用到百度的js并拿到返回值,当然$.getScript ...
随机推荐
- manim边学边做--场景Scene简介
在 Manim 社区版本中,Scene(场景)是构建动画的核心概念之一,它为我们提供了一个结构化的方式来组织和呈现动画内容. 本文将介绍什么是Scene,它在Manim动画中的作用,以及不同类型的Sc ...
- css 保留后端 textarea 中的换行与空格字符
原文链接:https://blog.jijian.link/2020-10-22/css-pre/ 如果后台使用 textarea 输入内容,在前段显示需要保留换行符与空白字符,该如何做? 常规方法 ...
- Vue3 值得注意的新特性
Vue3 值得注意的新特性 Vue3 新特性介绍 片段 组合式 API 单文件组件组合式 API 语法糖 (<script setup>) Teleport Suspense 实验性 SF ...
- ssh WARNING: UNPROTECTED PRIVATE KEY FILE!
前言 在 ssh -i 指定密钥文件 登录时,出现以下报错: Permissions 0644 for 'xxxx' are too open. It is required that your pr ...
- JavaScript的标准库
Object 对象 概述 JavaScript 的所有其他对象都继承自Object对象,即那些对象都是Object的实例. Object对象的原生方法分成两类:Object本身的方法与Object的实 ...
- Pydantic多态模型:用鉴别器构建类型安全的API接口
title: Pydantic多态模型:用鉴别器构建类型安全的API接口 date: 2025/3/20 updated: 2025/3/20 author: cmdragon excerpt: Py ...
- 生产环境swarm集群规划和管理
swarm集群角色 swarm集群中有两种角色,manager node和 worker ndoe. manager的功能: 维护集群状态 任务调度 为swarm集群提供HTTP API 可以创建只有 ...
- Effective Java理解笔记系列-第2条-何时考虑用构建器?
为什么写这系列博客? 在阅读<Effective Java>这本书时,我发现有许多地方需要仔细认真地慢慢阅读并且在必要时查阅相关资料才能彻底搞懂,相信有些读者在阅读此书时也有类似感受:同时 ...
- 集合的通用遍历方法--java进阶day09
1.集合的三种通用遍历方法 之前我们学习过集合的遍历方法,为什么这里还要再学呢? 这是因为,之前我们用的遍历方法使用了索引,但我们知道set接口的实现类的集合均无索引,所以我们要学习通用的遍历方法 2 ...
- MySQL 修复损坏表
修复MySQL损坏表的简单步骤,不一定适用任意情况下的表损坏的问题,留爪. 简单3步曲: # 用`root`用户登录MySQL # 这里可能需要输入密码 mysql -uroot -p # 使用指定数 ...