人工智能模型是一种用于处理和生成信息的算法,通常模仿人类的认知功能。通过大型数据集中学习,这些模型可以做出预测、文本、图像或其他输出,从而增强各行业的各种应用。
GPT 等模型的与众不同之处在于其预训练特性,正如 GPT-Chat Generative Pre-trained Transformer 中的 "P "所表示的那样。这种预训练功能将人工智能转变为一种通用开发工具,不需要广泛的机器学习或模型训练背景。
提示 Prompts
是引导人工智能模型产生特定输出的语言输入的基础。对于熟悉 ChatGPT 的人来说,提示可能只是在对话框中输入并发送到 API 的文本。然而,它包含的内容远不止这些。在许多人工智能模型中,提示文本不仅仅是一个简单的字符串。
ChatGPT 的 API 在一个提示中包含多个文本输入,每个文本输入都被分配了一个角色。例如,系统角色会告诉模型如何操作,并为交互设置上下文。还有用户角色,通常是来自用户的输入。
制作有效的提示既是一门艺术,也是一门科学。ChatGPT 专为人类对话而设计。这与使用类似 SQL 的东西来 "提问 "完全不同。我们必须像与人对话一样与人工智能模型交流。
由于这种交互方式的重要性,"提示工程 "一词已成为一门独立的学科。提高提示有效性的技术层出不穷。在制作提示语方面投入时间,可以大大提高结果输出。 分享提示语已经成为一种共同的做法,学术界也在积极开展这方面的研究。最近的一篇研究论文发现,最有效的提示语之一是以 "深吸一口气,一步一步来 "开头的。这应该能让你明白为什么语言如此重要。我们还不完全了解如何最有效地利用这一技术的前几个版本,如 ChatGPT 3.5,更不用说正在开发的新版本了。
Prompt Templates 提示模板
创建有效的提示需要确定请求的上下文,并用用户输入的特定值替换请求的部分内容。
Embeddings 嵌入
嵌入是文本、图像或视频的数字表示,可捕捉输入之间的关系。 嵌入是通过将文本、图像和视频转换成浮点数数组(称为向量)来实现的。这些向量旨在捕捉文本、图像和视频的含义。嵌入数组的长度称为向量的维度。 通过计算两段文本的向量表示之间的数字距离,应用程序可以确定用于生成嵌入向量的对象之间的相似性。 嵌入在实际应用中尤为重要,如检索增强生成(RAG)模式。嵌入可以将数据表示为语义空间中的点,语义空间类似于欧几里得几何的二维空间,但维度更高。这意味着,就像欧几里得几何中平面上的点可以根据坐标远近一样,在语义空间中,点的远近反映了意义的相似性。关于相似主题的句子在这个多维空间中的位置比较接近,就像图形上相互靠近的点一样。这种接近性有助于完成文本分类、语义搜索甚至产品推荐等任务,因为它允许人工智能根据相关概念在这一扩展语义景观中的 "位置 "对其进行辨别和分组。 你可以把这个语义空间看作一个矢量。
Tokens 词块
人工智能模型工作的基石。在输入时,模型将单词转换为词块。在输出时,它们会将词块转换回单词。 在英语中,一个词块大致相当于一个单词的 75%。作为参考,莎士比亚的作品全集共约 90 万字,大约相当于 120 万个词块。 也许更重要的是,词块=金钱。在托管人工智能模型中,您的费用是由使用的代币数量决定的。输入和输出都会对代币总数产生影响。 此外,模型还受到令牌限制,这限制了单次 API 调用中处理的文本数量。这个阈值通常被称为 "上下文窗口"。模型不会处理任何超过此限制的文本。
Structured Output 结构化输出
传统上,人工智能模型的输出是字串 ,即使您要求以 JSON 格式回复。它可能是一个正确的 JSON,但它不是一个 JSON 数据结构。它只是一个字串。此外,在提示中要求 "为 JSON "也不是 100% 准确的。
这种复杂性导致了一个专门领域的出现,该领域涉及创建提示以产生预期输出,然后将生成的简单字符串转换为可用的数据结构,以便进行应用集成。 结构化输出转换采用精心制作的提示,通常需要与模型进行多次交互才能实现所需的格式。
将数据和应用程序接口引入人工智能模型
如何为人工智能模型提供未经训练的信息?请注意,GPT 3.5/4.0 数据集的有效期仅到 2021 年 9 月。因此,对于需要了解该日期之后的知识的问题,模型表示不知道答案。一个有趣的琐事是,这个数据集大约有 650GB。
微调 Fine Tuning
这种传统的机器学习技术包括调整模型和改变其内部权重。然而,这对机器学习专家来说是一个具有挑战性的过程,而且由于 GPT 等模型的规模较大,因此对它们来说是一个极其耗费资源的过程。此外,有些模型可能不提供这种选项。
提示填充 Prompt Stuffing || **检索增强生成(RAG) Retrieval Augmented Generation
一种更实用的替代方法是在提供给模型的提示中嵌入数据。鉴于模型的标记限制,需要在模型的上下文窗口中呈现相关数据的技术。这种方法俗称为 "填充提示"。这种技术也被称为 "检索增强生成"(RAG)。这种方法采用批处理式编程模型,任务从文件中读取非结构化数据,对其进行转换,然后将其写入矢量数据库。在高层次上,这是一个 ETL(提取、转换和加载)管道。矢量数据库用于 RAG 技术的检索部分。
在将非结构化数据加载到矢量数据库的过程中,最重要的转换之一就是将原始文档分割成小块。将原始文件分割成小块的过程有两个重要步骤: 1.在保留内容语义边界的前提下,将文档分割成若干部分。例如,对于包含段落和表格的文档,应避免在段落或表格中间分割文档。对于代码,应避免在方法实现的中间部分分割代码。 2.将文件的各个部分进一步拆分成若干部分,这些部分的大小只占人工智能模型令牌限制的一小部分。
RAG 的下一阶段是处理用户输入。当人工智能模型要回答用户的问题时,问题和所有 "相似 "的文档碎片都会被放入发送给人工智能模型的提示中。这就是使用矢量数据库的原因。它能很好地找到相似内容。
ETL Pipeline 提供了更多关于协调从数据源提取数据并将其存储到结构化矢量存储中的流程的信息,确保在将数据传递给人工智能模型时,数据以最佳格式进行检索。
工具调用 Tool Calling
这种技术允许注册工具(用户自定义服务),将大型语言模型与外部系统的 API 相连接。
大型语言模型 (LLMs) 在训练后被冻结,导致知识陈旧,而且无法访问或修改外部数据。 工具调用机制解决了这些缺陷。它允许你将自己的服务注册为工具,将大型语言模型与外部系统的应用程序接口连接起来。这些系统可以为 LLMs 提供实时数据,并代表它们执行数据处理操作。 1.当我们想让模型使用某个工具时,我们会在聊天请求中包含该工具的定义。每个工具的定义都包括名称、描述和输入参数的模式。 2.当模型决定调用一个工具时,它会发送一个包含工具名称和输入参数的响应,这些参数是按照定义的模式建模的。 3.应用程序负责使用工具名称识别工具,并根据提供的输入参数执行工具。 4.应用程序将处理工具调用的结果。 5.应用程序会将工具调用结果发回模型。 6.模型利用工具调用结果作为附加背景生成最终响应。
Evaluating AI responses 评估人工智能响应
要确保最终应用的准确性和实用性,有效评估人工智能系统响应用户请求的输出结果非常重要。有几种新出现的技术可以将预训练模型本身用于这一目的。 这一评估过程包括分析生成的回复是否符合用户的意图和查询的上下文。相关性、连贯性和事实正确性等指标被用来衡量人工智能生成的回复的质量。 一种方法是将用户的请求和人工智能模型的响应同时呈现给模型,并查询响应是否与所提供的数据一致。 此外,利用存储在矢量数据库中的信息作为补充数据,可以加强评估过程,帮助确定响应的相关性。