基于大模型搭建运力业务的“小红书”
一、背景·问题
先聊聊几个核心痛点,这些其实是推动我们做运力小智的直接原因。
- (运营管理人员)日常工作涉及知识信息包括业务最新SOP、发文、操作手册等,获取渠道比较分散,大多靠线下传递(发邮件、咚咚分享)。目前运力业务的各种SOP和操作手册文档上千个,累计文字过百万,缺乏统一查询入口,想找到某个信息要花不少时间,体验差、效率低。
职能人员
- 遇到常见系统问题时,主要咨询值班小秘或对接的系统人员。很多共性问题需要重复解答,面对不同用户的高频问题要反复沟通,咨询量大的时候响应不及时,沟通成本很高。
一线作业人员
- 核心关注的报表数据缺少统一的查询工具入口。目前有通过工作台查看的,有通过EasyBI报表查看的,有通过Udata报表查看的,数据查看存在难度。指标体系数量大,部分指标是通用型,查询链路长,不能快速、直接定位到关心的结果。而且指标需要用户主动查看才能发现问题,缺少核心数据指标恶化的主动推送。
各级管理者
- 从看,一些临时性信息缺少统一的外通知渠道,不能及时通知相关人员,导致问题持续发酵。比如发现一个异常正在处理时,区域反复找过来咨询;上线公告、调研问卷等需要主动和一线交互的内容也没有统一出口。
协作层面
- 从看,目前运力相关资料获取、数据查询等操作大部分在PC端执行,缺少便携的移动端功能。一线人员不在电脑前面时,信息查询很不方便。
体验层面
二、措施·目标
基于大模型搭建了运力智能机器人——“
运力小智
知识问答、数据分析
便携式
从使用频次、大模型赋能的技术特点出发,结合一线人员和管理人员的痛点,同时调研其他事业部的做法,再结合运力自身业务特点,最终确定运力机器人的两个主要功能方向:
- :通过用户和机器人的对话(包括单轮和上下文多轮),解答运力日常工作中的常见问题,并进行快速便捷的数据信息查询。目标是减少用户获取知识路径困难和响应不及时的问题,释放用户对技术人工支持的依赖。
智能问答
- :除了支持个人用户及群聊用户主动搜索对话外,还支持面向m端/pc端指定用户、特定群组,主动发送单聊消息、语音信息(例如定时或固定周期发送报告、识别到的异常信息等)进行提示预警,让问题主动、及时地触达主责用户。
智能主动预警

相比其他事业部的智能机器人,运力小智有两个特色:一方面通过内、外部途径建立了运力垂直领域丰富的知识、数据信息库;另一方面集成了智能问答和数据分析,统一入口,丰富机器人能力,减少用户查询成本。
运力小智共进行了两个大版本的上线,升级内容如下:
三、实现细节
1、知识问答
知识问答部分借助开源框架LangChain和集团提供的大模型功能接口,实现了RAG问答机器人。主要包括知识库的建立和知识问答两个部分。下面重点说明技术细节,并对关键环节给出示例。
知识库的构建
知识库的构建包含两大块:知识的生成和知识库的存储。知识库的质量是问答系统效果的基础。项目中根据具体需求分别建立了问答(QA)知识库和文档知识库。
- 传统的运力机器人已经积累了大量的QA对,基于这些现有数据构建QA知识库,仍采用QA对形式。此外,QA知识库的数据来源还包括两个方面:一是利用大模型从文档中抽取相关信息,二是通过分析机器人的问答日志并结合人工标注收集。QA类知识在问答环节准确性更高。
- 文档知识库主要包含各种类型的文档,格式包括PDF、DOCX、PPTX等。从问答质量看,文档知识库可能不如QA知识库,但其数量庞大,人工运营成本更低——无需将内容整理成QA对,只需将文档转换为文本并存储。
两种知识库建立后,为了下游相似度算法使用,都需要将待检索/待召回的文本转为向量,存储在向量数据库中。本项目选用的是京东的Vearch库。
在文档转纯文本步骤中,对文档内容的解析质量至关重要,尤其是表格内容的解析。项目基于开源PDF解析框架进行了二次开发,解析了PDF中的章节信息,并将表格内容进行了结构化抽取和处理,最终提升了下游知识质量。PDF的解析结果和表格解析示例如下:
PDF解析后的结构化结果,保留了页眉、页脚、章节信息等。正文内容被保存到多个文本块中,每个文本块记录了内容、类型(text/table)、段落id、句子id、章节id等。
{
"metadata": { // 文档级元信息
"footers": [],
"headers": [],
"catalogs": []
},
"chapters": {
"1": "[CHAPTER_ROOT]",
"1.1": "第一条 xxx",
"1.2": "第二条 xxxx",
"1.3": "第三条 xxxx"
},
"context": [
{
"text": "JDLxxxx规定",
"type": "text",
"pid": 1,
"sid": 1,
"metadata": {"section_range": []},
"cid": "1"
},
...
]
}
下面是PDF解析结果中一个表格类文本块的示例,其中包含了每个cell的位置和内容,位置信息通过cell的四个坐标定位。这样的结构可以在下游处理成想要的格式(如markdown、json),并能标识单元格的合并情况。
{
"text": [
[[0,0,1,1], "名称"],
[[0,1,1,2], "尺寸"],
[[0,2,1,3], "三层加强材质"],
[[0,3,1,4], "售价"],
[[0,4,1,5], "三层特硬材质"],
[[0,5,1,6], "售价"],
[[0,6,1,7], "五层材质"],
[[0,7,1,8], "售价"],
[[0,8,2,9], "单卷纸生产量"],
[[1,0,2,1], "1号纸箱"],
[[1,1,2,2], "530*290*370"],
...
],
"type": "table",
"pid": 89,
"sid": 111,
"metadata": {"section_range": []},
"cid": "1.8"
}
问答结果召回
基于RAG的知识问答流程比较固定:根据问题召回知识,将问题、知识、问答历史等内容拼接为大模型prompt,然后使用大模型回答。这个项目中额外添加了“问题重新生成”环节:根据问答历史对本轮问题进行重新生成,使重新生成的问题在知识相似度召回时具有更好的效果。这部分用LangChain的精简问题链实现,示例代码如下:
from langchain import PromptTemplate
from langchain.chains import LLMChain
from langchain.chat_models import ChatOpenAI
def get_condense_question_chain(self):
"""精简问题链"""
CONDENSE_QUESTION_PROMPT = PromptTemplate.from_template(
"""给定历史对话和一个后续问题,将后续问题改写为一个标准问题,用其原始语言,确保避免使用任何不清晰的代词。
历史对话:
{chat_history}
后续输入: {question}
标准问题:"""
)
condense_question_chain = LLMChain(
llm=ChatOpenAI(
model="",
temperature="",
openai_api_key="",
openai_api_base="",
),
prompt=CONDENSE_QUESTION_PROMPT,
)
return condense_question_chain
2、数据分析
NoETL 衍生逻辑模型资产
在数据集市生产过程中,由于生产逻辑的多变和不确定性,指标在不同时间粒度和下钻维度组合下,统计逻辑有一定共性但难以完全复用。为了平衡逻辑模型的标准化与字段治理效率,定义了一套基于指标技术元数据衍生模型资产的编织规范。在无需额外人力干预和物理资源投入的前提下,自动化生成覆盖任意时间粒度和业务维度的逻辑模型。
模型元数据示例如下:
{
"uid": "742250d1dd9f457aa",
"name": "离线_低装载线路占比_日_3",
"nodes": [
{
"id": "98579cdb14b44423ace0",
"data": {
"viewUid": "e246257e141e4fe78",
"viewSql": "SELECT dt, trans_type_new_name AS trans_type_name , -- 线路类型 transport_org_name, -- 区域 business_type_name, -- 业务类型 team_name, -- 车队 changtu_group, --长途组 low_loading_plink_cnt, plink_cnt FROM bdp_app.app_dis_tsc_product_low_loading_new_sum_d WHERE date_type = 1 AND begin_node_name = '全部' AND add1 = '全部' AND add2 = '全部' AND tail_type = '全部' AND plink = '全部' AND trans_type_old_name = '全部' UNION ALL SELECT dt, trans_type_name, transport_org_name, business_type_name, team_name, changtu_group, low_loading_plink_cnt, plink_cnt FROM bdp_app.app_dis_tsc_product_chuanbai_low_loading_rate_sum_d WHERE date_type = 1"
},
"type": "fact"
}
],
"where": "trans_type_name <> '全部' AND transport_org_name <> '全部' AND business_type_name <> '全部' AND team_name = '全部' AND changtu_group = '全部'",
"measures": [
{
"id": 99,
"names": ["低装载线路占比"],
"sql": "SUM(low_loading_plink_cnt)/SUM(plink_cnt)",
"type": "float",
"format": "percentage",
"sort": 1
}
],
"dimensions": [
{"id": 1, "names": ["区域"], "field": "transport_org_name", "type": "str", "format": "text", "description": "区域"},
{"id": 5, "names": ["线路类型"], "field": "trans_type_name", "type": "str", "format": "text", "description": "线路类型"},
{"id": 12, "names": ["业务类型"], "field": "business_type_name", "type": "str", "format": "text", "description": "业务类型"}
],
"timeSeries": [
{"id": 1, "names": ["日","日期","天"], "field": "dt", "type": "yyyy-mm-dd", "format": "date"}
],
"operator": "liuyanchen9",
"updatedAt": 1714112126
}
基于模型元数据萃取统一语义知识图谱
基于逻辑模型元数据,创建语义词典构建的调度任务,并允许业务方添加业务方言和语义同义词,与血缘沿袭关系共同组成运力业务域的语义知识图谱。目前已积累70余万实体。语义词典用于对用户的自然语言问题进行切词分析,将业务语言转化为技术语言。然后通过语义血缘关系,结合RAG能力,利用时间、维度、指标、分析方法等元数据的组合,推理每个语素在知识库中的坐标,精确匹配到相应的逻辑模型,从而实现自然语言驱动的数据查询和分析。
血缘推理Agent原子能力:指标 → 维度&标签 → 维度值 → 逻辑模型 → 视图 → 物理表
AI增强生成SQL与分析思路
大模型在技术生产中能显著提高效率。尽管幻觉问题理论上无法完全消除,但前述严密优质的语义知识体系已经能有效控制推理风险。在此基础上,基于准确的元素结合Prompt生成SQL,不仅逻辑精确,而且计算效率的优化表现超越绝大多数数据分析师。同时,基于准确的SQL结果,大模型可以提供有见地的分析和解读。
数据分析Agent原子能力:自然语言问询转OLAP、指标波动归因、大模型增强分析与解读
功能融合
为提升业务使用体验,确保统一平台、统一问答入口出口,后台将知识问答与数据分析能力进行了有机融合。用户query提出后,首先调用数据分析问答接口,若意图命中则直接输出数据类结果;若未命中数据意图,则再次请求知识问答接口,返回知识卡片结果。
四、能力展示
功能一:指标查询
问答式交互数据分析
统一入口
快速获取数据
缩短数据分析链路
产品覆盖的指标范围简单介绍:
- :公路到达准点率、航空到达准点率、铁路到达准点率以及对应的解耦指标等
体验类指标
- :车次管控、到车车次货量、大车型占比、装载率、车均单量、自营车效率等
效率类指标
- :时间、区域、长途组、车队、线路类型、线路名称等
分析维度
运力小智正确打开方式:
- 京ME中直接搜索“运力小智”或在群聊中直接艾特“运力小智”
- 提问格式:+
时间维度
+分析汇总维度
+指标名称
想要的图表形式
例如:
- 1月西南干线装载率
- 12月西南每个车队的装载率,折线图
- 准点率最高的2个区域
- 从苏州昆山退货组到南京退货组公路到达准点率
- 北京长途组的公路到达准点率
功能二:知识问答
为运营人员提供日常的操作规范、规章制度、常见系统问题、常用看板、系统链接查询等内容,大大缩短人工检索信息的时间。
产品覆盖内容简单介绍:
- :运营日报,损益日报、时效日报、年货节日报
常用日报链接
- :TMS常用网页查询
系统网址
- :日常咨询运输小秘频率较高的问题
TMS系统指南
- :支持直接搜索知识库文档链接以及文档内的关键问(知识库文档链接大全)
操作手册/SOP内容查询
运力小智正确打开方式:
- 京ME中直接搜索“运力小智”或在群聊中直接艾特“运力小智”
- 提问格式:直接用业务语言向小智提问即可
常用日报链接示例:
系统网址示例:
TMS系统指南示例:
操作手册/SOP内容查询示例:
针对一线人员反馈的通用性问题给予快速解答,一线咨询问题快速转化工单,大大提高每日值班人员手动录入工单的效率。
功能三:特定场景——轨迹查询
方便运营人员根据派车单号(TW)进行车辆轨迹查询,减少繁琐的系统操作步骤。
运力小智正确打开方式:
- 京ME中直接搜索“运力小智”或在群聊中直接艾特“运力小智”
- 提问格式:按照 TW号+轨迹 的格式向小智提问。例如:TW24042503278457的轨迹
功能四:特定场景——行驶证图片查询
支持根据车牌号查询对应的行驶证图片。场景描述:当发生车辆故障、经济纠纷、交通事故等人为在途异常时,运营需要通过车牌号查车辆注册时间等信息来核查异常。运营同事反馈有些场景下不在电脑旁边时查询很不方便,需要发给在公司的同事帮忙查询,工作效率低。
运力小智正确打开方式:
- 京ME中直接搜索“运力小智”或在群聊中直接艾特“运力小智”
- 提问格式:按照 车牌号+行驶证照片 的格式向小智提问。例如:京A12345的行驶证照片
该功能有权限控制。
功能五:报表推送
Udata报表支持定时推送、预警推送两大功能。
产品覆盖内容简单介绍:
- :业务关注的数据结果可以通过京ME定时推送到群,收到的推送内容为全量信息。
定时推送
- :基于业务自身数据看板,根据关注的达成率/指标值等进行规则灵活设置,自动触达到对应责任人,提升数据分析和决策效率。
预警推送
如何进行相关配置:
- Udata报表中心,先选择要推送的报表,选择右边的推送设置选择【京ME】-选择想要的推送方式。
- 选择推送方式:定时推送或预警推送。
- 设置推送内容:定时推送或预警推送。
- 设置推送规则。
- 保存并发送。
特别说明:如果还是不会配置,可参考配置页面最上方的教学视频。
功能六:信息主动推送
支持每周上线公告、调研问卷等信息主动推送。
五、效果展示
- :使用人数和咨询次数逐步提升。当前每周活跃用户保持在50~100左右,咨询次数大于500+,覆盖总部九大区共154个组织,咨询人数347人,共68个岗位。
从使用情况看
- :
从用户体验看
- 调度、精益改善相关岗位的智能人员每天需要高频查看派车单轨迹。之前在工作台查询轨迹需要4步操作,耗时2~3分钟;现在通过运力小智快速查询简化成一步,查询时间减少到1分钟内,大大提高了效率。截止当前,轨迹相关咨询次数共1230次,一线人员反馈效果不错。
- 针对一线调度人员,当发生车辆故障、经济纠纷、交通事故等人为在途异常时,需要通过车牌号查车辆注册时间等信息来核查异常,需要对比行驶证信息。另外有些司机上传的图片是PS的,需要通过看照片抓这种PS行驶证的情况。以上两种情况下需要通过车牌号查询对应的行驶证正反面图片。之前运营同事反馈不在电脑旁边时查询很不方便,需要发给在公司的同事帮忙查询,工作效率低。现在通过运力小智问答直接返回行驶证信息,查询时间由10分钟减少到1分钟内返回结果。
- :
从成功率看
- 数据分析类(运力效率、体验类指标)一线人员咨询结果成功率约70%。
- 知识问答类:一开始用户知识类的发散提问成功率20%~30%;引导用户熟悉使用后,现在用户特定场景的使用率提升,知识问答类成功率达到50%左右。
六、总结与规划
运力小智是一个为了提升职能人员、管理人员工作效率的智能机器人,集知识类、数据类问题于一体,通过大模型能力提供便携式服务,致力于为运力相关用户提供高效、便捷的信息反馈。Q2重点实现了运力小智机器人的交互数据分析、知识查询、报表推送功能。后续需要持续打磨交付效果,在保证价值功能的前提下提升查询效率和查询结果召回稳定性,提升用户体验,并进行规模化推广。后续的功能规划如下: