一旦您使检索增量生成系统有效工作,您可能会在可扩展性、用户体验和操作开销方面面临新的挑战。
所有IT项目都经历了阶段,生成性人工智能在这方面也无异。最初的试点项目用于测试技术或软件的工作原理,并确定您是否获得了您想要实现的结果或供应商或开发人员的承诺。一旦这些试点阶段完成,就该进行规模化了。然而,虽然您可能认为扩大新项目只是涉及部署更多资源,但挑战在于,您可能会发现自己遇到新问题。对于生成性人工智能来说,这些扩展问题可能非常不同。
IT运营人员通常将这些问题称为“第一天”和“第二天”的问题。第一天的问题是那些在实施中出现的问题。在生成人工智能中,这将包括准备您的数据与检索增量生成(RAG)一起使用,通过检查您的分块和索引数据方法是否有效。RAG涉及使用预先训练的大型语言模型(LLM)以及您公司自己的数据,这样您的生成式人工智能应用程序就可以提供更相关、更具体和更及时的响应,而不仅仅是依赖LLM最初接受培训的内容。
数据、分块、索引和嵌入
从第一天的角度来看,RAG部署可能会面临数据准备方式的问题。例如,数据准备的初始阶段涉及将所有非结构化和结构化数据转换为生成式人工智能系统可以使用的格式。这涉及创建一组文档对象,这些对象代表您的所有公司数据,并包含文本和任何相关的元数据。
然后,文本数据被分成较小的部分,称为块,可以索引和理解。块的尺寸在这里会有很大的不同。例如,您可以在句子或段落级别实现,或作为更复杂的自引用块,这些块被处理成越来越小的元素。无论您选择哪种方法,这些块都会被索引并转换为矢量嵌入,它们可以存储在那里以备将来搜索。
当用户发送查询时,该查询被转换为用于搜索最相关数据的矢量,然后将其传递给LLM,以便在响应中考虑。虽然RAG可以帮助减少人工智能幻觉并改善反应,但它本身是不够的。选择错误的LLM或使用错误的数据块或索引方法等问题可能会影响您的RAG系统的运行情况,并影响其响应质量。例如,如果您使用太大的块,那么LLM将返回可能与特定请求无关的大块文本。
扩展生成性人工智能应用程序
一旦你的RAG系统有效工作,你可能会发现你面临着新的挑战。例如,OpenAI的ChatGPT服务经过培训,可供用户提问。用户数量增长非常迅速——根据Business of Apps的数据,只用了两个月就积累了1亿用户。采用生成式人工智能和RAG的公司希望他们也能看到大量用户请求。
然而,您是否考虑过,如果您的应用程序非常成功,会发生什么,以及这可能会给您的生成式人工智能基础设施带来多大的压力?您的生成人工智能成本会随着您的目标收入而增加,还是您将此视为产品之外的额外收入?根据你吸引的兴趣水平,你对收支平衡并最终达到预期利润的预测是什么?
对于许多服务来说,大规模运行的工作与提供高质量响应的初始构建和设计阶段同样重要。这是第二天问题的一个例子,你会发现在测试阶段有效的东西无法扩展以满足需求。例如,您的RAG部署如何同时处理来自用户的数千或数百万个请求,以及您的矢量数据库和LLM集成组件以多快的速度解析这些数据,以便系统能够向用户返回响应?
虽然用户可能会接受免费新奇服务的缓慢性能,但当他们为服务付费时,他们不愿意忍受糟糕的响应时间。在分析RAG请求时,事务中高达40%的延迟可能来自对嵌入服务和矢量搜索服务的调用,其中RAG匹配正确的数据并将其共享给用户。因此,优化往返可能会对用户体验产生巨大影响,例如通过缓存以前的类似请求。与此同时,每次往返都将代表计算资源的成本,特别是在云中。减少工作量,以便公司为他们使用的东西付费,可以帮助削减这些成本,也可以使任何支出更有效率。
与此同时,开发人员和IT运营人员必须查看他们在哪里运行生成的人工智能工作负载。许多公司将从云端开始,因为他们希望避免运行自己的法学硕士的负担,但其他公司将希望采用自己的方法来充分利用他们的选择并避免锁定。然而,无论您是在本地还是在云端运行,您都必须考虑跨多个位置运行。
使用多个站点为服务提供了弹性;如果一个站点不可用,那么该服务仍然可以运行。对于本地站点,这可能意味着围绕矢量数据集实施故障转移和可用性技术,以便在需要时查询这些数据。对于云部署,在多个位置运行更简单,因为您可以使用不同的云区域来托管和复制矢量数据。使用多个站点还允许您从离用户最近的站点发送响应,减少延迟,如果您出于合规目的必须将数据保留在特定位置或区域,则更容易支持地理数据位置。
持续运营开销
第二天的IT操作涉及查看运行基础设施的开销和问题,然后要么消除瓶颈,要么优化方法来解决它们。由于生成式人工智能应用程序涉及大量数据,以及集成在一起的组件和服务,因此考虑随着时间的推移而存在的运营开销很重要。随着生成式人工智能服务越来越受欢迎,这些集成如何大规模工作可能会出现问题。如果您发现想要添加更多功能或集成更多潜在的人工智能代理,那么这些集成将需要企业级支持。
选择您的组件并自行集成它们,允许您围绕应用程序采取最佳方法,同时使用微服务方法也可以随着时间的推移更容易支持更多的集成或功能。然而,DIY也意味着你负责所有这些整合和管理,随着时间的推移,这些整合和管理会加起来。替代方案是查看基于堆栈的方法,其中已为您实施了对不同工具或集成的支持。预建堆栈允许您的团队专注于构建应用程序,而不是实施基础设施,还应该简化您的操作。
一旦您启动并运行了生成的人工智能应用程序,您必须操作和支持该服务,以便它满足用户对性能和质量的期望。当您完成设置时,您将发现特定于RAG部署的新潜在问题,以及一些传统的IT管理问题,如可用性和成本。随着你的规模扩大,你的重点必须从第一天的问题转移到第二天的挑战。在这方面,采取基于堆栈的方法可以提供帮助,让您专注于为用户提供尽可能最好的服务。