Skip to main content
Elasticsearch 是一个分布式、RESTful 搜索和分析引擎。它提供了一个分布式、多租户的全文搜索引擎,具有 HTTP Web 接口和无模式的 JSON 文档。它支持关键词搜索、向量搜索、混合搜索和复杂过滤。
ElasticsearchRetriever 是一个通用包装器,旨在通过 Query DSL 灵活访问所有 Elasticsearch 功能。对于大多数用例,其他类(ElasticsearchStoreElasticsearchEmbeddings 等)应该就足够了,但如果它们不满足需求,你可以使用 ElasticsearchRetriever 本指南将帮助你开始使用 Elasticsearch 检索器。有关所有 ElasticsearchRetriever 功能和配置的详细文档,请访问 API 参考

集成详情

设置

设置 Elasticsearch 实例有两种主要方式:
  • Elastic Cloud:Elastic Cloud 是一个托管的 Elasticsearch 服务。注册 免费试用。 要连接到不需要登录凭据的 Elasticsearch 实例(使用启用安全功能的 docker 实例启动),请将 Elasticsearch URL、索引名称以及嵌入对象传递给构造函数。
  • 本地安装 Elasticsearch:通过在本地运行 Elasticsearch 来开始使用。最简单的方法是使用官方 Elasticsearch Docker 镜像。更多信息请参阅 Elasticsearch Docker 文档
如果你想从单个查询中获得自动跟踪,也可以通过取消注释以下内容来设置你的 LangSmith API 密钥:

安装

此检索器位于 langchain-elasticsearch 包中。为了演示目的,我们还将安装 langchain-community 来生成文本嵌入

配置

这里我们定义与 Elasticsearch 的连接。在这个例子中,我们使用一个本地运行的实例。或者,你可以在 Elastic Cloud 中创建一个账户并开始 免费试用
对于向量搜索,我们将使用随机嵌入仅作说明。对于实际用例,请选择可用的 LangChain 嵌入类之一。

定义示例数据

索引数据

通常,用户在 Elasticsearch 索引中已有数据时使用 ElasticsearchRetriever。这里我们索引一些示例文本文档。如果你使用 ElasticsearchStore.from_documents 创建了索引,那也是可以的。

实例化

向量搜索

在此示例中使用假嵌入进行密集向量检索。

BM25

传统关键词匹配。

混合搜索

使用倒数排名融合 (RRF) 结合向量搜索和 BM25 搜索来合并结果集。

模糊匹配

具有拼写容错的关键词匹配。

复杂过滤

不同字段过滤器的组合。
注意查询匹配排在最前面。通过过滤器的其他文档也在结果集中,但它们的分数都相同。

自定义文档映射器

可以自定义将 Elasticsearch 结果(命中)映射到 LangChain 文档的函数。

用法

遵循上述示例,我们使用 invoke 发出单个查询。

API 参考

有关所有 ElasticsearchRetriever 功能和配置的详细文档,请访问 API 参考