导读本文介绍了基于 RAG 的 AI 搜索技术实践。 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 1.5px;line-height: 2em;visibility: visible;">1. 搜索演进思路2. 关键技术落地实践:重点阐述技术点的实际落地方式 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 1.5px;line-height: 2em;">3.总结展望补充说明:安全合规部分会简要提及,因敏感性不纳入 PPT 总结。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;text-align: left;line-height: 1.75em;">分享嘉宾|钟啸林NIO(蔚来汽车)搜推算法负责人 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;text-align: left;line-height: 1.75em;">编辑整理|陈锡杜ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;text-align: left;line-height: 1.75em;">内容校对|郭慧敏ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;text-align: left;line-height: 1.75em;">出品社区|DataFun
01
搜索演进思路
1.搜索三个阶段
(1)第一阶段:被动搜索
(2)第二阶段:半主动搜索
典型形式:对话式交互(如Kimi、DeepSeek等应用)。
核心特点:
提供持续对话界面,支持用户多轮提问与交互(如展示 “其他人还在问” 引导进一步问询)。
结合多模态对话技术,提升用户活跃度(DAU)与体验。
商业模式潜力:通过替代传统搜索实现盈利,目前处于开发阶段。
(3)第三阶段:主动搜索
2.从被动搜索到主动搜索
(1)被动搜索阶段(第一阶段)的局限
仅提供 “是什么” 的检索与总结(如告知用户车辆有 “运动模式”),无法满足用户 “如何做” 的操作需求(如驾驶模式设置步骤)。
(2)向半主动搜索过渡(第二阶段)的改进
(3)主动搜索阶段(第三阶段)的目标
系统预知用户意图,经用户确认后自动执行后续动作(如监测胎压异常时,主动完成报警、推荐服务并联动车载系统处理)。
(4)当前实践的核心问题与解决方案
核心问题:用户需求从 “信息获取” 转向 “任务完成”,传统搜索仅停留在信息层面,缺乏行动闭环。
解决方案:多模态结果整合:结合自然搜索结果(实体检索、相关性检索)、自动化信息卡片(如胎压数值)与RAG智能助手生成内容,统一展示。
交互形态设计:
顶层:RAG生成总结性信息(如驾驶模式功能介绍);
中层:直接展示服务通道(如 “立即设置驾驶模式” 按钮);
底层:列出自然搜索结果(如其他用户常见问题)。
技术实现关键点:大模型训练
样本要求:需超过1万条高质量标注样本(如用户意图-操作路径映射数据),样本质量直接影响大模型微调效果。
当前定位:仍处于从第一阶段向第二阶段过渡状态,需通过持续优化对话交互与任务执行能力,逐步向主动搜索演进。
02
关键技术落地实践
1.意图识别和请求改写/扩充
(1)添加自定义Token (Add Token):多数开源大模型允许添加自定义Token。这对于处理特定领域的词汇至关重要,例如一些行业术语或特有表达(如讲者提到的“驾象”,作为“代驾”的一种更专业的说法),这些词汇通用大模型往往难以准确理解。通过增添专用Token,能确保模型正确把握这些词汇的特定含义,避免歧义。
(2)监督微调(SFT - Supervised Fine-Tuning):进行常规的监督微调训练。
(3)直接偏好优化(DPO - Direct Preference Optimization):SFT在处理许多“疑难案例”(hard cases)时效果有限——这些案例即便是人工也很难明确归类。DPO作为一种类强化学习的训练方法,能让模型在两个选项(A/B)中学会选择相对更优的一个,从而提升模型的泛化能力。
模型训练完成后,便会部署上线,提供一个在线模型接口。除此之外,我们还建立了一套线上实时干预策略。例如,当业务部门新增一个活动或词汇,而模型在训练阶段未曾见过时,该策略能够通过分钟级统计分析用户交互行为(如用户搜索某新词后总是点击某个特定活动链接)来推断用户意图,进而实时校正线上搜索结果。
在性能方面,最初线上模型的接口响应时间为350毫秒。我们认为对于用户查询(Query)这一初始交互而言,此延迟偏高。为此,我们引入了基于Redis的缓存机制:请求首先访问缓存,若命中,则在10毫秒内直接返回结果;若未命中,再调用耗时350毫秒的实时模型接口。
基于缓存的引入,我们曾考虑是否可以利用一个更大、更精确的模型来生成缓存内容,以期获得更快的线上响应和更准的缓存结果。然而,(讲者示意此方案已调整或放弃)我们发现现有的小尺寸模型已能达到很高的准确率(最新的意图识别模型准确率约96%),因此无需采用更大的模型。当前做法是,小模型直接在线上调用,其结果异步存入缓存,这样做也保证了数据的一致性,避免了使用多模型可能导致的结果不一致问题。
关于提示工程(Prompt Design),我们认为其整体设计与定义相对直接。而在DPO训练的样本设计方面,我们会筛选出“疑难案例”,并将其构建为“采纳”(chosen)与“舍弃”(rejected)的样本对,用以指导模型学习正确的偏好。
最终,我们线上服务的平均响应时间(AVG)控制在250毫秒左右,表现已相当迅速。在进行压力测试(包含大量长尾请求)时,响应时间可能会略有增加。
2.多模态向量检索
(1)文本向量检索
我们最初致力于实现文本的向量检索。这项通用的文本向量技术旨在覆盖社区资讯、服务等业务场景下特定话术的召回,以及商品信息的检索。为此,我们进行了数月的数据样本生成与聚合工作。
在选择基础模型(Base Model)方面,初期我们选用了当时中文开源领域表现最佳的BGE 1.5模型。目前,我们正在评估GTE模型的新版本(此版本尚在离线评估,未正式上线)。针对BGE版本,我们选取了最优模型,并在内部的召回率(Hit Rate)测试中验证了其最佳效果后采纳。
样本积累主要通过三种途径:线上疑难案例(case)的挖掘、规则生成以及人工标注。基于这些累积的大量样本,我们进行了模型训练。训练过程中,我们注重样本多样性的调控,确保不同业务类型的样本数量按比例分配。训练方法上,主要采用批量内负采样(in-batch negative sampling)策略,并结合对比学习损失函数(contrastive loss)等方法。训练完成后,模型在各个业务领域的测试集上,召回率基本都能达到95%左右。我们还进行了线上A/B实验,在其他条件一致的情况下,仅替换向量模型,也观察到了显著的指标提升。
(2)文本检索的局限与多模态的需求
尽管文本向量检索模型取得了良好效果,但我们发现仍存在一些问题无法解决:
内容供给的挑战:许多内容(如图文帖子)文字描述极少,甚至只有一张图片,导致文本向量模型因缺乏文本信息而难以召回。
跨模态排序难题:如果单独为图像建立向量模型,会发现图像向量与文本向量因其向量空间不一致,无法直接进行统一排序和度量,难以解决跨模态检索的需求。
用户需求的多样性:用户实际上存在许多多模态的检索需求。
这些因素促使我们研发多模态向量检索技术。
(3)图文多模态向量检索的探索
当前阶段,我们主要聚焦于图文形式的跨模态检索技术。我们测试了多种开源模型,其中BLIP-2模型表现相对突出(尽管业界公认谷歌的某模型效果最佳,但其并未开源)。我们选用了一个表现较好的中文多模态模型版本,并利用我们特有的一些图片数据进行测试,效果显著。该模型效果出色的一个主要原因在于其使用了超过两亿张高质量图文对进行训练,因此在我们的业务场景(如充电桩、放电站等特有图片)中也表现良好。
然而,其在特定相关领域的样本仍然不足。为此,我们正积极汇集公司内部所有的UGC(用户生成内容)、PGC(专业生成内容)及其他图片资源,并通过OCR、以及其他辅助手段生成训练样本,以持续优化我们的领域专用多模态模型。
(4)混合检索策略与系统架构
拥有多模态向量模型后,我们在线上实际应用时,并非单纯依赖向量检索,而是保留了传统的文本检索能力。具体实现上,我们主要依托腾讯云Elasticsearch (ES) 8.x版本的向量搜索平台。
之所以同时保留文本检索和向量检索,是因为我们发现:对于高精度、用户输入已非常具体的查询,传统文本检索的效果往往优于向量检索。我们不希望因为引入向量检索而牺牲这类简单、明确场景下的用户体验。
因此,我们的整体检索流程如下:
多路并行召回:用户的原始查询及经过意图模型扩充后的查询,会同时触发文本检索和向量检索(包括多模态向量)。
结果聚合:召回的多路结果会进行聚合。我们采用优先级队列的方式,优先保证文本检索的结果(以应对高精度查询场景)。
重排序(Re-rank):聚合后的初步结果会经过一个重排序模型进行优化。
知识供给大模型:最终排序后的结果,作为知识输入,提供给我们的大语言模型进行后续的理解和生成。
这构成了从用户请求理解到知识检索阶段的完整链路。
3.大模型技术
(1)基座模型的选型和开发思路
选择合适的大型语言模型是首要步骤。我们的考量因素主要包括:
经过筛选对比(如DeepSeek、Kimi以及公司自研的Nomi等模型的开源版本),我们最终选择了Qwen作为基础模型。
基于Qwen定制化:
所有路径最终都会通过业务指标进行评估。
(2)高质量样本的生成与评估——核心挑战
在大型语言模型训练中,最核心的挑战在于获取高质量的训练样本,而非模型本身(许多优秀模型已开源)。
为解决此问题,我们设计了一个名为“数据生成与评估Agent”的自动化系统:
核心组件:该Agent由两个DeepSeek R1模型构成(经测试,DeepSeek R1在此类任务上效果优于Qwen-7B等其他模型)。
工作流程:
模型A(生成器):接收任务定义和相关输入(如用户查询),生成初始数据样本。
模型B(评估器):对模型A生成的样本进行评估,判断其是否满足任务及样本定义的要求(如专业词汇是否清晰、任务描述是否准确等)。
迭代优化:模型B向模型A提供“自反思”式的反馈,指出需改进之处。模型A根据反馈重新生成样本。此循环持续进行,直至模型B判定样本“可用”(达到预设阈值),或达到最大迭代次数限制(避免无限循环)。一旦可用,系统便输出样本并标记其可用性。
约80%的训练样本通过此Agent批量生成。
其他样本来源:
样本的二次分析与质控:
获取样本后,我们还会利用自研工具进行第二轮分析,主要从以下三方面评估:
数量:是否满足不同模型尺寸的需求(如小模型6000条,大模型1万条),以及各任务类型的样本量是否充足。
多样性:
质量:
最后进行人工抽样检查。通过上述流程,我们能够相对快速地获取大量高质量的训练样本。
(3)大型语言模型的训练
对于使用开源模型的“调用派”,我们的工作重点在于样本的组合与设计,以及训练参数的调优。
样本组合:
Prompt格式探索(以LLaMA-Factory等框架为例):
训练任务与方法:
LoRA (Low-Rank Adaptation):主要用于大尺寸模型,受限于GPU资源(大部分GPU资源需优先保障自动驾驶ADAS研发)。
SFT (Supervised Fine-Tuning):主要用于中小型模型,实践证明SFT能使小模型达到非常好的效果。
DPO (Direct Preference Optimization):用于处理疑难案例和模型校准。
训练参数调整:可调参数不多,主要包括Epochs、Learning Rate等。核心依然是拥有高质量的样本数据。
通过精心的样本准备和恰当的训练策略,即便基于开源模型,也能训练出表现优异的领域专用大模型。
4.数据流转与RAG系统持续优化机制
数据挖掘阶段(补足供给短板):当用户请求进入后,系统会分析当前内容供给中存在的不足之处。通过各类数据挖掘手段,补充缺失的内容供给,以此弥补RAG系统在知识覆盖上的短板。
内容生成后的线上反馈与优化循环:
系统包含线上反馈机制。如果某一生成结果被用户多次标注为“不满意”,系统会自动将其下线,不再展示。
这些被标记为“不满意”的结果将作为负向样本,用于后续离线的DPO(Direct Preference Optimization)训练,以持续优化模型效果。
所有内容在对外展示前,都会经过安全合规审查。
只有符合规范的内容才会被展示,以规避潜在的法律风险。
5.数据时序关系
该系统采用Agent化的架构进行服务,其交互流程如下:
用户请求与意图识别:
信息召回:
Agent调用与结果选择(多Agent协作):
系统会异步调用相关的两个(或多个)Agent。
每个Agent处理后,其返回的初始信息(如首个Token)会表明自身是否成功匹配并处理了该请求(即是否“命中”)。
Agent之间存在优先级(通过优先级队列管理)。系统会首先采纳优先级最高的已命中Agent所生成的结果。
若最高优先级的Agent未命中,则依次检查次级优先级的Agent。
如果所有相关Agent均未能有效命中,系统将返回预设的兜底话术。
流式输出:为提升用户体验(鉴于大模型响应可能较慢),Agent的回复内容采用流式数据的方式逐步返回给用户。
增强信息与服务引导:
这构成了从数据采集、反馈优化到实时Agent交互与服务提供的完整闭环。
03
总结展望
1. RAG落地过程中的核心经验
首先,高质量的参考资料是基础。他指出,如果召回的资料本身杂乱无章,后续的生成结果也难以保证。这意味着传统的搜索数据处理工作,如数据清洗、预处理等,仍然是不可或缺的一环。
其次,大量且优质的训练样本至关重要。样本需要做到“多”与“精”,数量上建议在一万条以上,并且需要均匀分布,有效覆盖各个相关的业务领域。
再次,应采用多Agent并行而非单一全能Agent的策略。试图用一个Agent处理所有任务会极大地增加工程实现的复杂度和交付难度。推荐采用多个专门的Agent并行工作,各自专注于自身领域,例如他们实践中使用的“加电Agent”和“用车Agent”
2.对于大模型技术的未来趋势
一是向多模态技术融合。大模型技术正持续向多模态方向发展与融合,以满足用户日益增长的对多模态交互的需求。
二是大模型应具备自我进化能力。虽然他们已通过用户实时反馈进行小时级DPO训练来间接实现此能力,但认为目前DPO训练对模型整体参数的改进幅度仍然有限,未来需要更强的自进化机制。
三是个性化能力的深化。鉴于不同用户关注点各异,未来需要探索如何将传统的个性化推荐技术与大模型的能力有效融合,提供更贴合用户需求的服务。
|