第六阶段 53 · kNN 向量检索与语义搜索(dense_vector + knn)
53 · kNN 向量检索与语义搜索dense_vector knn阶段第六阶段 / 进阶专题ES 8.x 旗舰能力ESdense_vectorknn查询、混合检索BM25 向量 | PostgreSQLpgvector的-/最近邻1. 概念从“关键词匹配”到“语义相似”前面所有查询match/term…都是关键词/词项匹配——字面对不上就搜不到搜“笔记本”匹配不到只写“notebook”的文档。向量检索换了个思路把文本用embedding 模型转成一个高维向量如 768 维浮点数组语义相近的文本向量也相近。查询时把问题也转成向量找距离最近的 K 个文档kNN k-Nearest Neighbors。于是“笔记本”能召回“notebook / 便携电脑 / ThinkPad”——按语义而非字面。ES 8.x 用dense_vector字段 HNSW 图索引原生支持近似 kNNANN性能可用于生产。向量不是取代关键词检索而是互补关键词精准、向量懂语义生产常做混合检索见第 5 节。2. PostgreSQL 对照-- pgvector存向量 最近邻检索CREATETABLEdocs(idint,embedding vector(768));CREATEINDEXONdocsUSINGhnsw(embedding vector_cosine_ops);-- 找和查询向量最相似的 10 条 是余弦距离SELECTidFROMdocsORDERBYembedding:query_vecLIMIT10;ES 的dense_vectorknn≈pgvector的vector列 HNSW 索引 排序。3. ES DSL3.1 mapping定义向量字段PUT docs_idx { mappings: { properties: { title: { type: text }, content: { type: text }, embedding: { type: dense_vector, dims: 768, // 与你的 embedding 模型维度一致 index: true, // 建 HNSW 索引支持快速 ANN similarity: cosine // cosine / dot_product / l2_norm } } } }3.2 写入向量由模型离线/写入时算好POST docs_idx/_doc { title: ThinkPad X1, content: 轻薄商务本, embedding: [0.021, -0.114, 0.337, ... ] } // 768 个浮点3.3 kNN 查询找语义最近的 K 条POST docs_idx/_search { knn: { field: embedding, query_vector: [0.02, -0.10, 0.31, ...], // 查询文本的向量 k: 10, // 返回最近 10 条 num_candidates: 100 // 每分片先取 100 候选再精排越大越准越慢 }, _source: [title, content] }3.4 带过滤的 kNN先过滤再找近邻POST docs_idx/_search { knn: { field: embedding, query_vector: [ ... ], k: 10, num_candidates: 100, filter: { term: { category: laptop } } // 只在该类目里找近邻 } }4. Spring Boot 实现ComponentpublicclassDoc53KnnSearch{AutowiredprivateElasticsearchClientelasticsearchClient;/** * 语义检索传入“查询文本的向量”返回最相似的 topK 篇。 * 注意queryVector 由你的 embedding 模型本地模型 / OpenAI / 自建服务先算好。 */publicListMapString,ObjectsemanticSearch(StringindexName,ListFloatqueryVector,inttopK)throwsIOException{SearchResponseMaprespelasticsearchClient.search(s-s.index(indexName).knn(k-k.field(embedding).queryVector(queryVector).k(topK).numCandidates(Math.max(topK*10,100)))// 候选数经验值.source(src-src.filter(f-f.includes(title,content))),Map.class);returnresp.hits().hits().stream().map(Hit::source).filter(Objects::nonNull).collect(Collectors.toList());}}knn是SearchRequest上的一等参数与query平级。每条命中的相似度分在hit.score()similarity 越高分越高。向量怎么来ES 本身不算 embedding除非用 ELSER/推理管道一般在应用侧调模型把文本转向量再写入/查询。5. 混合检索BM25 关键词 向量语义生产推荐单靠向量可能漏掉精确词如型号X1-2026单靠关键词又不懂同义词。生产上把两者结果融合兼得“精准 语义”。ES 提供两种方式5.1 knn 与 query 同时给分数相加POST docs_idx/_search { query: { match: { content: 轻薄 笔记本 } }, // BM25 关键词 knn: { // 向量语义 field: embedding, query_vector: [ ... ], k: 10, num_candidates: 100, boost: 0.5 } }5.2 RRFReciprocal Rank Fusion按排名融合更稳POST docs_idx/_search { retriever: { rrf: { retrievers: [ { standard: { query: { match: { content: 轻薄 笔记本 } } } }, { knn: { field: embedding, query_vector: [ ... ], k: 20, num_candidates: 100 } } ], rank_window_size: 50 } } }RRF 不依赖两路分数的绝对量纲只看各自排名融合更稳是当前混合检索的推荐做法。6. 坑与最佳实践dims必须与模型一致写入向量维度和 mappingdims不符会报错换模型通常要 reindex。similarity要匹配模型多数句向量模型用cosine用点积模型选dot_product需归一化。num_candidates调准确率越大越接近精确 kNN 但越慢经验k的 10 倍起步按召回率调。向量很占空间和内存HNSW 图常驻内存维度高/文档多时评估资源必要时降维或用量化int8/bbq。ES 不负责生成向量除非用 ELSER 稀疏向量或 inference 管道文本→向量在应用侧或推理服务做。过滤用knn.filter先缩小范围再找近邻比查完再过滤更准更快。生产优先混合检索 RRF纯向量易漏精确词纯关键词不懂语义融合最稳。ELSER稀疏向量是另一条路Elastic 自带模型无需自备 embedding适合英文语义检索可作对比方案。相关关键词全文匹配对比基线10-match-全文匹配.md相关性打分与 boosting41-相关性调优.md字段裁剪减小向量返回开销19-source-字段裁剪.md全系列完结至此学习计划覆盖了 ES 的两大检索范式关键词/BM2510–19与向量/语义本篇外加聚合、写入、索引管理、深分页、运维、关系建模、并发控制。

相关新闻

AI 用了哪些资料,回答了什么,能不能事后查清楚?

AI 用了哪些资料,回答了什么,能不能事后查清楚?

很多团队刚开始使用AI时,关注点通常在效果上。能不能总结文档,能不能回答客户问题,能不能生成代码。只要结果看起来顺畅,项目就容易被认为已经跑通。 但AI真正进入日常工作后,另一个问题会慢慢出现:它到底用…

2026/8/4 14:15:16 阅读更多 →
Unity WebGL移动端自动全屏横屏解决方案:混合架构与工程实践

Unity WebGL移动端自动全屏横屏解决方案:混合架构与工程实践

1. 项目概述:一个被低估的“小”需求如果你做过Unity WebGL项目,并且希望它在手机浏览器里能自动横屏、甚至自动全屏播放,那你大概率经历过和我一样的抓狂时刻。这听起来像是一个简单的功能,不就是把屏幕转一下、铺满吗&#xff1…

2026/8/4 14:15:16 阅读更多 →
大模型翻译质量周报W32:deepseek-v4-pro以9分综合领跑

大模型翻译质量周报W32:deepseek-v4-pro以9分综合领跑

本周 423 篇翻译任务,由 3 个模型完成。抽样 2 篇进行多模型盲评对比,综合最佳:deepseek-v4-pro(均分 9/10)。 本周翻译统计模型语言翻译量平均耗时平均质量评分deepseek-v4-flashen7120.9s未评claude-sonnet-4.6ja211…

2026/8/4 14:15:16 阅读更多 →

最新新闻

《植物大战僵尸融合版V3.8》深度解析:社区二创如何重塑经典游戏生态

《植物大战僵尸融合版V3.8》深度解析:社区二创如何重塑经典游戏生态

上周,一个朋友神秘兮兮地发来一张截图,问我:“你看这个‘融合版’,是不是我小时候玩的那个《植物大战僵尸》?” 截图里,向日葵戴上了墨镜,豌豆射手吐着寒冰和火焰,僵尸阵容里混进了些…

2026/8/4 19:40:51 阅读更多 →
移动储能系统在配电网韧性提升中的应用与Matlab实现

移动储能系统在配电网韧性提升中的应用与Matlab实现

1. 项目背景与核心价值在电力系统领域,配电网的可靠性直接关系到千家万户的用电质量。传统配电网在面对极端天气、设备故障等突发情况时,往往会出现局部供电中断的问题。移动储能系统(Mobile Energy Storage System, MESS)作为一种…

2026/8/4 19:40:51 阅读更多 →
基于ARM+FPGA平台在精密测控领域的应用:ZYNQ高精度温振压多参融合采集系统

基于ARM+FPGA平台在精密测控领域的应用:ZYNQ高精度温振压多参融合采集系统

在工业设备状态监测领域,单一传感器的监测数据往往无法全面反映设备健康状态。温振压多参量融合监测通过同时采集温度、振动、压力数据,能够构建更完整的设备状态评估模型,大幅提升故障诊断的准确性。本文基于ZYNQ异构架构,完整实…

2026/8/4 19:40:51 阅读更多 →
【信息科学与工程学】【数据中心】计算机科学与自动化——第三百零五篇 数据中心 Scale-Up、Scale-Out、Scale-Across101 芯片接入数据中心129

【信息科学与工程学】【数据中心】计算机科学与自动化——第三百零五篇 数据中心 Scale-Up、Scale-Out、Scale-Across101 芯片接入数据中心129

编号 类型 领域 系统 Scale Up/Out/... 场景+问题【含系统模块/组建和层次化分析】 问题的数学分析(逐步推理思考的数学方程式,从多学科角度) 参数列表及参数的数值范围设计 关联知识 2782 系统集成工艺 数据中心系统 100台服务器数据中心的机柜内温度传感器校准…

2026/8/4 19:40:51 阅读更多 →
终极免费NVIDIA显卡优化神器:如何用NVIDIA Profile Inspector提升游戏性能

终极免费NVIDIA显卡优化神器:如何用NVIDIA Profile Inspector提升游戏性能

终极免费NVIDIA显卡优化神器:如何用NVIDIA Profile Inspector提升游戏性能 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 还在为游戏卡顿、画面撕裂而烦恼吗?想免费解锁NVIDIA显…

2026/8/4 19:40:50 阅读更多 →
RTThread学习记录3——线程同步与线程通信

RTThread学习记录3——线程同步与线程通信

一、前言前面学习了线程相关概念之后,大概了解了线程是怎么运作的。而线程间同步就是为了解决按什么顺序执行线程,按什么节奏执行线程,防止他们乱更改全局变量。线程间通信则是为了解决线程间的通信和数据交流,减少需要的全局变量…

2026/8/4 19:39:50 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →