2026年7月9日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

Genie:Uber的生成式AI随叫随到副驾驶

发布日期:2024-10-29 16:24:28 浏览次数: 2685
作者:幻想发生器

微信搜一搜,关注“幻想发生器”

引言


在当今快节奏的技术环境中,维持稳健的值班运营对确保服务顺畅运行至关重要。现代平台工程团队面临着高效管理值班排班、事件响应、关键时刻沟通以及在 Slack® 渠道上提供强有力客户支持的挑战。


本文介绍了我们构建的名为 Genie 的值班副驾驶,它使用生成式 AI 来优化与值班工程师之间的沟通和问答。


深入了解:问题和动机


在 Uber,像 Michelangelo 团队这样的不同团队都有 Slack 支持渠道,内部用户可以在那里寻求帮助。如图 1 所示,每月在这些渠道上提出约 45,000 个问题。高问题量和长响应等待时间降低了用户和值班工程师的工作效率。



图 1: Uber 各 Slack 渠道 5 个月内提出的大量问题。


繁琐的流程



图 2: 等待值班工程师回答问题的缓慢过程。


通常,当用户在 Slack 渠道提出问题时,他们必须等待值班工程师回应。值班工程师要么回答用户的初始问题,要么要求提供更多细节。然后用户可能会提出后续问题、寻求更多澄清或提供额外信息。这导致需要再次等待值班工程师的回应。经过几轮来回沟通后,用户的问题最终得到解决。


难以找到信息


许多问题本可以通过查阅现有文档得到解答,但信息分散在 Uber 的内部 wiki(称为 Engwiki)、内部 Stack Overflow 和其他位置,这使得找到具体答案变得困难。因此,用户经常重复提出相同的问题,导致数百个 Slack 渠道对值班支持的需求很高。


架构挑战


为了构建值班副驾驶,我们在微调 LLM 模型和利用 检索增强生成(RAG)[1] 之间做出选择。微调需要经过策划的高质量、多样化示例数据供 LLM 学习。它还需要计算资源来用新示例更新模型。


相比之下,RAG 一开始不需要任何多样化的示例。这减少了副驾驶发布的上市时间,所以我们为副驾驶选择了这种方法。


构建值班副驾驶面临几个挑战,包括解决幻觉、保护数据源和改善用户体验。以下是我们如何解决每个挑战的概述。


对于幻觉,我们专注于:


  • 响应的准确性: 我们确保副驾驶为问题检索相关知识,这可以防止 LLM 引擎生成不正确或误导性信息

  • 验证机制: 我们实施方法来根据权威来源验证副驾驶的响应,以减少幻觉的可能性

  • 持续学习: 我们确保副驾驶能访问最新数据以提高其准确性


对于数据安全,我们谨慎选择要摄取的数据源,因为许多数据源不能在 Slack 渠道中暴露。


为了改善用户体验,我们设计了:


  • 直观的界面: 我们设计了一个易于使用的界面,让用户能够高效地与副驾驶互动

  • 反馈循环: 我们创建了一个系统,让用户能够对响应提供反馈,以不断改进副驾驶的性能


在开发值班副驾驶时,我们解决了这些挑战,以确保它可靠、用户友好且安全。


深入探讨:架构


让我们探索我们的值班副驾驶 Genie 的架构。



图 3: 值班副驾驶的架构。


从高层次来看,我们抓取内部数据源(如 Uber 的内部 wiki、Uber 的内部 Stack Overflow、工程需求文档),并使用 Open AI 嵌入模型从这些数据源创建向量。这些嵌入存储在向量数据库中。然后,当用户在 Slack 渠道发布问题时,该问题会被转换为嵌入。服务在向量数据库中搜索与问题相关的嵌入。由嵌入索引的结果被用作 LLM 的提示以获得响应。


以下使用 Apache Spark™ 进行数据准备、嵌入和推送工件以供服务的步骤可以概括为 RAG 应用程序。这些一般步骤构成了 RAG 应用程序的基础。


ETL



图 4: 用于数据摄取的 Spark 应用程序。


图 4 显示了一个包含将数据摄取到向量数据库步骤的自定义 Spark 应用程序。Spark 应用程序使用 Spark 执行器运行这些步骤。


数据准备


Spark 应用程序使用 Uber 的内部 wiki(称为 Engwiki)或 Uber Stack Overflow API 从相应的数据源获取内容。从这个数据准备阶段输出 Spark 数据框。模式在一列中包含 Engwiki 链接,在另一列中包含 Engwiki 的内容,两者都是字符串格式。



图 5: 来自 Engwiki 数据源的 Spark 数据框的列。


图 5 显示了以 Uber 的内部 wiki 为原始数据源的 Spark 数据框的列。它具有源 URL、内容和存储元数据的其他列。


嵌入生成


一旦抓取了数据,就使用 OpenAI 嵌入模型创建嵌入并推送到 Terrablob(Uber 的 blob 存储)。创建的嵌入只能通过与 Engwiki 空间相关的特定 Slack 渠道访问。输出格式是具有分块内容映射到该块对应向量的模式的数据框。Uber 的内部 wiki 内容使用 langchain 进行分块,并通过带有 PySpark UDF 的 OpenAI 生成嵌入。



图 6: 带有向量嵌入的 Spark 数据框的列。


图 6 显示了以 Uber 的内部 wiki 为原始数据源的 Spark 数据框的列。它具有源 URL、内容、分块内容以及该特定块的嵌入。


推送器



图 7: 向量推送到 Terrablob 的流程。


图 7 显示了向量如何推送到 Terrablob。触发引导作业将数据从数据源摄取到 Sia(Uber 的内部向量数据库解决方案)。然后触发两个 Spark 作业用于索引构建和合并并将数据摄取到 Terrablob。每个叶子同步并下载存储在 Terrablob 中的基本索引和快照。在检索期间,查询直接发送到每个叶子。


知识服务



图 8: 后端知识服务的流程。


Genie 有一个名为知识服务的后端服务,它通过首先将传入查询转换为嵌入,然后从向量数据库获取最相关的块来服务所有传入查询的传入请求。


成本跟踪



图 9: Genie 成本跟踪流程。


对于成本跟踪,当 Slack 客户端或其他平台调用知识服务时,UUID 会传递给知识服务,后者通过上下文标头将 UUID 传递给 Michelangelo 网关。Michelangelo 网关是 LLM 的传递服务,因此可以将其添加到用于按该 UUID 跟踪成本的审计日志中。


Genie 性能评估


指标框架


用户可以通过点击 Genie 回复中的相关按钮在 Slack 中立即提供反馈。我们让用户可以选择:


  • 已解决: 答案完全解决了问题

  • 有帮助: 答案部分有帮助,但用户需要更多帮助

  • 没有帮助: 回答错误或不相关

  • 不相关: 用户需要值班人员的帮助,Genie 无法协助(如代码审查)



图 10: Genie 的用户反馈流程。


当用户留下反馈时,Slack 插件会拾取它并使用特定的 Kafka 主题将指标流式传输到包含反馈和所有相关元数据的 Hive 表中。我们稍后在仪表板中可视化这些指标。


性能评估


我们为 Genie 用户提供运行自定义评估的选项。他们可以评估幻觉、答案相关性或他们认为对其用例重要的任何其他指标。这种评估可用于更好地调整所有相关的 RAG 组件—检索和生成。



图 11: 性能评估过程。


图 11 显示了评估过程,这是一个使用已构建的 Michelangelo 组件的单独 ETL 管道。从 Hive 检索 Genie 的上下文和响应,并与任何其他相关数据(如 Slack 元数据和用户反馈)连接。它被处理并传递给评估器。评估器获取指定的提示并运行 LLM 作为评判。指定的指标被提取并包含在评估报告中,用户可以在 UI 中查看该报告。


文档评估


准确的信息检索取决于源文档的清晰度和准确性。如果文档质量本身就很差,无论 LLM 表现如何好,都无法获得良好的性能。因此,评估文档并提出可行的建议以改进文档质量的能力对于高效和有效的 RAG 系统至关重要。



图 12: 文档评估应用程序的工作流程。


图 12 显示了文档评估应用程序的工作流程。在抓取数据后,知识库中的文档被转换为 Spark 数据框。数据框中的每一行代表知识库中的一个文档。然后通过调用 LLM 作为评判来处理评估。在这里,我们用自定义评估提示来提供 LLM。LLM 返回评估分数,以及分数的解释和关于如何改进每个文档质量的可行建议。所有这些指标都作为评估报告发布,用户可以在 Michelangelo UI 中访问。


挑战的解决方案


为了减少幻觉,我们改变了向 LLM 发送从向量数据库获得的提示的方式。对于从向量数据库获得的所有结果,我们明确添加了一个称为子上下文的部分以及该子上下文的源 URL。我们要求 LLM 只从提供的各种子上下文中给出答案,并返回源 URL 来引用答案。这旨在为它返回的每个答案提供源 URL。


为了确保我们不会将用于创建嵌入的数据源泄露给 Open AI 或在 Slack 上泄露给可能无法访问敏感数据源的人,我们预先策划了大多数 Uber 工程师都可以广泛使用的数据源,并且只允许使用这些数据源来生成嵌入。


为了最大限度地发挥 Genie 回答问题的潜力,我们开发了一种新的交互模式。这种模式允许用户更方便地提出后续问题,并鼓励他们更仔细地阅读 Genie 的答案。如果 Genie 无法回答他们的问题,用户可以轻松地将问题升级到值班支持。



图 13: Genie 如何回应用户问题的流程。


在新的交互模式中,当用户提出问题时,Genie 将提供下一步操作按钮回答。使用这些按钮,用户可以轻松地提出后续问题、将问题标记为已解决或联系人工支持。


结果


自 2023 年 9 月推出以来,Genie 已扩展到 154 个 Slack 渠道,并回答了超过 70,000 个问题。Genie 拥有 48.9% 的帮助率,展示了其不断提高的效率。我们估计自推出以来已为我们节省了 13,000 小时的工程时间


未来


Genie 是一个尖端的 Slack 机器人,旨在简化值班管理、优化事件响应和改善团队协作。Genie 以简单性和有效性为重点开发,作为一个全面的助手,使工程团队能够无缝处理值班职责。


这个值班助手副驾驶有望改变用户和任何平台的值班工程师在各自平台的 Slack 渠道中互动和参与的整个体验。它还可以改变每个产品内的体验,如 Michelangelo 或 IDE,用户可以在产品内或产品特定的 Slack 渠道中找到产品特定的帮助,而无需等待值班协助。


结论


Genie 这个值班助手副驾驶彻底改变了工程团队管理值班职责的方式。通过促进自动解决和提供有见地的分析,Genie 使团队能够高效和有效地处理值班职责。


致谢

如果没有许多团队成员的贡献,这个值班副驾驶的推出是不可能的。非常感谢 Uber Michelangelo 团队的成员。我们还要感谢其他 Uber 团队的合作伙伴,使这个想法成为现实。


Slack® 是 Slack Technologies, Inc. 的注册商标和服务标志。Apache®、Apache Spark™ 和 Spark™ 是 Apache 软件基金会在美国和/或其他国家的注册商标或商标。使用这些标志并不意味着得到 Apache 软件基金会的认可。


页眉图片说明:该图片由人工智能生成工具创建。


53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅