E5
EmbEddings from bidirEctional Encoder rEpresentations(双向编码器表示的嵌入)——即 E5——是一个自然语言处理模型,可让您通过稠密向量表示执行多语言语义搜索。建议将此模型用于非英语文档和查询。如果您想对英语文档执行语义搜索,请使用 ELSER 模型。
语义搜索基于上下文含义和用户意图(而非精确的关键词匹配)为您提供搜索结果。
E5 有两个版本:一个可在任何硬件上运行的跨平台版本,以及一个针对 Intel® 芯片进行优化的版本。模型管理 (Model Management) > 已训练模型 (Trained Models) 页面会根据您集群的硬件显示建议部署哪个版本的 E5。不过,建议使用 E5 的方式是通过 推理 API (inference API) 作为一项服务来使用,这使得下载和部署模型更加容易,并且您无需从不同的版本中进行选择。
有关包括许可在内的更多信息,请参阅 HuggingFace 上的 multilingual-e5-small 和 multilingual-e5-small-optimized 模型卡。
要使用 E5,您必须具备适用于语义搜索的适当订阅级别,或者已激活试用期。
建议为您的 E5 部署启用已训练模型自动扩缩容。请参阅已训练模型自动扩缩容以了解更多信息。
下载和部署 E5 最简单且推荐的方法是使用推理 API。
- 在 Kibana 中,导航至 Dev Console。
- 通过运行以下 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 优化版模型,建议下载和部署该版本。
使用已训练模型页面
在 Kibana 中,从主菜单导航至 Trained Models 页面,或使用全局搜索框。E5 可以在已训练模型列表中找到。有两个可用版本:一个可在任何硬件上运行的便携版本,另一个针对 Intel® 芯片进行了优化的版本。您可以根据您的硬件配置查看建议使用的模型。
点击 Add trained model 按钮。在打开的模态窗口中选择您要使用的 E5 模型版本。根据您的硬件配置为您推荐的模型会被高亮显示。点击 Download。您可以在 Notifications 页面上检查下载状态。
或者,点击已训练模型列表中 Actions 下方的 Download model 按钮。
- 点击 Start。
使用搜索索引 UI
或者,您可以使用搜索索引 UI 将 E5 模型下载并部署到推理管道中。
在 Kibana 中,导航至 Search > Indices。
从列表中选择包含您要使用 E5 的推理管道的索引。
导航至 Pipelines 选项卡。
在 Machine Learning Inference Pipelines 下,点击 Improve your results with E5 部分中的 Deploy 按钮以开始下载 E5 模型。根据您的网络情况,这可能需要几分钟时间。
模型下载完成后,点击 Start single-threaded 按钮以使用基本配置启动模型,或者选择 Fine-tune performance 选项导航至 Trained Models 页面,您可以在该页面上配置模型部署。
部署并启动 E5 模型后,即可在管道中使用它。
在 Dev Console 中使用已训练模型 API
- 在 Kibana 中,导航至 Dev Console。
- 通过运行以下 API 调用创建 E5 模型配置
PUT _ml/trained_models/.multilingual-e5-small
{
"input": {
"field_names": ["text_field"]
}
}
如果尚未下载模型,该 API 调用会自动启动模型下载。
- 使用带有部署 ID 的 启动已训练模型部署 API 部署模型
POST _ml/trained_models/.multilingual-e5-small/deployment/_start?deployment_id=for_search
如果您想在隔离环境中安装 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 中的 Trained Models 页面,或使用全局搜索框。E5 可以在已训练模型列表中找到。
点击 Add trained model 按钮,选择您在第 1 步中下载且要部署的 E5 模型版本,然后点击 Download。所选模型将从您在第 2 步中放入的模型目录中下载。
下载完成后,点击 Start deployment 按钮启动部署。
提供部署 ID,选择优先级,并设置分配数以及每个分配的线程数的值。
点击 Start(开始)。
您可以通过将 eland_import_hub_model 脚本指向模型的本地文件,在受限或封闭网络中安装 multilingual-e5-small 模型。
对于离线安装,首先需要将模型克隆到本地,您的系统中必须安装 Git 和 Git Large File Storage。
使用模型 URL 从 Hugging Face 克隆 E5 模型。
git clone https://hugging-face.cn/intfloat/multilingual-e5-small该命令会在
multilingual-e5-small目录中生成模型的本地副本。使用将
--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 软件一起定义、托管、集成和使用时,受我们的标准保修条款涵盖。