介绍一下Elasticsearch 9 新特性:语义检索

Elasticsearch 9.0 在语义搜索领域带来了重大升级,通过原生支持 semantic_text 字段类型、改进的查询方式以及与向量搜索的深度整合,为用户提供了更强大、更灵活的语义检索能力。本文将详细介绍 Elasticsearch 9 的语义检索特性、工作原理,并通过实际测试示例展示如何使用这些新功能。

一、Elasticsearch 9 语义检索核心特性

1. semantic_text 字段类型

Elasticsearch 9 引入了 semantic_text 字段类型,这是一种专为语义搜索设计的字段类型,能够自动处理文本的向量化表示。与传统的 text 字段不同,semantic_text 字段在索引时会自动通过配置的推理模型将文本转换为向量表示,而无需用户手动处理向量转换过程。

关键优势:

  • 开箱即用:只需配置推理端点,无需手动管理向量转换过程
  • 透明处理:自动处理文本扩展和向量化,对用户完全透明
  • 混合搜索:可与传统关键词搜索(BM25)结合使用,提升搜索结果相关性

2. 查询方式扩展

Elasticsearch 9 为语义搜索扩展了多种查询方式:

  1. 原生 semantic 查询:专为语义搜索设计的简洁查询语法
  2. match 查询支持:现在 match 查询也可用于 semantic_text 字段,提供更熟悉的查询体验
  3. knn 查询支持:可直接对 semantic_text 字段执行近似最近邻搜索
  4. sparse_vector 查询:支持稀疏向量搜索技术

3. 性能优化

Elasticsearch 9 基于 Lucene 10 构建,引入了多项性能优化:

  • BBQ(Better Binary Quantization):Elastic 自主研发的二进制量化技术,性能比 OpenSearch 快5倍
  • 硬件加速:利用 SIMD 指令加速向量计算,搜索性能提升30%以上
  • 小端编码优化:向量元素编码从大端改为小端,显著降低暴力搜索延迟

二、语义检索工作原理

Elasticsearch 的语义搜索基于文本扩展(text expansion)技术,其核心流程如下:

  1. 查询扩展:将用户查询输入通过推理模型扩展为包含相关术语的扩展查询
  2. 向量转换:将扩展后的查询转换为向量表示(密集或稀疏向量)
  3. 相似度计算:计算查询向量与文档向量的相似度
  4. 结果排序:根据相似度得分对结果进行排序

与传统的基于关键词的搜索相比,语义搜索能够理解查询的意图和上下文,而不仅仅是匹配字面词汇。例如,搜索"副业"可以匹配到包含"第二收入"的文档,即使文档中没有出现"副业"这个词。

三、测试示例:构建语义搜索系统

1. 环境准备

首先确保已安装 Elasticsearch 9.0 并配置了适当的推理端点。Elasticsearch 提供了开箱即用的 ELSER(Elastic Learned Sparse Encoder)模型,适合英文语义搜索。对于中文,可以使用阿里云的稀疏向量模型。

2. 创建索引

PUT index-songs-semantic
{
  "mappings": {
    "properties": {
      "song_title": {
        "type": "text"
      },
      "artist": {
        "type": "keyword"
      },
      "lyric": {
        "type": "semantic_text",
        "inference_id": ".multilingual-e5-small-elasticsearch" 
      }
    }
  }
}

对于中文场景,可以使用阿里云模型:

PUT alibaba_sparse
{
  "mappings": {
    "properties": {
      "content": {
        "type": "semantic_text",
        "inference_id": "alibabacloud_ai_search_sparse"
      }
    }
  }
}

3. 索引文档

POST index-songs-semantic/_doc/1
{
  "song_title": "...Baby One More Time",
  "artist": "Britney Spears",
  "lyric": "When I'm with you, I lose my mind, give me a sign"
}

POST index-songs-semantic/_doc/2
{
  "song_title": "Crazy",
  "artist": "Britney Spears",
  "lyric": "You drive me crazy, I just can't sleep, I'm so excited, I'm in too deep"
}

4. 执行语义搜索

使用 semantic 查询:

GET index-songs-semantic/_search
{
  "query": {
    "semantic": {
      "field": "lyric",
      "query": "song lyrics about love"
    }
  }
}

使用 match 查询(9.0新特性):

GET index-songs-semantic/_search
{
  "query": {
    "match": {
      "lyric": "song lyrics about love"
    }
  }
}

使用 knn 查询:

GET index-songs-semantic/_search
{
  "query": {
    "knn": {
      "field": "lyric",
      "query_vector": [0.1, 0.2, -0.3, ...],
      "k": 10,
      "num_candidates": 100
    }
  }
}

5. 混合搜索示例

Elasticsearch 9 引入了 Reciprocal Rank Fusion(RRF)技术,可以轻松组合多种搜索技术:

GET index-songs-semantic/_search
{
  "query": {
    "hybrid": {
      "queries": [
        {
          "match": {
            "lyric": "love song"
          }
        },
        {
          "knn": {
            "field": "lyric",
            "query_vector": [0.1, 0.2, -0.3, ...],
            "k": 10,
            "num_candidates": 100
          }
        }
      ],
      "rank": {
        "rrf": {}
      }
    }
  }
}

6. 中文语义搜索示例

使用阿里云模型进行中文语义搜索:

POST _inference/alibabacloud_ai_search_sparse
{
  "input": "阿里巴巴(中国)有限公司成立于2007年03月26日,法定代表人蒋芳"
}

GET alibaba_sparse/_search
{
  "query": {
    "semantic": {
      "field": "content",
      "query": "云资源是什么时候成立的?"
    }
  }
}

四、语义搜索最佳实践

  1. 选择合适的模型

    • 英文:ELSER 模型(开箱即用)
    • 中文:阿里云稀疏向量模型
  2. 混合搜索策略

    • 结合语义搜索与传统关键词搜索(BM25)
    • 使用 RRF 进行结果融合,无需手动调整权重
  3. 性能优化

    • 对于高维向量,启用 BBQ 二进制量化
    • 利用 SIMD 指令加速向量计算
  4. 结果重排序

    • 对初步搜索结果使用 rerank 端点进行精细排序
    POST _inference/alibabacloud_ai_search_rerank
    {
      "query": "阿里巴巴(中国)有限公司是哪一年成立的?",
      "input": [
        "阿里巴巴是全球领先的B2B电子商务网上贸易平台",
        "阿里巴巴(中国)有限公司成立于2007年03月26日,法定代表人蒋芳"
      ]
    }
    
  5. RAG 应用

    • 将语义搜索结果作为大语言模型的上下文
    POST _inference/alibabacloud_ai_search_completion
    {
      "input": "阿里巴巴公司的法人是谁?基于以下上下文回答:阿里巴巴(中国)有限公司成立于2007年03月26日,法定代表人蒋芳"
    }
    

五、语义搜索评估指标

评估语义搜索效果时,应考虑以下指标:

  1. 相关性:结果与查询意图的匹配程度
  2. 召回率:系统找到所有相关文档的能力
  3. 响应时间:查询执行时间
  4. 资源消耗:CPU、内存使用情况

根据 Elastic 的测试,混合搜索(BM25+语义)在12个相关性基准测试中全部优于单一方法。

六、总结

Elasticsearch 9 的语义检索功能通过 semantic_text 字段类型、多样化的查询方式以及性能优化,为用户提供了强大而灵活的语义搜索能力。无论是英文还是中文场景,都能找到合适的解决方案。特别是混合搜索和 RRF 技术的引入,使得结合多种搜索技术变得简单高效。

对于希望构建下一代搜索应用的开发者,Elasticsearch 9 的语义检索功能无疑提供了坚实的基础,无论是构建简单的语义搜索系统,还是复杂的 RAG 应用,都能从中受益。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许于宝的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值