E5 – 基于双向编码器表示的嵌入
编辑E5 – 基于双向编码器表示的嵌入
编辑基于双向编码器表示的嵌入(E5)是一个自然语言处理模型,它允许您使用密集向量表示来执行多语言语义搜索。此模型推荐用于非英语文档和查询。如果您想对英语文档执行语义搜索,请使用 ELSER 模型。
语义搜索 提供基于上下文含义和用户意图的搜索结果,而不是精确的关键词匹配。
E5 有两个版本:一个跨平台版本,可在任何硬件上运行;另一个版本针对 Intel® 芯片进行了优化。在 模型管理 > 已训练模型 页面上,您可以根据集群的硬件查看推荐部署的 E5 版本。但是,推荐使用 推理 API 将 E5 作为服务,这使得模型的下载和部署更加容易,您无需在不同版本之间进行选择。
请参阅 HuggingFace 上 multilingual-e5-small 和 multilingual-e5-small-optimized 模型的模型卡片,以获取更多信息,包括许可信息。
要求
编辑要使用 E5,您必须拥有用于语义搜索的 相应订阅 等级或已激活试用期。
建议为您的 E5 部署启用已训练模型自动缩放。请参阅 已训练模型自动缩放 以了解更多信息。
下载和部署 E5
编辑下载和部署 E5 最简单且推荐的方法是使用 推理 API。
- 在 Kibana 中,导航到 开发控制台。
-
通过运行以下 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 的替代方法
编辑您还可以从 机器学习 > 已训练模型、从 搜索 > 索引 或通过在开发控制台中使用已训练模型 API 下载和部署 E5 模型。
在大多数情况下,首选版本是 针对 Intel 和 Linux 优化的 模型,建议下载并部署该版本。
使用“已训练模型”页面
使用“已训练模型”页面
编辑- 在 Kibana 中,导航到 机器学习 > 已训练模型。E5 可以在已训练模型列表中找到。有两个版本可用:一个便携式版本,可在任何硬件上运行;另一个版本针对 Intel® 芯片进行了优化。您可以根据硬件配置查看推荐使用的模型。
-
单击 添加已训练模型 按钮。在打开的模式窗口中选择要使用的 E5 模型版本。根据您的硬件配置推荐的模型会高亮显示。单击 下载。您可以在 通知 页面上检查下载状态。
或者,单击已训练模型列表中 操作 下的 下载模型 按钮。
- 下载完成后,单击 开始部署 按钮开始部署。
-
提供部署 ID,选择优先级,并设置每个分配的分配数量和线程数。
- 单击开始。
使用搜索索引 UI
使用搜索索引 UI
编辑或者,您可以使用搜索索引 UI 将 E5 模型下载并部署到推理管道。
- 在 Kibana 中,导航到 搜索 > 索引。
- 从列表中选择具有要使用 E5 的推理管道的索引。
- 导航到 管道 选项卡。
-
在 机器学习推理管道 下,单击 使用 E5 提升您的结果 部分中的 部署 按钮以开始下载 E5 模型。这可能需要几分钟时间,具体取决于您的网络。
-
下载模型后,单击 启动单线程 按钮以使用基本配置启动模型,或选择 微调性能 选项以导航到 已训练模型 页面,您可以在该页面上配置模型部署。
部署并启动 E5 模型后,即可在管道中使用它。
在开发控制台中使用已训练模型 API
在开发控制台中使用已训练模型 API
编辑- 在 Kibana 中,导航到 开发控制台。
-
通过运行以下 API 调用来创建 E5 模型配置
PUT _ml/trained_models/.multilingual-e5-small { "input": { "field_names": ["text_field"] } }
如果尚未下载模型,则 API 调用会自动启动模型下载。
-
使用 启动已训练模型部署 API 和部署 ID 部署模型
POST _ml/trained_models/.multilingual-e5-small/deployment/_start?deployment_id=for_search
在隔离环境中部署 E5 模型
编辑如果要在隔离环境中安装 E5,则有以下选项:* 将模型工件放入所有主节点候选节点上的 config 目录内的目录中(对于 multilingual-e5-small
和 multilingual-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
使用基于文件的访问
编辑对于基于文件的访问,请按照以下步骤操作
- 下载 模型工件文件。
- 将文件放入 Elasticsearch 部署的
config
目录内的models
子目录中。 -
通过将以下行添加到
config/elasticsearch.yml
文件中,将 Elasticsearch 部署指向模型目录xpack.ml.model_repository: file://${path.home}/config/models/`
- 在所有主节点候选节点上重复步骤 2 和步骤 3。
- 重启 主节点候选节点,一次一个。
- 导航到 Kibana 中的 已训练模型 页面,E5 可以在已训练模型列表中找到。
- 单击 添加已训练模型 按钮,选择您在步骤 1 中下载并想要部署的 E5 模型版本,然后单击 下载。所选模型将从您在步骤 2 中放置的模型目录下载。
- 下载完成后,单击 开始部署 按钮开始部署。
- 提供部署 ID,选择优先级,并设置每个分配的分配数量和线程数。
- 单击 启动。
使用 HuggingFace 代码库
编辑您可以通过将 eland_import_hub_model
脚本指向模型的本地文件,在受限或封闭网络中安装 multilingual-e5-small
模型。
对于离线安装,首先需要在本地克隆模型,系统中需要安装 Git 和 Git 大型文件存储。
-
使用模型 URL 从 Hugging Face 克隆 E5 模型。
git clone https://hugging-face.cn/elastic/multilingual-e5-small
该命令会在
multilingual-e5-small
目录中生成模型的本地副本。 -
使用
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 后,模型将具有由
--es-model-id
指定的 ID。如果未设置,则模型 ID 来自--hub-model-id
;空格和路径分隔符将转换为双下划线__
。
免责声明
编辑客户可以添加第三方已训练模型以在 Elastic 中进行管理。Elastic 不拥有这些模型。虽然 Elastic 将根据文档支持与这些模型的集成性能,但您理解并同意 Elastic 对第三方模型或它们可能使用的底层训练数据没有控制权或责任。
根据定义,此 e5 模型与我们的其他 Elastic 软件一起托管、集成和使用,受我们的标准保修范围。