.NET 中的嵌入

嵌入是 LLM 捕获语义含义的方式。 它们是非数值数据的数值表示形式,可供 LLM 用于确定概念之间的关系。 你可以使用嵌入来帮助 AI 模型了解输入内容的含义,以便模型进行比较和转换操作,例如汇总文本,或根据文本说明创建图像。 LLM 可以立即使用嵌入,你可以将嵌入存储在矢量数据库,以便根据需要为 LLM 提供语义存储。

嵌入的用例

本部分列出了嵌入的主要用例。

使用自己的数据改进完成相关性

使用自己的数据库为数据生成嵌入,并将其与 LLM 集成,使其可用于完成。 嵌入的这种用途是检索增强生成的重要组成部分。

增加提示可容纳的文本量

使用嵌入来增加提示可容纳的上下文量,而无需增加所需的词元数。

例如,假设要在提示中添加 500 页的文本。 这么多原始文本所需的词元量将超过输入词元上限,因此无法直接添加在提示中。 你可以使用嵌入将大量文本汇总和分解为足够小的片段,以能用作一个输入,然后评估每个片段与整个原始文本的相似性。 然后,你可以选择一个最能保留原始文本语义含义的片段,并在提示中使用它,而不会达到词元限制。

执行文本分类、摘要或翻译

使用嵌入来帮助模型了解文本的含义和上下文,然后对文本进行分类、汇总或翻译。 例如,可以使用嵌入来帮助模型将文本分类为正面或负面消息、垃圾邮件或非垃圾邮件,或者新闻或观点。

生成和转录音频

使用音频嵌入处理应用中的音频文件或输入。

例如,语音服务支持一系列音频嵌入,包括语音转文本,以及文本转语音。 可以实时处理音频或批量处理。

将文本转换为图像或将图像转换为文本

语义图像处理需要图像嵌入,这是大多数 LLM 无法生成的。 使用图像嵌入模型(如 ViT )为图像创建矢量嵌入。 然后,可以将这些嵌入与图像生成模型结合使用,以使用文本创建或修改图像,反之亦然。 例如,可以使用 DALL·E 模型生成图像,例如徽标、人脸、动物和景观。

生成或记录代码

通过将不同的代码或文本表达式转换为通用表示形式,使用嵌入来帮助模型从文本创建代码,反之亦然。 例如,可以使用嵌入来帮助模型使用 C# 或 Python 生成或记录代码。

选择嵌入模型

使用 AI 嵌入模型为原始数据生成嵌入,该模型可将非数值数据编码为矢量(长数字数组)。 该模型还可以将嵌入解码为与原始数据具有相同或相似含义的非数值数据。 你可以使用的嵌入模型有很多,OpenAI 的 text-embedding-ada-002 模型是最常用的模型之一。 有关更多示例,请参阅 Azure OpenAI 上提供的嵌入模型列表。

在矢量数据库中存储和处理嵌入

生成嵌入后,需要一种方法来存储它们,以便稍后调用 LLM 来检索它们。 矢量数据库旨在存储和处理矢量,因此它们是嵌入的自然家园。 不同的矢量数据库提供不同的处理功能,因此应根据原始数据和目标选择一个。 有关选项的信息,请参阅可用的矢量数据库解决方案

在 LLM 解决方案中使用嵌入

构建基于 LLM 的应用程序时,可以使用语义内核集成嵌入模型和矢量存储,以便快速拉取文本数据,并生成和存储嵌入。 这样,便可以使用矢量数据库解决方案来存储和检索语义存储。