在自然语言处理(NLP)领域,嵌入已经成为游戏规则的改变者。它们使我们能够将单词和文档转换为计算机可以理解的数字。这些数字表示(称为嵌入)对于理解文本、分析情感和翻译语言等任务至关重要。
本文探讨了LangChain中的嵌入,这是一个用于创建嵌入的用户友好平台。我们将解释什么是嵌入以及它们在人工智能中的工作原理。我们还将深入探讨 LangChain 的嵌入功能以及它如何轻松生成查询和文档的嵌入。
LangChain 不仅仅提供嵌入功能。它与不同的模型集成以提供各种嵌入选项。我们将探讨其中一些集成,例如 GloVeEmbeddings、BERTEmbeddings、Word2VecEmbeddings 和 FastTextEmbeddings 及其优势。
读完本文,您将清楚地了解嵌入、嵌入在 NLP 中的重要性,以及 LangChain 如何简化使用嵌入的过程。让我们深入嵌入的世界,通过 LangChain 释放语言理解的力量。
在自然语言处理 (NLP) 领域,嵌入是一种将文本数据转换为机器学习算法可以理解和处理的数字格式的方法。每个单词(或文档)都会转换为一个高维向量,表示其在数据集中的上下文。这些向量的优点在于它们可以捕获单词之间的语义关系——使用相似的单词将具有相似的向量。
嵌入是许多 NLP 任务的重要方面,包括文本分类、情感分析和语言翻译等。它们帮助我们以类似于人类理解语言的方式对语言数据进行量化和分类。
LangChain 提供了一个强大且易于使用的界面来生成嵌入。但是当我们调用这些函数时,幕后发生了什么?让我们来分解一下。
嵌入查询
当我们调用 ,LangChain 会获取文本字符串“Hello langchain”,并将其转换为数字表示形式 - 嵌入。该函数返回一个数字数组,每个数字代表嵌入空间中的一个维度。
您在数组中看到的是“Hello langchain”的数字表示。它可能看起来像一个随机的数字数组,但这些数字以机器学习模型可以理解的方式编码“Hello langchain”的含义。
嵌入文档
正如我们可以为查询创建嵌入一样,我们也可以为文档创建嵌入。该函数接受一个文本字符串数组并返回其各自嵌入的数组。
在本例中,是一个二维数组,每个子数组都是相应文档的嵌入。
LangChain 提供了多个用于生成嵌入的类,每个类都与不同的模型提供程序集成。
OpenAI 嵌入
该类使用 OpenAI API 创建嵌入。您可以使用 OpenAI 的 API 密钥或 Azure 的 OpenAI API 密钥。以下是如何使用 Azure 的 OpenAI API 密钥的示例:
其他集成
其他集成包括、和。例如,要使用,您可以执行以下操作:
LangChain还提供各种附加功能,例如设置超时、处理速率限制以及处理API错误。
例如,如果您希望LangChain在一定时间后停止等待响应,您可以设置一个超时时间:
在本例中,如果嵌入过程超过 1 秒,LangChain 将停止等待并继续。当处理可能需要一段时间才能处理的大型文档时,或者当您使用缓慢或不可靠的互联网连接时,这尤其有用。
处理速率限制
速率限制是许多 API 提供商实施的一种策略,旨在防止用户在短时间内因过多请求而导致服务器过载。如果超出速率限制,您将收到一条错误消息。
LangChain 提供了一个方便的功能来管理速率限制。您可以在实例化嵌入模型时设置一个选项。此选项允许您指定要向提供程序发出的最大并发请求数。如果超过这个数量,LangChain会自动将您的请求排队,并在之前的请求完成后发送。
以下是如何设置最大并发数为 5 个请求的示例:
处理 API 错误
如果模型提供者返回错误,LangChain 有一个内置机制,可以重试请求最多 6 次,并采用指数退避。这意味着每次重试在再次尝试请求之前等待的时间都是前一次重试的两倍。此策略通常可以帮助成功完成请求,特别是在出现临时网络问题或服务器过载的情况下。
如果要更改最大重试次数,可以在实例化模型时传递一个选项:
在这个例子中,LangChain将重试失败的请求最多10次,然后最终放弃。