微信扫码
添加专属顾问
探索Elasticsearch如何通过向量搜索技术突破传统搜索局限,打造更智能的RAG应用。 核心内容: 1. 智能时代下向量搜索的必要性与应用场景 2. Elasticsearch实现向量搜索的技术原理与最新进展 3. 企业级RAG应用案例与实战经验分享
导读 Elasticsearch 目前是世界上最大的搜索引擎,在 ToB 业务中应用广泛,携程、抖音、滴滴等平台的搜索引擎都基于此构建。
1. 智能时代的搜索需求
2. Elasticsearch 向量搜索及最新进展
3. RAG 实现原理
4. 使用 Elasticsearch 在企业搜索中的案例分享
5. 附录信息
分享嘉宾|刘晓国 Elastic 首席布道师
编辑整理|王丽燕
内容校对|郭慧敏
出品社区|DataFun
01
智能时代的搜索需求
为什么要做向量搜索?当前智能时代的搜索需求已发生变化,传统搜索多基于词汇匹配,比如搜索某个词,若该词不存在则无法得到结果。但向量搜索能突破这一限制,例如“我爱你”和“我喜欢你”语义相近,通过向量搜索可相互匹配;即便是多语言场景,如“I like you”和“I love you”,借助多语言模型生成的向量也能实现跨语言搜索。
过去的搜索需求多集中在全文搜索、结构化搜索等;而未来向量搜索的需求会愈发凸显。
例如,搜索“how to set up Elasticsearch ML”(ML 即 machine learning,机器学习),由于 Elasticsearch 收购了最早使用其构建机器学习工作的 Prelert 公司,理论上搜索“Prelert”应能关联到机器学习相关内容,而“set up”涉及“安装”或“configuration(配置)” 的含义。但传统词汇搜索的结果可能并不精准,比如第一个结果中“up”和“set”分开出现,无法体现“set up”的完整语义;甚至可能出现相反语义的匹配,比如搜索“我不想吃冰淇淋”,却匹配到“我吃冰淇淋”的文档,虽有较高匹配度,但并非用户所需。
语义搜索则能避免这些问题。例如搜索“how to set up Elasticsearch machine learning”,返回的结果会包含“machine learning settings”“set up machine learning features”等高度相关的内容。
向量搜索的应用场景也扩展到了跨模态领域:通过文字描述如“覆盖雪的山”可搜索到对应的图片;在电商平台,上传一张衣服或鞋子的图片,能找到售卖的相似商品。
02
Elasticsearch 向量搜索及最新进展
Elasticsearch 在向量搜索方面有两类向量:dense Vector(密集向量)和 sparse Vector(稀疏向量)。
密集向量会将文字、图片、声音等信息转化为数字向量。以图像为例,向量可通过卷积神经网络生成。例如对一个人的特征进行数字化描述:身高 1.65 米(相较于1.6 米、1.7 米,1.9 米更符合预期)、黑色头发(特定深浅度为最佳)、硕士学历(分值最高,博士可能分值较低),皮肤颜色、眼睛大小等特征,都转化为数字。当把这些特征整合为一个向量进行搜索时,得到最相似的结果,而非传统搜索中通过 “年龄大于 X 且小于 Y” 等条件过滤出的结果。多维向量搜索能同时从多个维度同时进行匹配,即便某一维度(如身高)不完全符合,但若其他维度(如学历、距离)高度匹配,仍可能成为最相近的结果,这是向量搜索的基本原理。
稀疏向量无需微调,通过文字扩充实现语义搜索效果,且速度比密集向量更快。例如“canoe”可扩展与“船只”相关的词汇:“boat”,“hire”可关联“rent(租赁)”,一个词可能扩充到 20 个相关词。基于这些扩充后的词汇,结合传统的 BM25 词汇搜索,即可实现语义搜索,且效率极高。
上图是文本扩展示例,以“droids you're looking for”为例,“droids” 可能关联 “Robot” “Android” “galaxy” 等词,搜索 “do androids dream of electric sheep” 时,每个词都会被扩充,且每个扩充词会被赋予基于统计或学习的分数,最终通过综合分数得出结果,其速度和效率优于密集向量,并且不需要为每个领域进行微调。通过文本扩展,也可以轻松实现语义搜索的目的。
向量搜索的原理分为以下步骤:首先,将文档、图像、声音、视频等通过嵌入模型(embedding model)转化为嵌入向量(embedding),存入 Elasticsearch 数据库;搜索时,使用相同的嵌入模型将查询问题转化为向量,搜索引擎会在向量空间中找出最相近的若干个向量,这是密集向量的工作原理。
向量检索具体实现需两步:一是建立嵌入模型,传入机器学习节点,创建 inference API,通过该 API 将数据转化为向量并存入 Elasticsearch 形成索引;二是搜索时调用 inference API,进行 KNN(最近邻)搜索。
不过这种方式通常不直接用于图像搜索,因为传入机器学习节点的模型有其特定适用范围。目前,若要将图像转化为向量,一般需通过 Python 代码实现,再将生成的向量写入 Elasticsearch 进行存储。我们可通过 eland 工具从 hugging face 等平台获取模型,将其传入 Elasticsearch 的机器学习节点。之后,创建 inference Processor 及对应的 pipeline,即可直接写入文档,完成向量的存储流程。
上图中的 “desc_embedding”,本质上是一个数组。在查询时,存在两种查询方式:一种是传统查询,另一种是 KNN 查询(即向量查询)。将向量填入查询条件中,对索引进行查询,就能得到最相近的结果并返回。按照这种方式,查询需分两步:第一步是计算查询语句(summer clothes)的向量并填入查询条件;第二步是调用查询接口完成查询。
Elasticsearch 在 8.7 及以上版本简化了这一操作,对于全向量索引,只需加入 “query Vector builder” 并直接传入 model _id,一句话即可完成搜索。相较于早期版本,操作流程大幅简化,后续版本也在持续优化,使向量搜索变得更加便捷。
Elasticsearch 支持混合搜索,密集向量的解释性较差,因为神经网络生成的向量难以解释相关性,而传统词汇搜索的相关性(比如是否包含某词)则清晰可见。因此,可将传统的 BM25 文本搜索、稀疏向量搜索及密集向量搜索融合,通过混合打分提高召回率和相关性。
混合打分有两种方式:第一种方式是凸组合(Convex combination),根据应用场景对不同搜索方式赋予权重(如传统搜索 0.9、向量搜索 0.1),比如简单计算公式为“最终分数 = 传统分数 × 权重 1 + 向量分数 × 权重 2”;
第二种方式是 RRF,基于排名而非具体分数计算,通过特定公式可计算出综合分数,该方式支持多路召回,且计算简单。
相似性阈值是一个重要概念,例如,相似性低于 80% 的结果可视为不相关而不返回,在亲子鉴定中类似(95% 以上才可能为真)。在实际应用中,若聊天知识库中已有相似度 99% 的问题已经被问过了,可直接访问本地知识库返回本地结果,无需调用大模型来获取答案(LLM 的访问会产生费用及时延);若相似度仅 80%,则视为新问题,调用大模型查询。
Elasticsearch 的功能不只是向量存储与搜索,它还能通过机器学习节点传入嵌入模型并生成嵌入向量,同时支持传统文本搜索、位置搜索等,且兼容类 SQL 查询(ESQL),对熟悉 SQL 的用户更友好。
此外,Elasticsearch 是基于 Lucene 构建的原生向量搜索引擎,近期版本在性能优化上有诸多突破:
利用 CPU 硬件指令加速向量索引和 计算速度;
通过标量量化压缩向量,能将 4 字节向量压缩至 1 字节(节省 75% 内存);
增加单个查询并发;
并发查询间协同,一个查询的多个并发线程间协同共享信息,提前终止一些查询线程;
早期 Elasticsearch 一个分片对应一个线程,现在支持逻辑分段,一个大分片可由多个线程协同处理,且分片间查询可负向通信(如某 segment 的查询距离已短于其他,其他可直接终止进一步的搜索),节省资源与时间。
Elasticsearch 改进后还支持 IO 并发;对稀疏索引的特定字段进行排序优化,查询时可跳过无关范围(如最大值、最小值不在范围内的 segment);支持快速模式,当多次循环查询的结果差异极小时,可直接终止。
搜索的发展阶段有:
文本词汇搜索(textual search);
向量搜索(Vector search);
混合搜索(Hybrid search),混合搜索将文本与向量搜索结合,召回率优于纯向量搜索;
相关性调优(relevance tuning)
当前搜索更加关注重排序(re-rank):第一阶段通过 BM25、ANN 密集向量或稀疏向量搜索,得到 100K 至 100W 篇文档;随后通过 mid-stage reranker: Learning to Rank 模型(自行训练)对结果打分并重排序;最后可调用 AI base model 进一步优化重排序, 比如一些厂商提供的重排序接口。若文档数量少,还可通过脚本计算绝对值实现精确打分。这种通过脚步精确计算距离的方法不适合大量文档,因为这种计算非常费算力,但是对少量的文档还是可以的。
“learning to rank” 类似 Excel 表格,相关打 1,不相关打 0,再通过 Xgboost 等工具训练模型,上传至机器学习节点,搜索 rescore 训练模型实现业务相关的重排序,相关详细内容可参考博客文章:https://elasticstack.blog.csdn.net/article/details/140464162
重排序的方法多样:可调用阿里、腾讯等厂商的机器学习节点(依托其 GPU 算力),借助大模型 AI 能力重排序;
支持多级排序,如结合 hugging face 的 reranker、Elastic reranker、coherent 的接口等。
还支持多级检索器(retrievers),融合 KNN、传统词汇搜索、向量搜索等,形成搜索流水线(pipeline)。
对于长文档(如 800 页的书),需进行分块处理,再将每个块转化为向量(像 OpenAI 里 1563 token 或者单纯一维向量小数据无法代表整本书)。
分块需把握合适的粒度,块过大可能导致重点分散,大模型总结时易出现偏差;块过细则可能影响精度。
分块策略包括:
按句子分块,确保不超过模型 token 限制(如 OpenAI 的 1563 token),且块与块之间重叠 1-2 个句子,避免语义断裂;
按词数分块(如重叠 100 个词),保证块间语义连贯。
Elasticsearch 最新版本中的“Semantic text”字段可自动处理稀疏向量与密集向量,无需人工区分,且支持自动分块,分块后自动转化为向量,简化操作。
搜索操作很简便:定义“sparse_ embedding” 端点,接入 ELSER、OpenAI 等厂商的模型;定义“semantic text”字段(可同时支持稀疏与密集向量);写入文档与传统方式一致;搜索时直接使用 query 语句搜索匹配结果。
在 8.18 及以上版本中,可以通过 ESQL 或 DSL 直接去搜索。
Elasticsearch AI 集成了诸多第三方服务(如阿里云),支持向量生成、搜索、重排序(re-rank)、聊天补全(chat completion)等大模型接口。
在 Serverless 架构中,Elasticsearch 实现了“存算分离”:索引数据存入一个节点,搜索任务由搜索层处理,文档数据存储在对象存储中,节点仅需少量硬盘,实时性好,能显著节省成本。
03
RAG 实现原理
如果数据质量不够好,大模型极易产生幻觉,例如询问“2025 年 315 哪些商家被曝光”,若大模型训练数据中无相关信息,可能给出错误答案。
提高大模型准确性的方式有三种:
预训练(Pre-training,需强大资源投入,多数人不具备);
微调(针对医药、法律等专业领域,但数据集规模不足时效果有限,如仅用“青霉素可治感冒”这一条数据微调,无法改变大模型结论);
情境学习(通过 RAG 实现可解决幻觉问题,最有效)
RAG 的工作流程为:用户提问后,通过语义搜索或词汇搜索(多路召回)从数据库中获取相关结果;将用户问题与搜索结果一同传入大模型的上下文窗口(context window);大模型基于这些信息生成答案,避免“幻觉”。
04
使用 Elasticsearch 在企业搜索中的案例分享
另一种 RAG 形式为 Agentic RAG:用户提问后,大模型调用相应工具查询结果,或按顺序调用不同函数,最终完成任务,例如制定从北京到新加坡的旅行计划,包括交通、酒店预订等)。
上图所示询问“Elastic Stack 的最新版本是多少”,DeepSeek 可能回答 8.13(错误),而 OpenAI 会通过搜索网络获取正确答案,其核心在于通过判断现有信息是否满足需求,决定是否调用工具补充信息。
我曾实现过一个案例:无需告知 Elasticsearch 索引信息,直接以自然语言查询,如“从中国到美国的最便宜机票是多少”,系统会自动调用 Kibana 中的 flight 示例索引,返回中文结果 272。
上图案例基于 Elasticsearch MCP Server,通过标准协议整合各组件。
提高查询效果的技巧包括:采用“hypothetical document embedding”(假设文档嵌入),将问题生成符合向量维度(如 1563 维)的文字描述,再与分块文档的向量匹配,可提高召回率;还可生成多个相关问题,将其向量与原始问题向量加权平均后再匹配,效果也会提升。
具体做法可参考文章链接详细描述:
https://elasticstack.blog.csdn.net/article/details/141780767,将问题分块,提取关键词,大模型针对每个块生成 5-10 个相关问题,将这些问题与原始问题均转化为向量,加权后存入 Elasticsearch;搜索时,将问题生成对应的 hypothesis 文档及向量,进行匹配。
混合评分(Hybrid scoring)也是有效方式:对问题中的关键词、短语等进行处理,结合元数据(Meta data)、实体(entity)等信息,为每个文档块生成潜在问题并转化为向量,对关键词短语也生成向量,通过加权得到新向量后存入数据库,搜索时将问题转化为对应的 hypothesis 向量进行匹配,可提升搜索精度与召回率
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-10-16
模型接进来了,为什么知识库还是报错?聊聊 LangChat 的模型与向量基础设施
2026-10-16
Octop 1.0 版正式发布:每个人都能拥有专属AI协作团队
2026-10-15
独家丨OKF + RAG:终极智能体架构
2026-10-11
有了大模型,段誉为什么时灵时不灵
2026-10-08
ThinkParse 2.0 发布:内置 MinerU 4.0,把文档解析做成可扩展的企业级系统
2026-10-08
MFS:给 Agent 一个可搜索的上下文文件系统
2026-10-07
从零跑通 Meilisearch 中文搜索:分词与本地化 7 步,含 3 个坑
2026-09-28
Jev 进阶:重排序——让 BM25 的 top-1 准确率从 5% 翻到 18%
2026-07-26
2026-07-25
2026-07-28
2026-08-05
2026-07-29
2026-07-24
2026-07-22
2026-07-26
2026-07-29
2026-08-05
2026-08-19
2026-08-18
2026-08-05
2026-08-05
2026-07-28
2026-07-27
2026-07-26
2026-07-25
欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。
在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。
一、 定义
本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。
会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。
知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。
二、 账号注册与登录
登录方式:本网站支持以下登录方式,您可根据实际情况选择:
微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。
手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。
账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。
实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。
未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。
三、 服务内容与规范
知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。
服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。
禁止行为:您在使用服务时不得实施以下行为:
利用技术手段批量爬取、下载、转存知识库内容;
将知识库内容用于商业目的或未经授权地向第三方传播;
干扰本网站正常运行或侵犯其他用户合法权益;
发布违法违规信息或从事违反公序良俗的活动。
四、 知识产权声明
权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。
有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。
侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。
五、 个人信息保护
我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。
您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。
您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。
六、 免责声明
内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。
不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。
第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。
七、 违约责任
如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。
如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。
八、 法律适用与争议解决
本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。
因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。
九、 其他
本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。
本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。
我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。