AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


以下是一些与嵌入(Embedding)相关的资源:
发布日期:2024-06-12 22:29:55 浏览次数: 1965 来源:barry的异想世界


基于大型语言模型的应用涉及需要理解的三个关键技术:提示工程、嵌入和微调。其中,嵌入是大型语言模型理解文本语义的关键技术,广泛应用于搜索引擎、私人知识型问答系统、内容推荐系统等。

嵌入(Embedding)的基本概念

什么是嵌入?根据OpenAI的官方文档:“嵌入是将概念转化为数字序列的数值表示,使得计算机能容易理解这些概念之间的关系。”

简单来说,嵌入就是将概念转化为数字序列,使得计算机能够理解这些概念之间的关系。

嵌入还表示文本语义的高密度信息表示,每个嵌入都是一个浮点数向量。在向量空间中,两个嵌入之间的距离与原始格式下两个输入的语义相似度相关。例如,如果两段文本相似,它们的向量表示也应该相似。向量空间中的这种向量表示数组描述了文本之间微妙的特征差异。

总的来说,嵌入帮助计算机理解人类信息所表示的“含义”。嵌入可以用来捕捉文本、图像、视频或其他信息形式的特征之间的“相关性”,常用于搜索、推荐、分类和聚类等任务。

嵌入(Embedding)是如何工作的?

以三个句子为例:

  1. "猫追逐老鼠。"

  2. "小猫捕猎啮齿动物。"

  3. "我喜欢火腿三明治。"

如果让人来分类这些句子,第一句和第二句在意义上几乎相同,而第三句则完全不同。然而,当我们查看原始的英文句子时,第一句和第二句只共享了 "The" 这个词,没有其他共同的词汇。那么,计算机是如何理解前两个句子之间的相关性的呢?

嵌入将离散信息(单词和符号)压缩成分布式连续值数据(向量)。如果我们在图表上绘制这些短语,可能会是这样的:

通过使用嵌入将文本压缩成多维向量空间,让计算机能够理解,由于语义相似,句子1和2会彼此靠近。而句子3因为无关,会更远离它们。如果我们引入第四个短语 "Sally 吃瑞士奶酪",它可能会存在于句子3(奶酪可以放在三明治里)和句子1(老鼠喜欢瑞士奶酪)之间。

在这个例子中,我们只有两个维度:X轴和Y轴。实际上,嵌入模型提供更多的维度来表示人类语言的复杂性。例如,OpenAI的嵌入模型 "text-embedding-ada-002" 输出1536个维度,这足以让计算机理解文本中的微妙语义差异。在分类相似文本时,三维空间可能看起来像下面的图像(见下图),其中关于动物、运动员、电影、车辆和村庄的文本会更接近。

嵌入式的优势是什么?

尽管ChatGPT擅长回答问题,但其范围仅限于训练期间记忆的数据。GPT在训练数据之外、特定领域知识(如医学、法律、金融)或组织内部的非公开数据方面表现不佳。

GPT学习新知识的两种方式是:

  1. 模型权重(在训练集上进行微调)。

  2. 模型输入(使用知识作为 Few-Shot 提示)。

虽然微调可能感觉更自然,因为它允许模型从数据中学习所有知识,但在事实回忆方面并不可靠。打个比方,将大型模型想象成参加考试的学生。模型权重就像长期记忆;当你微调模型时,就像提前一周准备考试。当考试来临时,模型可能会遗漏之前学到的知识,或者回答它从未被教授的问题。

另一方面,使用嵌入就像学生没有准备就去考试,但带着作弊纸。面对问题时,学生只需查看作弊纸就能准确回答。而且,考试结束后,作弊纸会被丢弃,不占用任何记忆。这个过程简单而高效(技术实现也是如此)。

然而,这种“作弊纸”方法也有局限性。每次学生参加考试时,他们只能带几页笔记,无法携带所有学习材料。这是因为大型模型的单个单词输入大小(最大令牌数)。GPT-3.5的令牌限制为4K(相当于5页),而稍后发布的GPT-4将此限制提高了八倍,支持高达32K令牌(相当于40页)。

那么,当处理远超这个令牌限制的大型数据集时会发生什么呢?这就是基于嵌入式+上下文注入的语义检索策略发挥作用的地方。

在我之前的文章“为什么GPT-4与微软新必应的集成效果不如预期?”中,我简要解释了嵌入在搜索引擎中的应用。接下来,让我们以一个基于嵌入构建本地知识问答系统的例子为例,其原理类似。简单来说,它包括三个步骤:

步骤1:数据准备

  • 收集: 准备本地知识库,提供所需文本,如文章、报告、日记、博客文章、网页、研究论文等。

  • 切分: 将整个文档拆分为更小的文本片段(块)。

  • 嵌入: 使用OpenAI API或本地嵌入模型将文本片段向量化为多维数组。

  • 存储: 对于大型数据集,存储向量数组以备后续检索。对于较小的数据集,可以选择临时存储。

步骤2:语义检索

  • 使用OpenAI Embedding API或本地嵌入模型将用户的问题向量化。

  • 通过相似性度量(如余弦相似度或欧几里得距离算法)查询与问题最相似的文本片段。

步骤3:文本注入与回答

  • 将用户的问题以及检索到的最相似文本片段(TopK)作为上下文提示注入LLM。

  • LLM根据用户的问题和注入的少量示例提示进行回答。

以下是实现过程的流程图:

嵌入式语义检索与基于关键词检索的优势对比:

  1. 语义理解: 嵌入式检索能捕捉词之间的语义关系,使模型能够理解词汇间的语义联系。基于关键词的检索往往侧重于字面匹配,可能忽视了词之间的语义关系。

  2. 鲁棒性: 嵌入式方法在处理拼写错误、同义词和近义词时表现更好,因为它们能理解词的关系。基于关键词的检索方法在处理这类情况时可能较弱。

  3. 多语言支持: 许多嵌入式方法支持多种语言,便于跨语言文本检索。例如,可以使用中文输入查询英文文本内容,这对于基于关键词的检索方法来说是一个挑战。

  4. 语境理解: 嵌入式方法在处理一词多义(一个词有多种含义)时具有优势,因为它们可以根据上下文为词分配不同的向量表示。基于关键词的检索方法可能难以区分同一词在不同语境中的含义。

关于语境理解,人类使用词汇和符号进行交流,但孤立的词往往缺乏意义。我们需要借助共享的知识和经验来理解它们。例如,句子“你应该Google一下”只有当你知道“Google”是一个搜索引擎并且人们常将其用作动词时才有意义。同样,有效的自然语言模型必须能够在不同语境中理解每个词、短语、句子或段落的可能含义。

嵌入检索的限制:

  1. 输入令牌限制: 即使采用嵌入向量方法,仍存在输入令牌限制的挑战。当检索涉及大量文本时,为了限制上下文注入的令牌数量,通常会限制TopK检索中的“K”值,这可能导致信息丢失。

  2. 仅限文本数据: 目前,GPT-3.5和许多大型模型不具备图像识别能力。然而,许多知识检索任务需要结合文本信息和图像理解,例如学术论文中的插图或财务报告。

  3. 可能产生虚构内容: 当检索到的相关文档内容不足以支持大型模型回答问题时,模型可能会尝试进行一些“创造性写作”来尝试给出答案。

然而,针对这些问题已有相应的解决方案:

  1. 令牌限制: “使用RMT扩展Transformer至1M令牌及更远”的论文探讨了使用循环内存技术来有效地将模型的上下文长度扩展到200万个令牌,同时保持高精度。此外,像LangChain这样的应用实施了工程解决方案,有效地绕过了令牌限制。

  2. 多模态理解: 除了GPT-4的图像理解,有开源项目如Mini-GPT4,结合BLIP-2,可以实现基本的图像理解。这一问题预计在不久的将来会得到解决。

  3. 虚构问题: 这个问题可以在提示层面解决。例如,添加一行提示:“如果你不知道答案,就直接说不知道,不要尝试编造答案。”

在实际应用开发和实施中,仍有许多挑战需要解决:

  • 问题阶段的摘要导致信息丢失的问题。

  • 不同应用场景中相似性算法的选择。

  • 传输文档可信度的评分策略。

  • 在Prompt模板层中不同模型的工程考量。

  • 注入上下文后,文档分段对问答影响等。

以下是一些与嵌入(Embedding)相关的资源:

矢量数据库:为了快速搜索大量矢量,我们建议使用矢量数据库。你可以在GitHub Cookbook中找到与OpenAI API一起使用的矢量数据库示例。

可用的矢量数据库选项包括:

  • Pinecone,一个全托管的矢量数据库。

  • PGVector,一个免费使用的矢量数据库。

  • Weaviate,一个开源的矢量搜索引擎。

  • Qdrant,一个矢量搜索引擎。

  • Milvus,为可扩展的相似性搜索设计的矢量数据库。

  • Chroma,一个开源的嵌入式存储库。

  • Typesense,一个快速、开源的矢量搜索引擎。

  • Zilliz,由Milvus支持的数据基础设施。

文本矢量化工具:Text2vec

文本相似性比较算法:

  • 余弦距离

  • L2平方距离

  • 点积距离

  • 汉明距离



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

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

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

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询