首页 > 编程问答 >为什么 Langchain HuggingFaceEmbeddings 模型尺寸与 HuggingFace 上所述的不一样

为什么 Langchain HuggingFaceEmbeddings 模型尺寸与 HuggingFace 上所述的不一样

时间:2024-08-05 15:57:56浏览次数:16  
标签:python langchain large-language-model huggingface

我使用的是 langchain HuggingFaceEmbeddings 模型:dunzhang/stella_en_1.5B_v5。 当我查看 https://huggingface.co/spaces/mteb/leaderboard 时,我可以看到型号是8192。 但当我这样做时

len(embed_model.embed_query("hey you"))

它给了我1024。 请问为什么会有这种差异?


在 langchain 中看到的嵌入维度 (1024) 与在 Hugging Face 模型卡上报告的维度 (8192) 之间存在差异的原因是没有嵌入整个句子,而是嵌入构成句子的标记。

  • 标记化: 像“dunzhang/stella_en_1.5B_v5”这样的语言模型在处理文本时,会先将文本分解成称为 标记 的更小的单元。这些标记可以是词语,也可以是字符,也可以是子词,这取决于具体的模型。

  • 嵌入: 每个标记随后都会被嵌入到一个向量空间中,该空间由模型的 嵌入维度 来定义。在“dunzhang/stella_en_1.5B_v5”的情况下,每个标记都被嵌入到一个 8192 维的向量中。

  • 句子嵌入: 要获得整个句子的嵌入,一种常见的方法是对句子中所有标记的嵌入进行平均化。这就是 langchain 的 HuggingFaceEmbeddings 类所做的操作。

在的例子中,“hey you”这个句子很可能被标记化为两个标记“hey”和“you”。每个标记都被嵌入到一个 8192 维的向量中,然后将这两个向量平均化以产生一个 8192 维的句子嵌入。 但是, embed_query 方法返回的是第一个标记的嵌入,在的情况下,它对应于“hey” 。这就是为什么会看到维度为 1024 的原因,而“hey”这个词的嵌入维度恰好是 1024。

要获得整个句子的 8192 维嵌入,需要使用 embed_documents 方法,即使只有一个句子。

以下是如何操作:

from langchain.embeddings import HuggingFaceEmbeddings

embed_model = HuggingFaceEmbeddings(model_name="dunzhang/stella_en_1.5B_v5")
embeddings = embed_model.embed_documents(["hey you"])

print(len(embeddings[0]))  # 这将输出 8192

在这个例子中, embed_documents 方法将返回一个列表,该列表包含一个 8192 维的单一向量,表示整个句子“hey you”的嵌入。

标签:python,langchain,large-language-model,huggingface
From: 78826381

相关文章

  • 如何获取部署在 Azure 应用服务上并通过 Microsoft 身份提供商进行身份验证的 Python
    我使用PythonDash包构建了一个Web应用程序,并将该应用程序部署在Azure应用服务上。Web应用程序当前通过Azure门户的应用程序服务使用Microsoft身份提供程序进行身份验证。但是如何获取登录用户的详细信息呢?在本地运行时如何验证我的Web应用程序?我当前的登录流......
  • 使用 Python 打印此图案
    1010101010101010使用python打印此我已经尝试过defprint_pattern(rows):foriinrange(rows):start_char='1'ifi%2==0else'0'pattern=''.join(start_charifj%2==0else('0'ifs......
  • python discord bot nextcord 斜线命令 更改语言
    我想根据用户的不和谐语言更改斜杠命令的名称。如果语言是韩语/서버如果语言是英语/服务器像这样。我可以使用ctx.locale更改里面的内容,但我也想更改名称和描述。我应该怎么办?当我问ChatGPT时,他们说的很奇怪,谷歌上也没有任何信息。但是有一个机器人可以根据语言......
  • 学习Python的书籍推荐--《Python编程从入门到实践》
    版权信息:书名:Python编程:从入门到实践(第3版)作者:[美]埃里克·马瑟斯(EricMatthes)译者:袁国忠评价:1.北京邮电大学副教授陈光老师是这样评价的:    编程教学之道,一是重在实践,二是循序渐进一一通过巧妙的实战项目,激发和保持学习的热情,让学习渐入佳境。在这两方......
  • 我可以将 Python 与 javascript 结合起来用于网站或应用程序吗
    我不知道如果j添加Python和javascript可以吗我尝试过。但决定在继续之前询问一下是否可以继续但是如果我只使用javascript还是只使用python会更好吗?我只需要建议或答案将Python与Javascript结合用于网站或应用程序不仅完全可行,而且也是一种非常常见的做法!二者......
  • Python 网络抓取与请求和美丽的汤被需要 javascript 阻止
    我正在尝试从网站上抓取文本。我使用简单的代码:requests.get(url_here)。我的代码直到最近才有效。现在,当我使用请求时,我收到一条消息,而不是获取网站的文本:“该网站需要启用JavaScript!您使用的浏览器不支持JavaScript,或者已关闭JavaScript。“我已验证我的浏览器确实......
  • python实现局域网及广域网私人聊天(Socket库局域网应用)
    引言在当今这个数字化时代,即时通讯已成为我们日常生活的一部分。无论是通过手机还是电脑,人们都在寻找更高效、更私密的沟通方式。想象一下,在你自己的局域网内,与朋友或同事建立一个专属的聊天室,无需担心数据泄露或者被第三方监听。本文将引导你从零开始,利用Python和Socket库......
  • 使用 python 抓取网页
    我有以下网页</div><ahref="https://www.emag.ro/laptop-lenovo-thinkbook-15-iil-cu-procesor-intel-core-i7-1065g7-pana-la-3-90-ghz-15-6-full-hd-16gb-512gb-ssd-intel-iris-plus-graphics-free-dos-mineral-grey-20sm003jrm/pd/DKBK1TMBM/#reviews-section&......
  • Python:需要有关类方法的帮助
    我有一个类“Duck”和“Dog”,如下所示:classDuck:defquack(self):print("quack")classDog:defbark(self):print("Ijustbark")以两种方式定义了另一个类并启动:case:1classItQuacks:def__init__(self,animal):......
  • 查找分层股东关系:在 python 中重构嵌套 if
    我想找到公司之间的股东关系。在下面的示例中,“人员1”直接拥有“公司1”50%的股份,那么需要检查“公司1”是否也拥有其他公司的股份。“公司1”拥有“公司2”50%的股份,“公司3”拥有20%的股份。这意味着“人员1”间接拥有“公司2”和“公司3”的部分股份。此......