Spring AI 和 Elasticsearch 作为你的向量数据库

AI摘要

本文介绍了使用 Spring AI 和 Elasticsearch 构建完整 AI 应用程序。Spring AI 1.0 是面向 Java 的 AI 工程解决方案,支持多种 AI 模型。Elasticsearch 是全文搜索引擎和向量存储,易设置、开源且可扩展。文中还给出了使用步骤、整合应用流程及代码示例,最后提及生产环境的优化建议。

作者:来自 Elastic Josh Long, Philipp Krenn 及 Laura Trotta

使用 Spring AI 和 Elasticsearch 构建一个完整的 AI 应用程序。

Elasticsearch 原生集成了业界领先的生成式 AI 工具和服务提供商。查看我们关于超越 RAG 基础或使用 Elastic 向量数据库构建生产级应用的网络研讨会。

为了为你的用例构建最佳搜索解决方案,现在就开始免费云试用,或者在本地机器上尝试 Elastic。


Spring AI 现在已正式发布,第一个稳定版本 1.0 已可在 Maven Central 下载。让我们马上开始使用它,结合你喜欢的 LLM 和我们最喜欢的向量数据库,构建一个完整的 AI 应用程序。

什么是 Spring AI?

Spring AI 1.0 是一个面向 Java 的全面 AI 工程解决方案,经过一段时间的开发并受到 AI 领域快速发展的推动,如今正式发布。这个版本为 AI 工程师带来了许多关键的新功能。

Java 和 Spring 正处于迎接 AI 浪潮的有利位置。很多公司都在使用 Spring Boot,这使得将 AI 集成到现有系统中变得非常简单。你基本上可以毫不费力地将业务逻辑和数据直接连接到那些 AI 模型上。

Spring AI 支持多种 AI 模型和技术,例如:

  • 图像模型:根据文本提示生成图像。
  • 转录模型:将音频源转换为文本。
  • 嵌入模型:将任意数据转换为向量,这是一种针对语义相似性搜索优化的数据类型。
  • 聊天模型:这些你应该很熟悉!你肯定在哪儿已经和其中一个简单聊过几句了。

聊天模型是当前 AI 领域最受关注的部分,而且确实如此,它们非常强大!你可以让它们帮你修改文档或者写一首诗。(只是暂时别让它们讲笑话……)它们很厉害,但也确实存在一些问题。

Spring AI 应对 AI 挑战的解决方案

所示图片已获得 Spring AI 团队负责人 Mark Pollack 博士的许可使用。

让我们来看看这些问题以及 Spring AI 中的解决方案。

问题解决方案
一致性

聊天模型思想开放,容易分心

你可以给它们一个 system prompt 来控制它们整体的行为和结构

内存

AI 模型没有记忆,所以它们无法将同一个用户的多条消息关联起来

你可以给它们一个记忆系统来存储对话中相关的部分

隔离

AI 模型生活在隔离的小沙盒中,但如果你给它们访问工具的权限——当它们认为有必要时可以调用的函数,它们可以做非常惊人的事情。

Spring AI 支持工具调用,这让你可以告诉 AI 模型它环境中的工具,之后它可以请求你调用这些工具。这种多轮交互会为你透明地处理。

私有数据

AI 模型很智能,但它们不是无所不知!它们不知道你专有数据库中的内容 —— 而且我们也认为你不会想让它们知道!

你需要通过填充 prompts 来指导它们的回答 —— 基本上是用强大的字符串拼接操作符,在模型查看问题之前,把文本放进请求里。可以看作是背景信息。你怎么决定什么该发送,什么不该发送?用 vector store 选择只有相关的数据,再发送给模型。这叫做检索增强生成,或者 RAG。

幻觉

AI chat 模型喜欢聊天!有时候它们非常自信,以至于会编造内容。

你需要使用评估 —— 用一个模型验证另一个模型的输出——来确认结果是否合理。

当然,没有哪个 AI 应用是孤立的。现代 AI 系统和服务在与其他系统和服务集成时表现最佳。Model Context Protocol (MCP) 使你能够将 AI 应用连接到其他基于 MCP 的服务,无论它们使用什么语言编写。你可以将这些组合成推动更大目标的 agentic 工作流。

最棒的是?你可以在熟悉的 Spring Boot 习惯用法和抽象基础上完成这一切:Spring Initializr 上几乎所有功能都有方便的 starter 依赖。

Spring AI 提供方便的 Spring Boot 自动配置,让你享受约定优于配置的体验。Spring AI 还支持通过 Spring Boot 的 Actuator 和 Micrometer 项目进行可观察性。它还能很好地兼容 GraalVM 和虚拟线程,帮助你构建超快、高效且可扩展的 AI 应用。

为什么选择 Elasticsearch

Elasticsearch 是一个全文搜索引擎,你可能已经知道了。那么为什么我们用它来做这个项目?因为它也是一个向量存储!而且非常不错,数据和全文本紧密存放。其他显著优点:

  • 超级容易设置

  • 开源

  • 横向可扩展

  • 你们组织的大部分自由格式数据可能已经存在 Elasticsearch 集群中

  • 功能完善的搜索引擎能力

  • 完全集成在 Spring AI 中!

综合考虑,Elasticsearch 满足作为优秀向量存储的所有条件,所以让我们开始设置并构建应用吧!

开始使用 Elasticsearch

我们需要 Elasticsearch 和 Kibana,Kibana 是你用来与数据库中数据交互的 UI 控制台。

多亏了 Docker 镜像和 Elastic.co 首页的便利,你可以在本地机器上试用所有东西。去那里,向下滚动找到 curl 命令,运行它并直接输入你的终端:

 curl -fsSL https://elastic.co/start-local | sh 
  ______ _           _   _      
 |  ____| |         | | (_)     
 | |__  | | __ _ ___| |_ _  ___ 
 |  __| | |/ _` / __| __| |/ __|
 | |____| | (_| \__ \ |_| | (__ 
 |______|_|\__,_|___/\__|_|\___|
-------------------------------------------------
🚀 Run Elasticsearch and Kibana for local testing
-------------------------------------------------
ℹ️  Do not use this script in a production environment
⌛️ Setting up Elasticsearch and Kibana v9.0.0...
- Generated random passwords
- Created the elastic-start-local folder containing the files:
  - .env, with settings
  - docker-compose.yml, for Docker services
  - start/stop/uninstall commands
- Running docker compose up --wait
[+] Running 25/26
 ✔ kibana_settings Pulled                                                 16.7s 
 ✔ kibana Pulled                                                          26.8s 
 ✔ elasticsearch Pulled                                                   17.4s                                                                     
[+] Running 6/6
 ✔ Network elastic-start-local_default             Created                 0.0s 
 ✔ Volume "elastic-start-local_dev-elasticsearch"  Created                 0.0s 
 ✔ Volume "elastic-start-local_dev-kibana"         Created                 0.0s 
 ✔ Container es-local-dev                          Healthy                12.9s 
 ✔ Container kibana_settings                       Exited                 11.9s 
 ✔ Container kibana-local-dev                      Healthy                21.8s 
🎉 Congrats, Elasticsearch and Kibana are installed and running in Docker!
🌐 Open your browser at http://localhost:5601
   Username: elastic
   Password: w1GB15uQ
🔌 Elasticsearch API endpoint: http://localhost:9200
🔑 API key: SERqaGlKWUJLNVJDODc1UGxjLWE6WFdxSTNvMU5SbVc5NDlKMEhpMzJmZw==
Learn more at https://github.com/elastic/start-local
➜  ~ 

这将会拉取并配置 Elasticsearch 和 Kibana 的 Docker 镜像,几分钟后你就可以在本地机器上运行它们,连接凭据也会一起提供。

你还会得到两个不同的 URL 用来与你的 Elasticsearch 实例交互。按照提示操作,打开浏览器访问 http://localhost:5601。

注意:控制台上打印的用户名 elastic 和密码:你登录时需要用到它们(在上面的示例输出中,用户名和密码分别是 elastic 和 w1GB15uQ)。

整合应用

访问 Spring Initializr 页面,生成一个包含以下依赖项的新 Spring AI 项目:

  • Elasticsearch Vector Store

  • Spring Boot Actuator

  • GraalVM

  • OpenAI

  • Web

确保选择最新版本的 Java(理想是 Java 24 —— 写本文时是这个版本 —— 或更高)以及你选择的构建工具。这里的示例使用 Apache Maven。

点击 Generate,下载并解压项目,然后导入到你喜欢的 IDE 中。(我们用的是 IntelliJ IDEA。)

首先,指定 Spring Boot 应用的连接详情。在 application.properties 中写入以下内容:

spring.elasticsearch.uris=http://localhost:9200
spring.elasticsearch.username=elastic
spring.elasticsearch.password=w1GB15uQ

我们还会使用 Spring AI 的 vector store 功能来初始化 Elasticsearch 端所需的数据结构,所以请指定:

spring.ai.vectorstore.elasticsearch.initialize-schema=true

在这个演示中我们将使用 OpenAI,具体是 Embedding Model 和 Chat Model(你可以使用任何 Spring AI 支持的服务)。

Embedding Model 用于在将数据存入 Elasticsearch 之前创建数据的向量。要使用 OpenAI,我们需要指定 API key:

spring.ai.openai.api-key=...

你可以将它定义为环境变量,比如 SPRING_AI_OPENAI_API_KEY,避免将凭证写入源代码。

我们要上传文件,所以一定要自定义允许上传到 servlet 容器的数据大小:

spring.servlet.multipart.max-file-size=20MB
spring.servlet.multipart.max-request-size=20M

快完成了!在我们开始写代码之前,先预览一下这个流程。

我们在机器上下载了一个文件(一个棋盘游戏规则列表),重命名为 test.pdf,放在 ~/Downloads/test.pdf。

该文件将发送到 /rag/ingest 端点(根据你的本地设置替换路径):

http --form POST http://localhost:8080/rag/ingest path@/Users/jlong/Downloads/test.pdf

这可能需要几秒钟……

在后台,数据被发送到 OpenAI,OpenAI 会为数据创建 embeddings;然后这些数据,包括向量和原始文本,都写入到 Elasticsearch。

这些数据和所有的 embeddings 就是魔法所在。然后我们可以通过 VectorStore 接口查询 Elasticsearch。

完整流程如下:

  • HTTP 客户端将你选择的 PDF 上传到 Spring 应用。
  • Spring AI 负责从 PDF 提取文本,并将每页分成 800 字符的块。
  • OpenAI 为每个块生成向量表示。
  • 分块文本和向量都会存储到 Elasticsearch。

最后,我们将发出一个查询:

http :8080/rag/query question=="where do you place the reward card after obtaining it?" 

然后我们会得到一个相关的答案:

After obtaining a Reward card, you place it facedown under the Hero card of the hero who received it.
Found at page: 28 of the manual

不错!这整个过程是怎么工作的?

  • HTTP 客户端把问题提交给 Spring 应用。
  • Spring AI 从 OpenAI 获取问题的向量表示。
  • 利用这个向量,它在 Elasticsearch 中存储的文本块里搜索相似文档,并检索最相似的文档。
  • 然后 Spring AI 把问题和检索到的上下文发送给 OpenAI,生成大语言模型(LLM)的答案。
  • 最后,它返回生成的答案和检索到的上下文引用。

让我们深入看看 Java 代码,了解它到底是怎么工作的。

首先是 Main 类:它是任何普通 Spring Boot 应用的标准主类。

@SpringBootApplication
public class DemoApplication {
 	public static void main(String[] args) { 
     		SpringApplication.run(DemoApplication.class, args);
 	}
}

没什么特别的。继续...

接下来,是一个基础的 HTTP 控制器:

@RestController
class RagController {

   private final RagService rag;

   RagController(RagService rag) {
       this.rag = rag;
   }

   @PostMapping("/rag/ingest")
   ResponseEntity<?> ingestPDF(@RequestBody MultipartFile path) {
       rag.ingest(path.getResource());
       return ResponseEntity.ok().body("Done!");
   }

   @GetMapping("/rag/query")
   ResponseEntity<?> query(@RequestParam String question) {
       String response = rag.directRag(question);
       return ResponseEntity.ok().body(response);
   }
}

控制器只是调用了我们构建的一个服务,用来处理文件的摄取并写入 Elasticsearch 向量存储,然后方便地对同一个向量存储进行查询。

我们来看一下这个服务:

@Service
class RagService {

   private final ElasticsearchVectorStore vectorStore;

   private final ChatClient ai;

   RagService(ElasticsearchVectorStore vectorStore, ChatClient.Builder clientBuilder) {
       this.vectorStore = vectorStore;
       this.ai = clientBuilder.build();
   }

   void ingest(Resource path) {
       PagePdfDocumentReader pdfReader = new PagePdfDocumentReader(path);
       List<Document> batch = new TokenTextSplitter().apply(pdfReader.read());
       vectorStore.add(batch);
   }

  // TBD
}

这段代码处理所有的摄取:给定一个 Spring Framework 的 Resource,它是一个字节容器,我们使用 Spring AI 的 PagePdfDocumentReader 读取 PDF 数据(假设是 .PDF 文件——确保在接受任意输入之前尽量验证!),然后用 Spring AI 的 TokenTextSplitter 进行分词,最后将得到的 List 添加到向量存储实现 ElasticsearchVectorStore 中。

你可以通过 Kibana 确认:在发送文件到 /rag/ingest 端点后,打开浏览器访问 localhost:5601,然后在左侧菜单中导航到 Dev Tools。在那里你可以发出查询,和 Elasticsearch 实例中的数据交互。

现在是有趣的部分:我们如何根据用户查询把数据取回来?

下面是在名为 directRag 的方法中对查询的初步实现。

String directRag(String question) {
   // Query the vector store for documents related to the question
   List<Document> vectorStoreResult =
           vectorStore.doSimilaritySearch(SearchRequest.builder().query(question).topK(5)
                   .similarityThreshold(0.7).build());

   // Merging the documents into a single string
   String documents = vectorStoreResult.stream()
           .map(Document::getText)
           .collect(Collectors.joining(System.lineSeparator()));

   // Exit if the vector search didn't find any results
   if (documents.isEmpty()) {
       return "No relevant context found. Please change your question.";
   }

   // Setting the prompt with the context
   String prompt = """
           You're assisting with providing the rules of the tabletop game Runewars.
           Use the information from the DOCUMENTS section to provide accurate answers to the
           question in the QUESTION section.
           If unsure, simply state that you don't know.
          
           DOCUMENTS:
           """ + documents
           + """
           QUESTION:
           """ + question;


   // Calling the chat model with the question
   String response = ai
           .prompt()
           .user(prompt)
           .call()
           .content();

   return response +
           System.lineSeparator() +
           "Found at page: " +
           // Retrieving the first ranked page number from the document metadata
           vectorStoreResult.getFirst().getMetadata().get(PagePdfDocumentReader.METADATA_START_PAGE_NUMBER) +
           " of the manual";

}

代码很简单,但我们分几步来看:

  1. 用 VectorStore 执行相似度搜索。

  2. 从所有结果中,获取底层的 Spring AI Documents 并提取它们的文本,全部拼接成一个结果。

  3. 把 VectorStore 的结果连同指示模型如何处理它们的提示语和用户的问题一起发给模型。等待响应并返回。

这就是 RAG(检索增强生成)。意思是我们用向量库中的数据来辅助模型的处理和分析。现在你知道怎么做了,希望你永远不需要亲自写!至少不用像这样写:Spring AI 的 Advisors 可以让这个过程更简单。

Advisors 允许你对模型的请求做前处理和后处理,同时为你的应用和向量库之间提供抽象层。在构建文件中添加以下依赖:

<dependency>
   <groupId>org.springframework.ai</groupId>
   <artifactId>spring-ai-advisors-vector-store</artifactId>
</dependency>

在类里添加另一个方法,叫 advisedRag(String question):

String advisedRag(String question) {
   return this.ai
           .prompt()
           .user(question)
           .advisors(new QuestionAnswerAdvisor(vectorStore))
           .call()
           .content();
}

所有的 RAG 模式逻辑都封装在 QuestionAnswerAdvisor 中。其他的就像对 ChatModel 的任何请求一样!很棒!

结论

在这个演示中,我们使用了 Docker 镜像,并且在本地机器上完成了所有操作,但目标是构建适合生产环境的 AI 系统和服务。你可以做很多事情来实现这个目标。

首先,你可以添加 Spring Boot Actuator 来监控 token 的消耗。token 是衡量模型请求复杂度(有时也是成本)的代理指标。

你已经在类路径上添加了 Spring Boot Actuator,只需指定以下属性来显示所有指标(由出色的 Micrometer.io 项目捕获):

management.endpoints.web.exposure.include=*

重启你的应用。发起一次查询,然后访问:http://localhost:8080/actuator/metrics。搜索 “token”,你会看到应用使用的 token 信息。一定要关注这些信息。当然,你也可以使用 Micrometer 对 Elasticsearch 的集成,将这些指标推送过去,让 Elasticsearch 成为你的时间序列数据库!

你还应该考虑,每次请求像 Elasticsearch、OpenAI 或其他网络服务时,都是 IO 操作,并且这些 IO 通常会阻塞执行的线程。Java 21 及以后版本带来了非阻塞的虚拟线程,大幅提升了可扩展性。用以下方式启用:

spring.threads.virtual.enabled=true

最后,你会想把你的应用和数据托管在一个能让它们茁壮成长和扩展的地方。我们相信你可能已经考虑过在哪里运行你的应用,但你的数据会托管在哪里?我们推荐 Elastic Cloud。它安全、私密、可扩展且功能丰富。我们最喜欢的部分是,如果你愿意,可以选择无服务器版本,由 Elastic 来负责报警,而不是你!

原文:Spring AI and Elasticsearch as your vector database - Elasticsearch Labs

相关推荐

AgentHack Shanghai|基于阿里云AI搜索 Elasticsearch x Qoder 构建AI Agent应用

2026年12月12日,Elastic社区、阿里云与Qoder联合举办AgentHack实战活动,聚焦AI编程、搜索检索与智能体工具链融合。参赛者将使用唯一指定工具QoderCN,在一天内完成从需求分析到可演示原型的构建,结合阿里云AI搜索或Elastic生态实现真实场景应用。活动提供技术工作坊、导师答疑及1个月QoderCN专业版会员,鼓励展示数据检索、工具调用与任务闭环的完整链路。参赛者可基于阿里云Elasticsearch、ElasticCloud或自部署环境,打造企业知识问答、业务分析等智能体原型,

Elastic 中国社区官方博客 1448

Elastic 线下 Meetup 将于 2026 年 12 月 19 号下午在西安举行

2026年12月19日,Elastic、阿里云与新智锦绣联合举办西安站ElasticMeetup。活动聚焦Elasticsearch向量搜索、AI Agents构建及企业级知识引擎演进,特邀刘晓国、陈星宇、孔祥超等专家分享技术前沿实践。内容涵盖语义搜索、智能诊断、云原生管控与大模型时代搜索架构升级,助力开发者掌握企业级AI应用落地核心能力。

Elastic 中国社区官方博客 1294

Elastic 线下 Meetup 将于 2026 年 11 月 28 号下午在杭州举行

2026年11月28日,杭州阿里云谷园区将举办AI搜索技术盛会。活动汇聚Elastic社区首席布道师刘晓国、中国电子云高斌、阿里云汤祯捷及预言家科技欧阳楚才等专家,聚焦Elasticsearch向量搜索、AI Agents构建、本体智能体上下文引擎与电商智能导购系统,探讨AgenticSearch 2.0、多模态检索与企业级智能搜索演进。现场设茶歇、合影与抽奖,报名成功后请扫码入群。

Elastic 中国社区官方博客 1089

Elastic:如何成为一名 Elastic 认证工程师,Elastic 认证分析师及 Elastic 认证可观测性工程师

Elasticsearch 无疑是是目前世界上最为流行的大数据搜索引擎。根据 DB - Engines 的统计,Elasticsearch 雄踞排行榜第一名,并且市场还在不断地扩大:能够成为一名 Elastic 认证工程师也是很多开发者的梦想。这个代表了 Elastic 的最高认证,在业界也得到了很高的认知度。得到认证的工程师,必须除了具有丰富的 Elastic Stack 知识,而且必须有丰富的操作及有效的解决问题的能力。拥有这个认证证书,也代表了个人及公司的荣誉。针对个人的好处是,你可以..

Elastic 中国社区官方博客 2万+

Elastic:开发者上手指南

你们好,我是Elastic的刘晓国。如果大家想开始学习Elastic的话,那么这里将是你理想的学习园地。在我的博客几乎涵盖了你想学习的许多方面。在这里,我来讲述一下作为一个菜鸟该如何阅读我的这些博客文章。我们可以按照如下的步骤来学习:1)Elasticsearch简介:对Elasticsearch做了一个简单的介绍2)Elasticsearch中的一些重要概念:cluster,n..........................................................

Elastic 中国社区官方博客 17万+

Elastic:培训视频 - ​在生产环境中配置 Fleet Server 和 Elastic Agent 之间的安全

在这篇文章中,我将会把我写的有些内容录制成视频,供大家参考。希望对大家有所帮助。优酷的视频频道地址在这里。Elastic 简介及Elastic Stack 安装:优酷,腾讯 Elastic Stack docker 部署:优酷,腾讯 Elasticsearch中的一些重要概念(Cluster/Shards/Replica/Document/Type/Index):优酷,腾讯 开始使用El...............

Elastic 中国社区官方博客 1万+

Elasticsearch 简介

Elasticsearch是一个非常强大的搜索引擎。它目前被广泛地使用于各个IT公司。Elasticsearch是由Elastic公司创建并开源维护的。它的开源代码位于https://github.com/elastic/elasticsearch。同时,Elastic公司也拥有Logstash及Kibana开源项目。这个三个开源项目组合在一起,就形成了 ELK软件栈。他们三个共同形成了一个强大的...

Elastic 中国社区官方博客 17万+

认识全新的 Elastic 数据流:面向遥测数据的托管数据管道

Elastic全新数据流功能作为无服务器遥测数据管道,将处理前置至Elasticsearch前端,支持OTLP、Prometheus等协议,自动解析、丰富并路由数据至S3或Elasticsearch。通过可视化映射图实现集中管理,完全托管,零运维,可按需存储数据,并支持用ES|QL直接查询S3中的原始记录。私有预览已开放,助力用户高效构建可观测性管道。

Elastic 中国社区官方博客 143

使用 SpiceDB 为 Elasticsearch 检索增强生成实现细粒度授权

本文介绍如何在Elasticsearch检索增强生成(RAG)流程中实现细粒度访问控制。通过SpiceDB基于关系的访问控制(ReBAC),将权限逻辑从应用代码和kNN查询中剥离,转为在关系图中管理用户与文档间的权限。利用SpiceDB在检索后过滤内容块,确保大语言模型仅接收授权数据,防止敏感信息泄露。该方案支持灵活的逐文档共享、跨部门访问及例外授权,无需重构角色或重新索引。结合LangGraph构建确定性授权节点,强制执行安全边界,抵御提示注入攻击。推荐生产部署时采用超额检索、元数据预筛选与权威数据源同步

Elastic 中国社区官方博客 223

Kibana 中的人工智能连接器:你的 agent 可调用的 90 多个数据源

Elastic推出Kibana内置的90+人工智能连接器,支持Slack、GitHub、Confluence、PagerDuty等平台,让agent在推理中自动调用外部数据源,无需编写集成代码。通过身份验证中继服务,agent可安全访问个人或组织数据,快速关联告警与背景信息(如变更记录、讨论串、文档),显著缩短故障排查时间。结合ElasticCloud Trial,用户可即刻体验完整功能。

Elastic 中国社区官方博客 265

更少的位数,相同的召回率:DiskBBQ 更保守的自动校准扫描

Elasticsearch 现在在成本模型中将文档位数的权重提高至原来的三倍,因此 DiskBBQ 会先尝试预处理和更深层的重排序,再增加一个比特,使量化向量在保持相同召回率的同时维持较小的体积。

Elastic 中国社区官方博客 292

对 OpenTelemetry Kafka 接收器的两项改动,避免一个缓慢的租户拖住其他租户

Elastic通过两项改进解决OpenTelemetry Kafka接收器中的“吵闹邻居”问题:一是为每个Kafka分区引入独立工作单元,实现租户间分区隔离;二是添加租户限流处理器,动态限制各租户在共享发送队列中的槽位占用,防止慢租户阻塞其他租户。结合max_in_flight配置提升单分区吞吐量与内存控制,确保记录不丢失、投递至少一次,同时保障多租户环境下稳定高效的数据处理。

Elastic 中国社区官方博客 357

三次模型调用,占据 92% 的等待时间:使用 OpenTelemetry 实现人工智能 agent 可观测性

使用OpenTelemetry追踪LangChain购物助手,发现92%耗时源于三次模型调用。虽将比较模型替换为更便宜的版本后,成本降低76%-83%,但四成问题响应变慢。通过追踪数据定位瓶颈,结合ES|QL分析词元用量与费用,验证了成本优化但延迟未改善。借助Elastic AI Agent建议,进一步测试return_direct=True以跳过冗余调用,实现性能与成本双赢。可观测性助力精准决策,确保答案正确、响应高效。

Elastic 中国社区官方博客 416

Elasticsearch:稠密向量字段类型

dense_vector字段用于存储稠密向量,支持k近邻搜索(kNN),默认启用索引并使用余弦相似度。可接受浮点数数组或Base64编码字符串输入,支持自动量化(如int8、int4、bbq)以降低内存占用。通过index_options配置索引类型(如hnsw、bbq_disk),并可启用过采样与重新评分提升精度。向量默认不存储于_source中以节省空间,可通过fields或_source.exclude_vectors显式返回。支持bit向量及GPU加速索引,适用于高维向量场景。

Elastic 中国社区官方博客 300

使用 Qoder 将 CSV 文件导入 Elasticsearch

本文演示如何通过Qoder智能助手,仅用4轮对话,将IMDB电影数据CSV文件(10,178条)高效导入Elasticsearch。无需编写代码,Qoder自动完成依赖安装、连接配置、字段类型推断(text/keyword/double)、数据验证及导入,支持自定义映射与数据转换,耗时约30秒,显著简化数据导入流程。

Elastic 中国社区官方博客 255

两条规则,一次故障,一条告警:变点检测如何减少告警噪声

Elastic Carlos Crespo揭示了基于ES|QL规则的AI agent如何通过重运行查询验证告警真实性,实现从日志变化到重大事件告警的自动化。系统先通过变点检测识别规则行为突变,再由发现agent核实故障存在性、规模与影响范围,并合并同类信号以减少噪声。每条告警均附带可追溯的查询证据,确保结论可验证。最终生成的告警包含严重程度、置信度、受影响拓扑及量化指标,支持运维决策。该流程结合代码与模型分工,保障可靠性与可解释性,已在多场景测试中验证有效性。

Elastic 中国社区官方博客 344

把词向量“贴”在地球仪上:用球面视角看 Embedding 的真实几何

本文通过将归一化词向量投影至3D球面,利用slerp绘制大圆弧,以真实反映余弦相似度对应的测地线距离。相比传统PCA平面散点图,球面可视化避免几何扭曲,直观呈现词间语义关系。结合Plotly实现交互式“词语地球仪”,可旋转观察聚类、跨语言对齐(如“cat”与“猫”),并对比高维真值与降维后距离的失真。代码简洁(<200行),支持模型替换与扩展,揭示“向量相近”在球面上的真实形态。

Elastic 中国社区官方博客 269

我们的 agent 技能如何调研、构建和测试完整的 Elastic 集成

作者:来自 Elastic我们让 agent 技能处理美国国家标准与技术研究院的国家漏洞数据库接口,得到了两个数据流和一个经过验证的通用表达式语言程序,并通过了流水线测试和系统测试。调研发现,一天中 78% 的通用漏洞与披露记录都是旧记录的重新发布,这一发现改变了设计。Elasticsearch 原生集成了业界领先的生成式人工智能工具和服务提供商。欢迎观看我们的网络研讨会,了解如何,或使用构建可用于生产环境的应用。要为你的使用场景构建最佳搜索解决方案,立即开始,或在你的上试用 Elastic。

Elastic 中国社区官方博客 137

基于 Elasticsearch 与 Jina AI 的全模态智能搜索实践:技术全解析

是一个结构清晰、覆盖全面且极具实操价值的开源项目。它不仅展示了Jina AI 多模态模型在非结构化数据表征上的强悍性能,也展现了在混合检索(BM25 + k-NN + RRF)以及多模态 RAG 架构上的工程实践。无论是准备构建企业级智能知识库、多媒体图库检索系统,还是探索音视频多模态推荐,该项目都提供了非常优秀的代码模版与架构参考。

Elastic 中国社区官方博客 221

你的日志早已写好告警:在 Elasticsearch 中生成 ES|QL 检测查询

Elastic Observability Labs展示如何基于OpenTelemetry日志自动生成精准的ES|QL检测查询。通过30个知识指标(27个推断、3个计算),生成10条查询,其中4条转化为Kibana告警规则。查询严格遵循三条提示词规则:精确匹配短语、不依赖log.level、仅在同文档中组合谓词。正常运行时匹配0条,故障期间捕获676条支付服务异常日志。查询随依赖知识失效自动停用,确保持续有效性。

Elastic 中国社区官方博客 688

基于 Jina OCR v1 与 Elasticsearch 的 PDF 智能混合检索与 RAG 系统实战指南

本文介绍开源项目jina-ocr-v1-pdf,基于JinaOCRv1高精度视觉解析与Elasticsearch的混合检索(RRF),构建端到端PDF智能问答系统。通过PyMuPDF渲染高清图像、并发OCR提取结构化文本(Markdown/HTML),结合自动切片向量化与BM25+语义检索融合,实现精准页码定位与上下文相关性提升。配合Streamlit前端与Kibana监控,支持企业级文档智能处理,有效解决扫描件、多栏、表格等复杂排版难题,为RAG应用提供高效、可扩展的技术范本。

Elastic 中国社区官方博客 567

Elastic Cloud 无服务器服务审计日志:将审计记录发送到可观测性或安全解决方案

ElasticCloud无服务器服务推出审计日志投递功能,支持将Elasticsearch与Kibana的活动日志(如索引变更、登录行为、数据访问)自动投递至同一组织内的可观测性或安全项目。附带8条告警规则和7个仪表板,涵盖凭据攻击检测、对象取证、数据访问追踪等场景。通过忽略筛选条件可降低存储成本,实现按需保留关键证据。支持跨项目日志聚合,助力安全与合规团队高效调查。立即免费试用14天,体验AI驱动的搜索与智能监控。

Elastic 中国社区官方博客 187

Elastic 在《Forrester Wave™:2026 年第四季度智能运维平台》报告中被评为强劲表现者

Elastic在《ForresterWave®:2026年第四季度智能运维平台》中被评为强劲表现者,获五项最高评分,涵盖算法可信度、可观测性即代码、AI技术栈、数据主权与定价透明度。其人工智能站点可靠性工程师以透明推理、完整上下文、持续学习和开放标准为核心,实现可验证排查、高效存储与跨环境兼容,助力团队信任AI、提升响应效率,推动智能运维迈向可验证、可进化的新阶段。

Elastic 中国社区官方博客 198

使用 OpenTelemetry 在 Elastic 中实现 Claude 平台的人工智能 agent 可观测性

Elastic与Claude平台集成,通过OpenTelemetry将AI agent追踪数据实时发送至Elastic,实现无代码观测。用户可在Kibana中查看模型请求、工具调用及上下文协议的完整交互轮次,包含耗时、词元计数与对话内容。支持服务清单、告警规则与SLO设置,结合SDK可实现跨服务追踪。免费云试用已开放,快速接入即可全面掌握Claude agent性能与成本。

Elastic 中国社区官方博客 899

三个区域、三个 Kibana、一个视图:跨集群搜索登陆 Elastic 合成监测

Elastic 9.5推出合成监测跨集群搜索功能,实现多集群监测器统一视图。无需复制数据,中央Kibana可实时查询远程集群的探测结果,展示状态、用户旅程、截图与证书,支持按远程集群筛选与分组。配置仍保留在原集群,仅提供只读访问,管理需返回源Kibana。适用于有状态部署,暂不支持无服务器服务。告警跨集群功能正在开发中。

Elastic 中国社区官方博客 385

Elastic 重大事件功能如何将 100 条日志样本转化为检测规则

本文介绍Elastic重大事件功能如何通过智能日志采样,从100份样本中提取27个知识指标(如服务、依赖关系、技术等),构建有证据支撑的日志源描述,进而生成精准检测规则。相比均匀采样易遗漏罕见故障信息,该系统采用三路分层采样(按实体筛选、多样性、随机)确保覆盖长尾模式,并通过循环迭代与去重机制提升准确性。知识指标可审核、手动保留或排除,支持持续接入。第二部分将基于这些指标生成可执行的查询,实现从“看到”到“检测”的跨越。

Elastic 中国社区官方博客 305

给海量查询“减负”:列式查询改写如何让检索更“省力”

Elasticsearch 9.5.0推出的列式查询改写技术,实现“零改造、高兼容、高精准”的查询优化。通过按需读取字段、谓词下推与嵌套扁平化,显著降低冗余读取与解码开销。基于1.8亿条日志的实测验证:16个用例命中数完全一致,核心时延持平,边界场景稳定,DSL语法兼容。系统自动降级兜底,确保功能可用。该技术特别适用于日志检索等海量数据场景,为集群性能提升提供开箱即用的底层支撑。

Elastic 中国社区官方博客 640

Elastic 如何帮助奥迪 Revolut F1® 车队在工程软件中找到关键信息

Elastic与奥迪RevolutF1®车队达成多年合作,将作为2026年美国大奖赛官方赛事合作伙伴,并自2027年起成为其官方搜索与可观测性供应商。通过Elastic技术栈(Logstash、Elasticsearch、Kibana),车队实现跨系统日志与遥测数据的统一视图,助力工程师在毫秒级内快速排查问题,提升软件可靠性。该合作不仅强化工程效率,更推动AI辅助诊断与决策支持,为赛车性能持续优化提供技术支撑。

Elastic 中国社区官方博客 220

5 分钟内将 56 页扫描文档转化为带引用的答案:面向搜索无法读取的文档的检索增强生成流水线

通过Elasticsearch与jina-ocr-v1结合,可将扫描版PDF(如56页植物指南)快速转化为可检索、可引用的知识库。该流程利用单一模型完成文档解析,输出结构化Markdown,再由Elasticsearch自动分块并生成嵌入向量,支持混合检索(关键词+语义)。用户以自然语言提问,系统返回带页码引用的答案及推荐商品,全程在统一平台内完成,无需自建流水线。

Elastic 中国社区官方博客 499

我们如何通过 70 多个拉取请求,将 OpenTelemetry Java agent 迁移到 invokedynamic

Elastic团队历时三年,将OpenTelemetry Java Agent从内联字节码插桩迁移至基于invokedynamic的类加载器隔离模式,支持100+插桩模块,提升可维护性与调试能力。相比此前三人团队的迁移,此次协作规模扩大,通过渐进式发布、运行时开关与自动化工具确保生产稳定。新架构实现插桩代码独立加载、兼容Java平台模块系统,并解决旧版本字节码兼容性问题。2026年7月,相关任务正式关闭,标志着迁移完成。

Elastic 中国社区官方博客 332
上一篇: Elastic:什么是 DevOps?
下一篇: Elasticsearch Synthetic _source
Elastic 中国社区官方博客
Elastic 中国社区官方博客 企业官方账号 企业官方账号 领域专家: 大数据技术领域 领域专家: 大数据技术领域
博客等级 码龄12年 5万+粉丝 3113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值