Elasticsearch 9.X 使用推理 API 进行语义搜索
第一部分:引言
Elasticsearch 9.X 版本是 Elastic 公司推出的最新搜索和分析引擎系列,于 2024 年正式发布,并在 2025 年持续更新。作为一个分布式、可扩展的搜索引擎,Elasticsearch 支持海量数据的实时索引和查询。随着人工智能技术的快速发展,Elasticsearch 9.X 引入了更强大的 AI 功能,其中推理 API(Inference API)是实现语义搜索的核心组件。语义搜索不同于传统的关键词匹配,它利用机器学习模型生成的嵌入向量(embeddings)来捕捉文本的语义含义,从而返回更相关的结果,即使查询和文档不包含相同的词汇。
推理 API 允许用户集成外部 AI 服务(如 OpenAI、Cohere、Hugging Face 等)或 Elastic 的内置模型(如 ELSER),以生成文本嵌入。这些嵌入可以是稠密向量(dense vectors)或稀疏向量(sparse vectors),用于 kNN(k-最近邻)搜索或稀疏向量查询。本教程将详细介绍如何在 Elasticsearch 9.X 中使用推理 API 进行语义搜索,包括前提条件、设置推理端点、索引数据、查询执行、代码示例和最佳实践。教程基于官方文档和实际示例,确保实用性和完整性。 我们将使用 Python 客户端和 Kibana Dev Console 提供代码示例,总字数超过 5000 字。
语义搜索的基本概念
语义搜索的核心是向量表示:文本被转换为高维向量,相似文本的向量在空间中更接近。推理 API 处理这个转换过程,支持文本嵌入(text_embedding)和稀疏嵌入(sparse_embedding)任务。相比 E