E5 – 来自双向编码器表征的嵌入

编辑

来自双向编码器表征的嵌入 - 或 E5 - 是一种自然语言处理模型,使您能够通过使用密集向量表示执行多语言语义搜索。建议将此模型用于非英语语言的文档和查询。如果您想对英语文档执行语义搜索,请使用 ELSER 模型。

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

E5 有两个版本:一个跨平台版本,可在任何硬件上运行,以及一个针对 Intel® 芯片优化的版本。“模型管理” > “已训练模型”页面会根据您的集群硬件显示建议部署的 E5 版本。但是,推荐使用 E5 的方法是通过 推理 API 作为服务,这样可以更轻松地下载和部署模型,并且您无需从不同版本中选择。

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

要求

编辑

要使用 E5,您必须拥有 适用于语义搜索的相应订阅级别或已激活的试用期。

建议为您的 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 工作流

下载和部署 E5 的替代方法
编辑

您还可以从“机器学习” > “已训练模型”、“搜索” > “索引”或通过 Dev Console 中的已训练模型 API 下载和部署 E5 模型。

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

使用“已训练模型”页面
使用“已训练模型”页面
编辑
  1. 在 Kibana 中,导航到“机器学习” > “已训练模型”。E5 可以在已训练模型列表中找到。有两个可用版本:一个可在任何硬件上运行的可移植版本和一个针对 Intel® 芯片优化的版本。您可以根据硬件配置查看建议使用的模型。
  2. 点击“添加已训练模型”按钮。在打开的模态窗口中,选择要使用的 E5 模型版本。根据您的硬件配置推荐给您的模型会被突出显示。点击“下载”。您可以在“通知”页面上查看下载状态。

    Downloading E5

    或者,点击已训练模型列表的“操作”下的“下载模型”按钮。

  3. 下载完成后,点击“开始部署”按钮开始部署。
  4. 提供部署 ID,选择优先级,并设置每次分配的分配数和线程数的值。

    Deploying E5
  5. 点击“开始”。
使用搜索索引 UI
使用搜索索引 UI
编辑

或者,您可以使用搜索索引 UI 下载 E5 模型并将其部署到推理管道。

  1. 在 Kibana 中,导航到“搜索” > “索引”。
  2. 从列表中选择要在其中使用 E5 的推理管道所在的索引。
  3. 导航到“管道”选项卡。
  4. 在“机器学习推理管道”下,点击“使用 E5 改进结果”部分中的“部署”按钮,开始下载 E5 模型。这可能需要几分钟,具体取决于您的网络。

    Deploying E5 in Elasticsearch
  5. 下载模型后,点击“启动单线程”按钮以使用基本配置启动模型,或选择“微调性能”选项以导航到“已训练模型”页面,您可以在其中配置模型部署。

    Start E5 in Elasticsearch

部署并启动 E5 模型后,即可在管道中使用它。

在 Dev Console 中使用已训练模型 API
在 Dev Console 中使用已训练模型 API
编辑
  1. 在 Kibana 中,导航到“Dev Console”。
  2. 通过运行以下 API 调用创建 E5 模型配置

    PUT _ml/trained_models/.multilingual-e5-small
    {
      "input": {
    	"field_names": ["text_field"]
      }
    }

    如果模型尚未下载,API 调用会自动启动模型下载。

  3. 使用 启动已训练模型部署 API 和部署 ID 来部署模型

    POST _ml/trained_models/.multilingual-e5-small/deployment/_start?deployment_id=for_search

在气隙环境中部署 E5 模型

编辑

如果您想在气隙环境中安装 E5,您有以下选项:* 将模型工件放入所有符合主节点条件的节点的配置目录内的目录中(对于 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 中的“已训练模型”页面,E5 可以在已训练模型列表中找到。
  7. 点击“添加已训练模型”按钮,选择您在步骤 1 中下载并要部署的 E5 模型版本,然后点击“下载”。选定的模型将从您在步骤 2 中放入的模型目录中下载。
  8. 下载完成后,点击“开始部署”按钮开始部署。
  9. 提供部署 ID,选择优先级,并设置每次分配的分配数和线程数的值。
  10. 点击“开始”。
使用 HuggingFace 存储库
编辑

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

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

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

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

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

  2. 使用 eland_import_hub_model 脚本,并将 --hub-model-id 设置为克隆模型的目录以进行安装

    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 后,模型的 ID 将由 --es-model-id 指定。如果未设置,则模型 ID 从 --hub-model-id 派生;空格和路径分隔符会转换为双下划线 __

免责声明

编辑

客户可能会添加第三方已训练模型以便在 Elastic 中进行管理。这些模型不归 Elastic 所有。虽然 Elastic 将根据文档支持这些模型在性能方面的集成,但您理解并同意 Elastic 对第三方模型或其可能使用的底层训练数据没有控制权或责任。

此 e5 模型,按照定义,托管、集成并与我们的其他 Elastic 软件结合使用时,均受我们的标准保修条款保护。