什么是 Elasticsearch 相关性引擎 (ESRE)?
编辑什么是 Elasticsearch 相关性引擎 (ESRE)?编辑
软件开发人员越来越多地使用机器学习模型来提高向用户呈现的数据的相关性。这对于使用自然语言接口的应用程序尤其如此,例如:搜索、问答、完成和聊天。
Elasticsearch 相关性引擎 (ESRE) 是 Elastic 的一组工具,它将机器学习模型、数据转换和存储(包括向量)以及数据搜索和检索结合在一起。ESRE 还包括用于数据安全性的工具以及与其他软件(包括各种数据源和大型语言模型 (LLM))集成的工具。
继续阅读以了解 ESRE 的组件,或直接跳到 示例 以了解示例应用程序和实现。
机器学习模型编辑
机器学习模型使您的应用程序能够理解自然语言数据并丰富或转换这些数据(在索引时和在查询时)。
机器学习模型的用途包括
- 生成向量嵌入
- 从非结构化文本中提取信息,例如命名实体或对问题的回答
- 对文本进行分类,例如其语言或其情绪(正面或负面)
要执行这些操作,您必须部署一个或多个经过训练的模型。
Elastic 提供以下相关功能
- Elastic Sparse Encoder 经过训练的模型,用于通用语义搜索,无需微调
- 用于部署和管理第三方经过训练的模型以进行向量搜索和自然语言处理的接口
- 用于部署这些模型的云基础设施
Elastic Sparse Encoder 模型编辑
Elastic Sparse Encoder 模型是 Elastic 构建和训练的机器学习模型,它可以为英语语言数据启用通用语义搜索。
在索引时,Elastic Sparse Encoder 模型使用加权标记为每个文档丰富一个额外的文本扩展字段,以捕获单词与其含义之间的关系。在查询时,使用 文本扩展查询 时,稀疏编码器模型对用户的查询文本应用相同的转换。结果是语义搜索:相关性基于含义和意图,而不是基于原始文档字段的严格关键字匹配。
Elastic Sparse Encoder 模型是一个零样本域外机器学习模型,这意味着它不需要使用您自己的数据进行额外的训练或微调。使用此 Elastic 模型开始使用语义搜索,而无需识别和管理其他模型。
部署模型,使用推理处理器创建一个管道,并通过管道摄取(或重新索引)您的数据。
文档
第三方模型管理编辑
许多公共和私有经过训练的模型可用于丰富您的数据,每个模型都解决不同的问题。例如,Hugging Face 归档了数千种可用模型。
要将第三方模型与 Elastic 一起使用,您必须导入和部署模型,然后创建一个包含推理处理器的摄取管道以执行数据转换。
Elastic 提供以下接口来管理您正在使用的经过训练的模型
- 在 机器学习 > 模型管理 > 经过训练的模型 中的 Kibana UI
- Elasticsearch API 分组在
/_ml/trained_models/
下 - 用 Python 实现的 Eland 语言客户端
文档:部署经过训练的模型
Elastic Cloud ML 实例编辑
Elastic Cloud 包括用于部署和运行经过训练的模型的基础设施。在创建 Elastic Cloud 部署时,启用机器学习实例,并可以选择启用自动缩放。
文档:设置机器学习功能
数据存储编辑
Elastic 提供存储各种类型数据的功能,包括非结构化文本和密集向量(嵌入)。在机器学习模型转换数据之前和之后,使用 Elastic 存储您的数据。
索引编辑
Elastic 将数据存储为索引中的文档(带有字段),并支持多种字段类型,包括密集向量。映射是定义如何存储和索引文档及其包含的字段的过程。
使用索引和文档 API 或 Kibana 开发工具控制台手动管理数据。某些摄取工具,例如网络爬虫和连接器,会代表您管理索引和文档。
使用重新索引 API 重新索引已存储在 Elasticsearch 中的数据,例如,将数据运行到机器学习摄取管道中。
文档
向量字段类型编辑
要存储用于向量搜索的密集向量,请使用密集向量字段类型。在查询时,使用 kNN 查询 来检索此信息。
要存储用于文本扩展的稀疏向量(例如,在使用 Elastic Sparse Encoder 模型 时),请使用稀疏向量字段类型。在查询时,使用 文本扩展查询 来检索此信息。
文档
数据转换编辑
Elastic 提供用于转换数据的工具,无论数据如何存储(在 Elastic 内部或外部)。
摄取管道是通用转换工具,而推理处理器允许在这些管道中使用机器学习模型。
在部署机器学习模型后,使用这些摄取工具在索引或重新索引文档时将 ML 转换应用于您的数据。提取文本,对文档进行分类,或创建嵌入并将此数据存储在其他字段中。
摄取管道编辑
摄取管道使您能够将传入数据“管道”到一系列处理器中,这些处理器在存储之前会转换数据。使用摄取管道用其他字段丰富文档,包括机器学习模型生成的字段。使用推理处理器在管道中使用经过训练的模型。
文档:摄取管道
推理处理器编辑
推理处理器是在索引或重新索引期间使用已部署的经过训练的模型来转换传入数据的管道任务。
文档:推理处理器
搜索和检索编辑
在使用机器学习模型用其他字段或嵌入丰富文档后,从各种检索方法中选择,这些方法利用这些附加数据。
使用 Elastic 进行密集向量 (kNN) 或稀疏向量 (Elastic Sparse Encoder) 的语义搜索,并将这些结果与来自 BM25 文本搜索的结果结合起来,可以选择在其他 NLP 字段上进行提升。
通过相同的 API 终结点执行任何这些检索方法:_search
。
文本 (BM25 + NLP)编辑
使用全文查询搜索由 机器学习模型 丰富过的文档。
Elasticsearch 提供了一种特定于域的语言 (DSL) 用于描述全文搜索查询。使用此查询 DSL 设计全文查询,以定位文档的各个字段。
根据您的用例,使用您通过自然语言处理添加的其他字段来提高结果的相关性。
使用 _search
API 与 query
请求正文参数以使用 Elasticsearch 的查询 DSL 指定搜索查询。例如,match
查询是执行全文搜索的标准查询,包括模糊匹配选项。
文档
文本扩展 (Sparse Encoder)编辑
使用文本扩展查询对由 Elastic Sparse Encoder 模型 丰富过的文档执行语义搜索。
在索引时,Elastic Sparse Encoder 模型使用加权标记为每个文档丰富一个额外的文本扩展字段,以捕获单词与其含义之间的关系。在查询时,文本扩展查询使用稀疏编码器模型对用户的查询文本应用相同的转换。结果是语义搜索:相关性基于含义和意图,而不是基于原始文档字段的严格关键字匹配。
使用 _search
API 与 query
和 query.text_expansion
请求正文参数使用稀疏编码器模型查询文本扩展字段。
文档
向量 (kNN)编辑
使用 k 近邻 (kNN) 搜索检索包含索引向量的文档,例如通过推理处理器添加的文档。
这种类型的搜索会找到与查询向量最接近的k 个向量,通过相似度指标衡量。您将收到与查询最接近的含义的n 个文档,按它们与查询的接近程度排序。
使用 _search
API 与 knn
请求正文参数指定要运行的 kNN 查询。
文档
混合 (RRF)编辑
Elasticsearch 允许您在一个搜索请求中组合任何上述检索方法。
互惠排名融合 (RRF) 是一种将具有不同相关性指标的多个结果集组合成单个结果集的方法。RRF 不需要任何调整,不同的相关性指标也不必相互关联就能获得高质量的结果。
使用带有 retriever
请求体参数、rrf
检索器以及任何组合的 standard
或 knn
检索器的 _search
API。您可以使用多个 standard
或 knn
检索器以及一个 rrf
检索器来指定多个查询。
( 作为 RRF 的替代方案,请使用带有 query
和 knn
请求体参数的 _search
API(没有 retrievers
)来组合向量和文本搜索。使用 boost
参数来管理每种查询类型的权重。这被称为 *线性组合*。)
文档
安全和数据隐私编辑
无论您是实现内部知识库还是与外部 LLM 服务集成,您可能都担心私人应用程序数据的隐私和访问问题。
使用 Elastic 的安全功能来管理哪些人和系统有权访问。
使用基于角色的访问控制,或依靠文档级或字段级安全来进行更细粒度的控制。
基于角色的访问控制 (RBAC)编辑
基于角色的访问控制使您能够通过将权限分配给角色并将角色分配给用户或组来授权用户。
您可以使用内置角色或使用 _security
API 定义您自己的角色。
文档
文档和字段级安全编辑
文档级安全限制用户可以读取的文档,而字段级安全限制用户可以读取的字段。特别是,这些解决方案限制了从基于文档的读取 API 访问哪些文档或字段。
使用 Elasticsearch _security
API 实现文档和字段级安全。
文档
应用程序开发工具编辑
Elastic 还提供各种工具用于通用应用程序开发和集成。
从各种来源摄取数据,使用您首选的编程语言构建搜索体验,避免查询注入攻击,以及发送和查看与用户行为相关的分析。
还可以使用这些工具与第三方服务集成,包括 LangChain 和 OpenAI 或其他大型语言模型 (LLM)。
摄取工具编辑
使用 Elastic 摄取工具来索引和同步来自各种来源的数据,包括应用程序、数据库、网页和内容服务。
文档
或者使用 Elasticsearch 的索引和文档 API 实现您自己的集成。
文档
语言客户端编辑
语言客户端以库的形式提供各种编程语言中的 Elasticsearch API。
将相关库添加到您的应用程序中,以便使用您首选的编程语言构建自定义集成。
Search UI编辑
Elastic Search UI 为 React 应用程序提供状态管理和组件。使用 Search UI 快速为搜索体验制作原型或构建生产级 UI。
Search UI 依靠各种“连接器”库来与 Elasticsearch 和其他搜索引擎交互。使用 Elasticsearch 连接器可以实现与 Elasticsearch 查询的最大兼容性,包括语义搜索和向量搜索。
文档
行为分析编辑
行为分析是一个通用分析平台,用于分析用户行为。将事件数据(例如搜索查询和点击)发送到 Elasticsearch。
使用默认仪表板分析这些事件,或创建您自己的可视化。使用此分析来提高您的搜索相关性和其他应用程序功能。
文档:行为分析
搜索应用程序编辑
搜索应用程序是一个 Elasticsearch 端点,它对应于一个或多个索引,并将查询限制为预定义的模板。
将搜索应用程序与不可信客户端(如 Web 应用程序)一起使用,在这些客户端中您可能容易受到查询注入攻击或其他滥用行为。
文档:搜索应用程序