加载中

E5

EmbEddings from bidirEctional Encoder rEpresentations(双向编码器表示的嵌入)——即 E5——是一个自然语言处理模型,可让您通过稠密向量表示执行多语言语义搜索。建议将此模型用于非英语文档和查询。如果您想对英语文档执行语义搜索,请使用 ELSER 模型。

语义搜索基于上下文含义和用户意图(而非精确的关键词匹配)为您提供搜索结果。

E5 有两个版本:一个可在任何硬件上运行的跨平台版本,以及一个针对 Intel® 芯片进行优化的版本。模型管理 (Model Management) > 已训练模型 (Trained Models) 页面会根据您集群的硬件显示建议部署哪个版本的 E5。不过,建议使用 E5 的方式是通过 推理 API (inference API) 作为一项服务来使用,这使得下载和部署模型更加容易,并且您无需从不同的版本中进行选择。

有关包括许可在内的更多信息,请参阅 HuggingFace 上的 multilingual-e5-smallmultilingual-e5-small-optimized 模型卡。

要使用 E5,您必须具备适用于语义搜索的适当订阅级别,或者已激活试用期。

建议为您的 E5 部署启用已训练模型自动扩缩容。请参阅已训练模型自动扩缩容以了解更多信息。

下载和部署 E5 最简单且推荐的方法是使用推理 API

  1. 在 Kibana 中,导航至 Dev Console
  2. 通过运行以下 API 请求,使用 elasticsearch 服务创建一个推理端点
				PUT _inference/text_embedding/my-e5-model
					    {
      "service": "elasticsearch",
      "service_settings": {
        "num_allocations": 1,
        "num_threads": 1,
        "model_id": ".multilingual-e5-small"
      }
    }
		

该 API 请求会自动启动模型下载并随后部署模型。

请参阅 elasticsearch 推理服务文档以了解有关可用设置的更多信息。

创建 E5 推理端点后,它就可以用于语义搜索了。在 Elastic Stack 中执行语义搜索的最简单方法是遵循 semantic_text 工作流

您还可以从 Trained models 页面、Search > Indices 中下载和部署 E5 模型,或者在 Dev Console 中使用已训练模型 API。

注意

在大多数情况下,首选版本是 Intel 和 Linux 优化版模型,建议下载和部署该版本。

如果您想在隔离环境中安装 E5,您有以下选项

  • 将模型工件放入所有符合主节点资格的节点的 config 目录中的一个目录中(适用于 multilingual-e5-smallmultilingual-e5-small-linux-x86-64
  • 使用 HuggingFace 安装模型(仅适用于 multilingual-e5-small 模型)。

对于 multilingual-e5-small 模型,您的系统中需要以下文件

https://ml-models.elastic.co/multilingual-e5-small.metadata.json
https://ml-models.elastic.co/multilingual-e5-small.pt
https://ml-models.elastic.co/multilingual-e5-small.vocab.json
		

对于优化版本,您的系统中需要以下文件

https://ml-models.elastic.co/multilingual-e5-small_linux-x86_64.metadata.json
https://ml-models.elastic.co/multilingual-e5-small_linux-x86_64.pt
https://ml-models.elastic.co/multilingual-e5-small_linux-x86_64.vocab.json
		

对于基于文件的访问,请按以下步骤操作

  1. 下载模型工件文件

  2. 将文件放入 Elasticsearch 部署的 config 目录内的 models 子目录中。

  3. 通过将以下行添加到 config/elasticsearch.yml 文件中,将您的 Elasticsearch 部署指向模型目录

    xpack.ml.model_repository: file://${path.home}/config/models/
    		
  4. 在所有可成为主节点的节点上重复步骤 2 和步骤 3。

  5. 逐个重启可成为主节点的节点。

  6. 从主菜单导航至 Kibana 中的 Trained Models 页面,或使用全局搜索框。E5 可以在已训练模型列表中找到。

  7. 点击 Add trained model 按钮,选择您在第 1 步中下载且要部署的 E5 模型版本,然后点击 Download。所选模型将从您在第 2 步中放入的模型目录中下载。

  8. 下载完成后,点击 Start deployment 按钮启动部署。

  9. 提供部署 ID,选择优先级,并设置分配数以及每个分配的线程数的值。

  10. 点击 Start(开始)

您可以通过将 eland_import_hub_model 脚本指向模型的本地文件,在受限或封闭网络中安装 multilingual-e5-small 模型。

对于离线安装,首先需要将模型克隆到本地,您的系统中必须安装 Git 和 Git Large File Storage

  1. 使用模型 URL 从 Hugging Face 克隆 E5 模型。

    git clone https://hugging-face.cn/intfloat/multilingual-e5-small
    		

    该命令会在 multilingual-e5-small 目录中生成模型的本地副本。

  2. 使用将 --hub-model-id 设置为克隆模型目录的 eland_import_hub_model 脚本来安装它

    eland_import_hub_model \
          --url 'XXXX' \
          --hub-model-id /PATH/TO/MODEL \
          --task-type text_embedding \
          --es-username elastic --es-password XXX \
          --es-model-id multilingual-e5-small
    		

    如果您使用 Docker 镜像运行 eland_import_hub_model,则必须绑定挂载模型目录,以便容器能够读取这些文件。

    docker run --mount type=bind,source=/PATH/TO/MODELS,destination=/models,readonly -it --rm docker.elastic.co/eland/eland \
        eland_import_hub_model \
          --url 'XXXX' \
          --hub-model-id /models/multilingual-e5-small \
          --task-type text_embedding \
          --es-username elastic --es-password XXX \
          --es-model-id multilingual-e5-small
    		

    上传到 Elasticsearch 后,模型将拥有由 --es-model-id 指定的 ID。如果未设置该参数,模型 ID 将派生自 --hub-model-id;空格和路径分隔符将转换为双下划线 __

客户可以添加第三方已训练模型以在 Elastic 中进行管理。这些模型不由 Elastic 所有。虽然 Elastic 将根据文档支持与这些模型在性能方面的集成,但您理解并同意,Elastic 对这些模型或它们可能利用的基础训练数据没有控制权,也不承担任何责任。

此 e5 模型在与其他 Elastic 软件一起定义、托管、集成和使用时,受我们的标准保修条款涵盖。

© . This website operates independently and is not affiliated with or endorsed by Elasticsearch B.V. All brand names, logos, and trademarks are the property of their respective owners.