博客

Elasticsearch 向量数据库:数分钟内即可完成部署,能以超高性价比扩充至千亿规模

混合检索的难点部分已经解决,配备优化的默认设置、第三方和原生 Jina AI 模型以及开箱即用的托管型 GPU 推理功能。您可以构建快速、可扩展的 AI 应用,无需构建基础架构。

使用自定进度的 Search AI 实践学习,尝试向量搜索。您可以开始免费云服务试用,或立即在您的本地计算机上试用 Elastic。

Elasticsearch 是全球部署最广泛的向量工作负载平台之一,为 GitHub、Docusign、Seismic 等众多公司的语义搜索、检索增强生成 (RAG) 以及推荐功能提供支持。今天,我们正式发布 Elasticsearch 向量数据库,这是一款专为基于向量的应用进行优化的全新无服务器产品。您只需提供文档和查询指令,我们来负责处理嵌入、索引调优以及基础架构。此外,该产品还兼具低成本和可扩展的优势。 

对于新用户而言,这是运行高质量向量搜索的最快方式。如果您已在使用 Elasticsearch,这款新产品能够在您的数据所在平台上实现向量搜索,您无需引入任何新系统。Elasticsearch 向量数据库支持多种应用场景,例如为大型语言模型 (LLM) 提供事实依据,为 AI 智能体赋予检索与记忆能力,以及处理数千亿个向量等。立即创建新项目,只需几分钟即可开始使用。

一个引擎,满足所有向量应用场景

Elasticsearch 向量数据库专为使用向量构建应用程序的用户而设计:

  • RAG:通过密集和稀疏向量检索为您的 LLM 检索适当的上下文,或者采用结合向量检索和词汇检索的混合搜索。您的生成质量会随着检索质量的提升而提高。

  • AI 智能体:为智能体提供针对文档和对话记忆的快速筛选检索,满足多步智能体循环所需的低延迟要求。

  • 语义搜索:根据含义而非关键字进行匹配,只需一种字段类型且无需任何管道代码。

  • 推荐和相似度:针对产品、图像或任何内容大规模查找最近邻。

您的向量工作负载所需的一切,开箱即用且经过优化

构建基于向量的应用程序意味着将多个独立部分连接起来:设置并托管嵌入模型,通过这些模型为您的文档编制索引,高效存储向量,将嵌入模型应用于每个查询,与向量存储进行匹配,以及最后检索匹配项背后的文档。Elasticsearch 向量数据库可为您处理所有这些操作,无需进行额外配置或设置。

使用 vectordb_document 索引模式进行向量索引

vectordb_document 索引模式是一种专为向量优先型工作负载构建的新索引配置,默认启用,因此您可以获得专家会选择的设置。以下是它会启用的功能:

  • 默认使用 bfloat16:向量的存储大小仅为 float32 的一半,对召回率的影响可忽略不计,甚至在考虑量化之前,就能将您的磁盘占用空间大致减半。

  • 排除源向量:在 Elasticsearch 中,您的嵌入向量已存在于用于搜索的索引结构中;在 _source 中保留第二份原始副本只会增加存储占用并降低获取结果的速度。我们排除了重复项,以便更快获得响应并减少存储空间。

  • 将正确的文件预加载到缓存中:向量查询最先访问的数据结构会提前预热到内存中,从而确保无论是第一次查询还是第一千次查询,速度都快如闪电。

  • 并行合并:合并可将分段整合为组织更有序的向量结构,从而同时提升召回率并改善延迟,而以多线程方式运行这些合并则可以更快达成这一目标。

向量存储、压缩和自动调优

  • 您的向量会自动压缩。更好的二进制量化 (BBQ) 可在保持召回率的同时将向量的内存占用最多减少 32 倍,而 DiskBBQ 则能针对大规模工作负载进一步降低内存需求。 

  • 选择启用自动校准,该功能会根据您的数据调整每个分段的量化参数,并在数据发生漂移时在每次合并时重新调整。在 18 个数据集上的测试结果显示,每秒查询数 (QPS) 平均提升了 16.7%,且大多数数据集的召回率也有所提高。

托管 GPU 推理上的嵌入

  • 通过原生 Jina AI 嵌入和重排序模型生成嵌入向量,或引入第三方模型;所有模型均在 Elastic Inference Service (EIS) 提供的托管 GPU 上运行,无需运维模型服务器。如果您愿意,您也可以选择自行托管。

  • semantic_text 字段类型可自动处理分块和嵌入以及查询,这是市面上实现语义搜索的最简单途径。 

混合搜索和过滤向量搜索

  • 混合搜索是内置功能,可在单个查询中结合全文检索和向量检索。您可以使用倒数排序融合 (RRF) 或您所需的任何其他融合机制来融合结果。在混合搜索中,向量搜索部分的配置往往最具挑战性;而借助 Elasticsearch 向量数据库,这一难题迎刃而解,您的整个混合技术栈也会变得更加出色。 

  • 借助带过滤功能的向量搜索,将元数据过滤作为向量检索过程本身的一部分来实施,而不是将其作为事后补救措施,从而避免损害召回率。

从第一天起即面向企业

您还可以获得基于角色的访问控制 (RBAC)、审计日志,以及纯向量数据库通常缺乏的合规性认证。

扩展时经济实惠且具有可预测性

Elasticsearch 向量数据库旨在让您随着业务增长仍可负担:BBQ 和 DiskBBQ 压缩可使存储线性增长并保持较低内存占用,这意味着即使扩展到数千亿个向量,费用也不会大幅攀升。您实际支付的费用由您已知的数字决定:存储的数据量、索引的数据量,以及所需的搜索容量。估算您的文档数量、向量维度和查询负载,您便可在创建项目之前算出所需费用。您还可以在月底逐项了解账单明细。没有不透明的计算单元,也不会因后台操作产生意外费用。

如何开始使用 Elasticsearch 向量数据库

创建无服务器向量数据库项目

创建新的 Elastic Cloud 无服务器向量数据库项目。将数据指向终端,即可开始编入索引。

使用 semantic_text 创建索引

向量索引模式负责处理向量配置。使用 semantic_text 意味着系统会在托管 GPU 推理上为您管理嵌入和分块设置以及索引设置,无需构建嵌入管道。

PUT my-vectors
{
"mappings": {
"properties": {
"description": { "type": "semantic_text" }
    }
  }
}

采集文档

索引文本,系统便会为您生成嵌入。

POST /my-vectors/_doc
{
  "id": "park_rocky-mountain",
  "title": "Rocky Mountain",
  "description": "Bisected north to south by the Continental Divide, this portion of the Rockies has ecosystems varying from over 150 riparian lakes to montane and subalpine forests to treeless alpine tundra."
}

运行语义搜索查询

查询您刚刚创建的相同语义字段:

GET /my-vectors/_search
{
  "query": {
    "semantic": {
      "field": "description",
      "query": "a mountain range in the middle of north america"
    }
  }
}

然后您会获得返回的结果:

{
  "took": 80,
  "hits": {
    "max_score": 0.7792325,
    "hits": [
      {
        "_index": "my-vectors",
        "_score": 0.7792325,
        "_source": {
          "id": "park_rocky-mountain",
          "title": "Rocky Mountain",
          "description": "Bisected north to south by the Continental Divide, ..."
        }
      }
    ]
  }
}

语义搜索只是开始。运行纯文本查询,或将两者结合为混合查询。您甚至可以构建自己的向量查询,实现完全控制。请参阅文档中的语义搜索快速入门,获取完整说明。

Elasticsearch 中向量搜索的未来展望

我们已经在着手进行后续改进:

  • 更出色的多租户处理:如果您的数据需要按租户保持隔离,我们将为您提供一种速度更快、代码量更少的方法来实现这一目标。

  • 自动索引优化:从“全新索引”到“完全优化”,无需过多人工干预。

  • 持续的基础架构改进:对向量数据库的设置和基础架构进行持续调优,确保您始终获得最佳吞吐量和最快响应。

在 Elastic Cloud Serverless 上试用 Elasticsearch 向量数据库

仅需数分钟,您即可从零开始构建支持混合检索与过滤功能的向量查询应用,并利用生产级默认配置自动完成性能调优。您可以构建快速、可扩展的 AI 应用,无需构建基础架构。

开始使用 Elastic Cloud Serverless,或深入了解完整文档和 API 参考。

这些内容对您有多大帮助?

相关内容

如何衡量和提升 Elasticsearch 搜索召回率:通过混合搜索将召回率从 0.43 提升至 0.75

如何衡量和提升 Elasticsearch 搜索召回率:通过混合搜索将召回率从 0.43 提升至 0.75

Jeffrey Rengifo
我们如何构建 Elasticsearch simdvec,使其成为世界上速度最快的向量搜索之一

我们如何构建 Elasticsearch simdvec,使其成为世界上速度最快的向量搜索之一

Chris Hegarty
基于 Elasticsearch + Jina 嵌入的无监督文档集群

基于 Elasticsearch + Jina 嵌入的无监督文档集群

Matthew Adams
当 TSDS 遇到 ILM:设计不会拒绝延迟数据的时序数据流

当 TSDS 遇到 ILM:设计不会拒绝延迟数据的时序数据流

Bret Wortman
LINQ to Elasticsearch ES|QL:编写 C# 代码,查询 Elasticsearch

LINQ to Elasticsearch ES|QL:编写 C# 代码,查询 Elasticsearch

Florian Bernd

准备好打造最先进的搜索体验了吗?

足够先进的搜索不是一个人的努力就能实现的。Elasticsearch 由数据科学家、ML 操作员、工程师以及更多和您一样对搜索充满热情的人提供支持。让我们联系起来,共同打造神奇的搜索体验,让您获得想要的结果。