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

集成详情

设置

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

安装

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

配置

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

定义示例数据

索引数据

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

实例化

向量搜索

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

BM25

传统的关键词匹配。

混合搜索

结合向量搜索和 BM25 搜索,并使用 Reciprocal Rank Fusion (RRF) 来组合结果集。

模糊匹配

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

复杂过滤

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

自定义文档映射器

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

用法

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

API 参考

有关所有 ElasticsearchRetriever 功能和配置的详细文档,请前往 API reference