GenAI和LLMs在Kustomer的角色
生成式人工智能和LMs
生成式人工智能和LLMs可以说是今年科技新闻和社交媒体中最热门的术语。它们已经开始彻底改变人工智能领域和我们构建软件的方式,也改变了我们与各个行业和领域中的机器交互,以及我们日常生活中的互动。
生成式人工智能是指一类人工智能,它能够创造出与训练数据在统计属性上相似的新内容。它通过大量数据进行学习,内化相关的模式、结构和特征。利用这些学习到的知识,生成式人工智能可以生成与训练数据不同但在结构和风格上相似的新样本。生成的内容可以涵盖文本、图像、音频,甚至更复杂的数据如视频或三维模型。
一个LLM的简介
LLM即大型语言模型,是一种生成式人工智能工具,展示了惊人的语言能力。更具体地说,它是通过对大量文本数据进行大规模神经网络训练而产生的结果。训练过程包括向机器展示数百万个文本示例,目标是预测序列中接下来的一个单词,给定前面出现过的单词(这个任务称为语言建模)。通过处理无数句子、短语和单词,LLM捕捉到了语言中的复杂模式和关系。它从根本上学习了语言的统计表示,包括语法、句法,甚至某种程度上的语义理解。它还似乎对我们的世界如何运作有一些普遍的理解,并且在某种程度上符合我们通常所称的常识。
语言模型并非新概念。
的确,在Kustomer,超过3年前,我们开始利用今天听起来像史前语言模型的技术(BERT,RoBERTa和Universal Sentence Encoder)来构建语言理解功能,并提供意图检测、消息分类、建议操作和语义搜索。然而,新模型的规模和能力在过去几个月内仅仅增加。大型语言模型中的“大”指的是训练数据的规模和模型具有的巨大参数数量,通常达到数十亿甚至数万亿。这些模型的规模显示出对它们理解和生成文本的能力的贡献,它们能以连贯、上下文适当且经常深思熟虑的方式进行文本处理。
LLMs 不是完美的。
无论如何,LLM并非完美的魔法工具。我们使用得越多,就越能了解它们的局限性。其中一些缺点已经非常广为人知:
- 他们不了解最近的事件或实时信息。LLM是根据静态数据集进行训练的,这意味着他们的知识截止日期之后,他们对新事件、发现或信息变化一无所知。
- 他们不了解特定领域、私人和定制数据。LLM只能了解它们经过训练的事实和数据。它们无法访问或检索个人或公司特定的信息。
- 他们有时会提供错误信息和虚构的答案,这被普遍称为幻觉。
- 它们倾向于展现与训练数据中存在的偏见、社会偏见和刻板印象相同的特点。
- 他们的行为是不确定的,通常被视为黑盒子,其内部运作不易解释。
话虽如此,一个不完美的工具仍然可以解决许多任务,并且非常有用。让我们深入了解我们如何使用现代LLMs来构建Kustomer的智能产品。
LLMs 用于对话助手
因为他们的语言能力,LLMs 看起来是智能对话助手中的必不可少的组成部分。然而,我们已经提到,虽然他们擅长提供有关一般世界知识的准确回答,但他们无法回答关于特定领域、私人和定制数据的问题。我们如何定制 LLM 知识以在特定领域(例如您的业务的客户支持)中提供事实和准确的答案呢?
邻接AI生成答案的客户
AI Responses是Kustomer在KIQ客户协助中提供的一种新型互动方式,它能够理解自然语言中表达的最复杂问题,并且只要在知识库中能找到相应的答案,就能提供准确的回答。
他们能够有效地理解带有拼写错误和变化的信息,这是传统聊天机器人难以实现的,并且能够提供详细的对话回答。
而且答案可以通过选择一个目标文章集合来轻松定制。无需参与昂贵且漫长的从头开始培训新基础模型或微调现有的LLM过程。
检索增强生成(RAG)系统
其中一种最常见的架构旨在使用额外的私有或自定义数据来增强或定制LLM的知识,包括构建一个检索增强生成(RAG)系统。RAG系统结合了语义搜索技术、LLM的语言理解和语言生成能力。
这样一个系统包括三个主要组成部分:
- 索引化:离线步骤,用于加载输入文档,转换它们,并将它们的语义表示导入到适当的存储介质,通常是矢量数据库。
- 检索:实时过程,它接受用户输入的查询,并使用与步骤1中摄取的文档相同的表示进行转换,然后使用某种相似度算法检索一组可能包含答案的相关文档。
- 答案生成:一个实时步骤,它获取检索到的文档并指导LLM根据这些文档生成用户输入查询的准确答案。
索引
在搜索的背景下,索引化是指将我们要搜索的文件存储在适当的数据库中的过程。这些文件的表示方式和数据库都被设计成在查询时能够优化速度和性能。
在自然语言处理(NLP)领域中,我们将表征词汇、句子或更长的文本意义的任何数值表示称为嵌入。这些嵌入可以通过手动生成,使用不同的统计技术,或者更近期的做法是使用语言模型来生成。当你仔细观察一个嵌入时,你只能看到一堆看起来毫无意义的数字。要牢记的关键思想是,这些嵌入以一种编码和压缩信息的方式来表达,这样具有相似含义的词语或句子也具有相似的数字。
所以,我们可以访问现代的LLMs(有来自OpenAI、Anthropic或Cohere等供应商的出色替代产品,或者专门针对语义相似性进行训练的开源模型,例如HuggingFace上发布的模型)。这些模型在生成文本的语义表征方面表现非常出色,并且我们可以利用它们轻松将任何文档(例如知识库文章)转换为嵌入。
这正是我们在知识库中所做的事情:每当用户撰写并发布一篇新文章时,我们会分析它的结构(提取标题、正文、标签和一些元数据),转换其内容,并将其不同的表达形式(其中之一是语义嵌入)存储在向量存储中,
请注意,由于用于创建嵌入式的LLM通常对输入文本的长度有一些限制,并且由于您不希望您的嵌入式编码包含过多不相关的信息片段,常见做法是将长文档拆分为更小的片段。有多种策略可以实现此目标,但总体目标是使您的块尽可能简洁和连贯。
检索
一旦我们在一个向量存储中拥有了一系列文档的嵌入,我们可以通过语义搜索轻松地利用这些嵌入。语义搜索是一种现代模糊搜索技术的方法,它承诺能够提供更准确的结果,因为它试图根据查询和检索到的文档的意图、含义或概念进行映射,而不仅仅是简单的匹配单词。想象一下,有一种搜索引擎能够理解复杂问题的意图和处理上下文含义,而不仅仅是简单的孤立关键词。
使用语义搜索有两个基本要求:
- 我们需要使用与文档相同的表示方法来编码输入查询。在我们特定的使用案例中,这意味着使用与创建知识库文章嵌入的 LLM 相同的方法来创建查询嵌入。
- 我们需要在向量空间中计算查询嵌入与其他文档嵌入之间的距离,并找到最相似的前k个(使用如k近邻(k-NN)算法的某个版本)。
此外,在这一点上,为了最大限度地提高这些检索结果的准确性,我们可能希望利用LLM的语言理解能力重新排序检索结果或过滤可能包含答案的文档。主要目标是确定哪些文档(仅限这些文档)包含了正确回答用户问题所需的信息。
答案生成
最后,一旦我们获取到一组可能支持答案的文章,就可以再次利用LLM的语言能力。在这种情况下,我们希望模型能够理解用户的问题,并迫使其生成一个事实性的答案。
这可以通过指导模型只使用提供的支持文件中的信息来回答问题来实现,这代表着一种与机器进行互动的新范式,一种使用自然语言进行编码的新方式,被称为提示工程。这仍然是一门年轻的学科,其中涉及大量的试错,但在某种程度上,LLM可以被驯服以提供准确、可复现和一致的行为。
构建基于LLM的应用程序具有挑战性。
大多数情况下,RAG系统将胜过任何其他传统的对话助手。当一切顺利时,用户体验是无可比拟的。但在这个新领域中,工具和实践正在迅速发展,还有一些有趣的问题有待解决。
总的来说,运输基于LLM的产品非常复杂。评估它们的性能,端到端地对其进行测试,解释和说明它们的行为,并扩展整个系统都是非常艰巨的任务,这主要是由于LLM的概率性行为所致。并非每一种意外行为或不正确的答案都对应代码中需要修复的错误。
我们仍在学习和研究改进会话助手整体体验的新方法。您有将LLMs产品化的经验吗?您对解决上述挑战感兴趣吗?事实证明我们正在招聘……快加入我们吧!
结论
在这篇文章中,我们深入探讨了生成式人工智能(Generative AI)和大型语言模型(LLMs)的变革性影响。生成式人工智能能够根据其训练数据的统计属性生成新内容,包括文本、图片以及更复杂的输出如视频和3D模型。
在Kustomer,我们已经从BERT和RoBERTa等早期模型进化到现代的、功能更强大的LLMs。这些模型在各种自然语言处理任务中表现出色,提升了对话助手的功能性。它们可以处理复杂的语言任务,保持连贯的对话,并提供有见地的回答。然而,它们也有一些局限性,比如它们的静态知识库、无法访问实时或特定领域信息、可能存在错误信息和固有的偏见。
为了解决这些限制,我们在我们的对话助手中开发了人工智能生成的回复。这些回复能够理解并准确回答复杂的询问,并从知识库中获益。此外,我们实现了检索增强生成(RAG)系统,它将语义搜索与LLMs的语言能力结合起来,在客户支持环境中提高了回复的准确性和相关性。该系统涉及索引、检索和生成答案的过程,每个过程都利用了现代LLMs和语义搜索技术。