当前位置: 首页 > news >正文

10 分钟上手 Elasticsearch 语义搜索(Serverless Cloud 本地双版本教程)

1. 场景 & 术语速览

概念解释
语义搜索用自然语言检索「含义相近」的文档,而非纯关键词匹配
向量/Embedding把文本映射为 N 维数组;相似文本→距离更近
ELSERElastic 默认稀疏向量模型 (Learned Sparse Encoder),无需微调即可跨领域检索
semantic_textES 8.11 + 内置字段类型,存储向量+自动推断模型,免手动 token/vocab

2. 环境准备

Serverless(推荐新同学)

  1. 进入 Elasticsearch → Home
  2. 选择 “Semantic search workflow” → Create a semantic-optimized index
  3. 自动创建向量索引 + 示例数据

Elastic Cloud / 本地集群

# Kibana DevTools / Console
PUT /semantic-index
  • superuser(本地)或 开发者 / 管理员(Cloud)角色
  • 若初次加载 ELSER,模型会在后台下载(1-5 分钟)

3. 创建向量索引 & 映射

PUT /semantic-index/_mapping
{"properties": {"content": {        # 任意字段名"type": "semantic_text"# 嵌入模型自动 = ELSER}}
}

为什么选 semantic_text

  • 默认填好稀疏向量参数
  • 自动拆分大段文本、做 chunking
  • 查询时 match / knn 语法保持一致

4. 批量写入示例文档

POST /_bulk?pretty
{ "index": { "_index": "semantic-index" } }
{ "content": "Yellowstone National Park …" }
{ "index": { "_index": "semantic-index" } }
{ "content": "Yosemite National Park …" }
{ "index": { "_index": "semantic-index" } }
{ "content": "Rocky Mountain National Park …" }
  • 408/504 超时:等待模型加载完后重试
  • 文本会被 自动切片 + 编码为稀疏向量

5. Discover 浏览 & ES | QL 入口

  1. Kibana 左侧导航 → Discover
  2. 选中 semantic-index
  3. 任意文档点击 “⬆️” 展开查看字段
  4. 顶栏 → Try ES|QL 打开查询编辑器

6. ES | QL 语义检索

6.1 入门查询

FROM semantic-index
| WHERE content: "what's the biggest park?"
| LIMIT 10
  • content: 语法自动走 语义匹配(ELSER 稀疏向量)
  • LIMIT 控制返回行数

6.2 查看相关性分值并排序

FROM semantic-index METADATA _score
| WHERE content: "best spot for rappelling"
| KEEP content, _score
| SORT _score DESC
| LIMIT 10
命令作用
METADATA _score暴露 Lucene 相关度得分
KEEP控制显示列
SORT _score DESC按得分降序

查看结果:Rocky Mountain National Park… 通常排第 1,最适合攀岩。

7. 整个查询走 REST API(脚本 / 自动化用)

POST /_query?format=txt
{"query": """FROM semantic-index METADATA _score| WHERE content: "best spot for rappelling"| KEEP content, _score| SORT _score DESC| LIMIT 10"""
}

删除样例数据:

DELETE /semantic-index

8. 常见问题 FAQ

症状处理方式
model download timeout检查 Stack Management → Trained Models,确认 ELSER 状态 started
向量检索慢确保索引设置 default_pipeline 未做阻塞式处理;生产环境建议调整 segment 刷新周期
想混合关键字 + 语义创建 text + semantic_text 双字段,用 bool 查询或 ESQL WHERE 逻辑组合

9. 深度扩展方向

  1. Hybrid Search{ "multi_match": … } + knn / semantic weight 融合
  2. Dense Vector:接入 OpenAI / HuggingFace Embedding,自定义 dense_vector 字段
  3. RAG:向量检索 + LLM Prompt,构建企业检索增强生成 (Retrieval-Augmented Generation)
  4. A/B Relevance:使用 [Search Playground] 比较 BM25 vs ELSER 召回质量
  5. Serverless Pipeline:结合 Elastic Serverless 功能,0 DevOps 成本托管向量索引
http://www.lryc.cn/news/604610.html

相关文章:

  • 基因组选择育种-2.1.最佳线性无偏估计
  • GitHub使用小记——本地推送、外部拉取和分支重命名
  • RPA软件推荐:提升企业自动化效率
  • STM32学习记录--Day3
  • IPEmotion数据采集软件功能介绍
  • 【n8n】如何跟着AI学习n8n【02】:基础节点学习
  • Java面试宝典:MySQL InnoDB引擎底层解析
  • 5.Origin2021如何绘制柱状+折线双Y轴图?
  • 51单片机外部引脚介绍
  • 影视级 3D 特效的软件工具链:从概念到成片的全流程解析
  • LAMP及其环境的部署搭建
  • 逻辑回归:从线性回归到分类决策的演化
  • Spring Boot音乐服务器项目-查询喜欢的音乐模块
  • .clang-format的作用是什么,什么情况下会生效
  • 常见cms里面的几个cms框架的webshell方法(wordpress,dedecms,phpmyadmin,pageadmin)
  • 91-基于Spark的空气质量数据分析可视化系统
  • neovim 怎么调用 clang-format进行格式化
  • 常⻅CMS漏洞
  • 《Flutter篇第二章》MasonryGridView瀑布流列表
  • 算法能力提升之快速矩阵
  • python反爬:一文掌握 undetected-chromedriver 的详细使用(可通过机器人验证)
  • Flutter封装模板及最佳实践
  • git本地仓库,工作区和暂存区的知识
  • 操作系统- lecture3(进程的定义)
  • RAG:检索增强生成的范式演进、技术突破与前沿挑战
  • 通义万相文生图模型wan2.2-t2i-flash和wan2.2-t2i-plus全维度深度对比
  • 通达OA服务器无公网IP网络,如何通过内网穿透实现外网远程办公访问OA系统
  • FIN1531 LVDS输出
  • SpringBoot升级2.5.3 2.6.8
  • Vue3 Composition API