返回

ELSER 和 BM25 相结合:实现文本查询相关搜索的新思路

后端

ELSER 与 BM25:语义搜索的新时代

在当今信息爆炸的时代,我们在互联网上查找信息已经成为日常生活不可或缺的一部分。而搜索引擎作为我们快速获取所需信息的重要工具,也一直在不断发展和完善。随着技术进步,语义搜索技术的兴起为搜索引擎带来了新的机遇和挑战。

语义搜索:更加智能的搜索方式

传统搜索引擎主要是通过匹配用户输入的关键词,从海量信息中找到相关的结果。然而,它们往往无法理解用户查询背后的真正意图,有时会返回与用户实际需求不符的结果。而语义搜索则是更加智能的搜索方式,它能够理解用户查询的语义,并返回与之相关的结果。

ELSER:语义搜索的算法基石

ELSER(Elastic Learned Spare EncodeR)是一种语义搜索算法,它可以将文本中的单词和短语编码成向量。通过计算向量之间的相似性,ELSER 可以判断文本之间的相关性。这使得 ELSER 能够在理解用户查询意图的基础上,返回更加相关的搜索结果。

ELSER 与 BM25:强强联手,提升搜索体验

在某些情况下,将语义搜索结果与常规搜索结果相结合,可以获得更好的搜索体验。例如,当用户搜索一个模糊或不确定的查询时,语义搜索可能会返回一些不那么相关的结果,而关键字搜索则可以帮助用户找到一些与查询单词匹配的结果。

为了解决这个问题,Elasticsearch 提供了一种结合 ELSER 和 BM25 的文本查询相关搜索功能。BM25 是一种经典的关键字搜索算法,它能够根据单词在文档中的出现频率和位置,来判断文档的相关性。

ELSER 与 BM25 相结合的优势

  • 更加相关的搜索结果: ELSER能够理解用户查询的意图,并返回与之相关的结果。BM25 能够根据单词在文档中的出现频率和位置,来判断文档的相关性。通过将 ELSER 和 BM25 相结合,Elasticsearch 能够返回更加相关和全面的搜索结果。

  • 更智能的搜索体验: ELSER 和 BM25 相结合的文本查询相关搜索功能,能够帮助用户在不同场景下获得更好的搜索体验。例如,当用户搜索一个模糊或不确定的查询时,语义搜索可能会返回一些不那么相关的结果,而关键字搜索则可以帮助用户找到一些与查询单词匹配的结果。

  • 更强大的搜索引擎: Elasticsearch 通过将 ELSER 和 BM25 相结合,能够在理解用户查询意图的基础上,返回更加相关和全面的搜索结果。这使得 Elasticsearch 成为一个更加强大和智能的搜索引擎,能够满足用户在不同场景下的搜索需求。

如何使用 ELSER 和 BM25 相结合的文本查询相关搜索功能

要使用 ELSER 和 BM25 相结合的文本查询相关搜索功能,您需要在 Elasticsearch 中启用相关设置。具体步骤如下:

  1. 在 Elasticsearch 的配置文件中,找到 search.default_search_type 设置。
  2. search.default_search_type 设置为 query_then_fetch
  3. 重启 Elasticsearch。

启用相关设置后,您就可以在 Elasticsearch 中使用 ELSER 和 BM25 相结合的文本查询相关搜索功能了。

代码示例

{
  "query": {
    "text_query": {
      "query": "我的电脑运行速度慢",
      "auto_expand_synonyms": true,
      "fuzzy_transpositions": true,
      "allow_leading_wildcard": true,
      "similarity": {
        "bm25": {
          "k1": 1.2,
          "b": 0.75
        },
        "elser": {
          "similarity_algorithm": "cosine",
          "embedding_model": "search-elmo"
        }
      }
    }
  }
}

常见问题解答

  1. ELSER 与 BM25 有什么区别?

ELSER 是一种语义搜索算法,能够理解用户查询的意图。BM25 是一种关键字搜索算法,能够根据单词在文档中的出现频率和位置,来判断文档的相关性。

  1. 将 ELSER 与 BM25 相结合有什么好处?

将 ELSER 与 BM25 相结合可以提高搜索结果的相关性,提供更智能的搜索体验,并增强搜索引擎的整体性能。

  1. 如何启用 ELSER 和 BM25 相结合的文本查询相关搜索功能?

在 Elasticsearch 的配置文件中,将 search.default_search_type 设置为 query_then_fetch

  1. ELSER 和 BM25 的相似性算法是什么?

ELSER 使用余弦相似性算法,而 BM25 使用经典的 BM25 相似性算法。

  1. ELSER 使用哪种嵌入模型?

ELSER 支持多种嵌入模型,包括 ELMo、BERT 和 Sentence Transformers。