很多人第一次在 AI 项目里遇到 ElasticSearch,是从"我已经有 ES 集群了,能不能顺手把向量检索也做了"这个念头开始的。念头没错,但从"会写 DSL 查询"到"能跑通一次像样的向量召回",中间隔着的不是一篇官方文档,而是几个具体到字段类型和参数取值的问题。这门主题课针对的就是这几个问题。
先说清楚:这门课不解决什么
它不教你 ElasticSearch 的安装部署、集群运维、分片调优,也不讲 BM25 打分公式怎么推导。如果你现在连索引、映射、文档这几个词都还对不上号,先补 ES 基础再来,否则第三节课开始会跟不上。
它同样不教你在 Python 里搭一套完整的 RAG 应用。课程聚焦在"ES 作为向量数据库"这一段:向量怎么存进去、怎么查出来、怎么和原有的文本检索凑到一起用。
这门课真正要补的三个缺口
缺口一:dense_vector 到底怎么定义
知道 ES 有向量字段类型,和能一次写对映射,是两件事。维度写多少、要不要开索引、similarity 选 cosine 还是 dot_product、index_options 里的不同取值各自意味着什么代价——这些参数选错,要么检索结果莫名其妙,要么写入时直接报错。课程会把这些取值讲成"什么场景选什么",而不是罗列参数表。
缺口二:kNN 检索的两种写法
ES 里的向量检索有近似 kNN 和脚本打分两条路,写法和适用场景不一样。什么时候该用 knn 查询、num_candidates 该给多大、filter 怎么加进去才不拖慢速度,这些在真实项目里踩一次坑就记住了,但没必要非踩不可。
缺口三:向量召回和关键词召回怎么合
实际业务里很少纯靠向量。用户搜"怎么退订会员",关键词能命中"退订",向量能命中"取消订阅",两条路的结果怎么排序、权重怎么调,是混合检索绕不开的环节。这也是 ES 相比专用向量库的一点便宜——文本和向量在同一次查询里就能组合。
配套练习建议这样安排
- 准备一个小规模数据集,几百到几千条即可,中文短文本最合适,不要用公开的大规模向量集,跑得慢还看不出差别。
- 先用 embedding 模型把文本转向量,落盘成 JSON,再写脚本批量灌进 ES。这一步的目的是把"维度对齐"这件事亲眼看一遍。
- 同一个查询词,分别用纯 kNN、纯 match 查询、混合查询各跑一次,把三组结果并排看。差异比讲解更能说明问题。
- 故意把 num_candidates 调到很小和很大各跑一次,记录召回结果和耗时的变化,建立对参数的直觉。
看完应该能回答的问题
- 你的业务数据如果已经有 ES,什么情况下值得直接用它做向量检索,什么情况下应该另起一个专用向量库?
- dense_vector 字段的维度写错,会在哪个环节暴露出来?
- 同样是查"附近的向量",knn 查询和 script_score 的差别在哪,什么时候不得不用后者?
- 混合检索里,如果关键词召回的结果明显更准,你在查询层面能怎么调?
- 向量索引是否需要像普通字段那样考虑 mapping 的更新成本?
这门课是短课,五节,适合已经写过 ES 查询、正在被向量检索卡住的人。如果你的项目里已经有一坨文本数据躺在 ES 里,又不想为了加个语义搜索另搭一套服务,那这几节课的内容基本就是你需要的那部分。反过来,如果你还没碰过 ES,建议先花时间把基础的增删改查和 mapping 写熟,再回来看向量部分,效率会高很多。
主题课:AI开发中的ElasticSearch向量开发入门
课程详情
课程详情
课程标题:主题课: AI开发中的ElasticSearch向量开发入门
课程简介:本课程专为学员定制,专注于ElasticSearch在AI开发中的应用,深入讲解如何将ElasticSearch作为向量数据库的基本写法。
适合人群
- 对AI开发感兴趣的编程爱好者
- 希望掌握ElasticSearch在AI领域应用的工程师
- 有志于学习向量数据库开发的开发者
学习收获
- 掌握ElasticSearch在AI开发中的向量数据库应用
- 了解向量数据库的基本概念和操作方法
- 提升在AI项目中的数据存储和处理能力
课程亮点
- 专注于ElasticSearch向量开发,深入浅出
- 5课时短课程,高效学习
- 理论与实践相结合,学以致用
课程目录
第1讲:ElasticSearch作为向量数据库的套路、基本部署 第2讲:结合AI框架把向量插入ElasticSearch 第3讲:ElasticSearch作为向量数据库的查询、AI检索代码编写





