文档首页/ 云搜索服务 CSS/ 用户指南/ 向量数据库/ 对比CSS向量引擎和OpenSearch开源向量引擎
更新时间:2026-04-24 GMT+08:00
分享

对比CSS向量引擎和OpenSearch开源向量引擎

为应对AI搜索系统对海量高维数据检索的需求,CSS服务提供两种向量检索引擎方案:一是集成自主研发能力的CSS向量引擎,二是兼容OpenSearch社区标准的OpenSearch开源向量引擎。本文档将从功能特性、技术原理、操作语法等维度系统对比两种引擎,助力您基于业务场景做出合适的技术选型。

功能介绍

表1 功能特性介绍

介绍维度

CSS向量引擎

OpenSearch开源向量引擎

定位

CSS服务自主研发的向量检索引擎,基于Elasticsearch/OpenSearch内核深度定制,旨在提供高性能、高稳定性的企业级向量检索能力。

OpenSearch社区提供的开源向量检索能力,由k-NN Plugin驱动,依赖Faiss、NMSLib、Lucene等开源库实现,完全遵循OpenSearch的开源语法与生态标准。

使用语法

提供专有索引语法和查询语法。

遵循开源OpenSearch KNN(K-Nearest Neighbors)或ANN(Approximate Nearest Neighbor)语法。推荐ANN语法。

适用场景

追求在CSS服务上的高性能、稳定性及开箱即用体验。

需要和社区保持高度兼容性的场景。

支持的集群版本

  • Elasticsearch:7.6.2、7.10.2
  • OpenSearch:1.3.6、2.19.0

所有OpenSearch版本

相关文档

使用CSS向量引擎

Vector search

两者相似之处

  • 算法支持:均支持HNSW、IVF、PQ、SQ等主流向量索引算法。
  • 查询支持:均支持向量检索、前置过滤检索以及混合检索。
  • 性能要求:两者均使用C++语言实现核心计算逻辑,且均需高内存配置以发挥性能优势。

核心能力差异

表2 核心能力对比

对比维度

CSS向量引擎

OpenSearch开源向量引擎

集成度

深度集成CSS服务,享受服务整体SLA保障和运维支持。

作为OpenSearch的一个插件(k-NN Plugin)运行,依赖社区迭代。

易用性

需学习专有API,与开源语法不直接兼容。

使用开源OpenSearch ANN/KNN语法。

灵活性

算法优化策略由CSS服务提供,调优配置选项相对集中。

可自由组合使用Faiss、NMSLib等开源库,参数调优粒度细。

性能优化

支持专有索引内存管理,调优相对简单。

依赖Faiss/NMSLib参数及OpenSearch配置调优。

操作语法差异

表3 关键操作语法对比

对比维度

CSS向量引擎

OpenSearch开源向量引擎

索引创建

创建自研向量索引,依赖关键参数index.vector、type。

示例:

PUT /my_index 
{
  "settings": {
    "index": {
      "vector": true
    }
  },
  "mappings": {
    "properties": {
      "image_vector": {
        "type": "vector",
        "dimension": 2,
        "indexing": true,
        "metric": "euclidean"
      },
      "price":{"type": "float"}
    }
  }
}

创建ANN向量索引,依赖关键参数index.knn、type。

示例(适用OpenSearch 2.x及以上版本):

PUT /my_index
{
  "settings": {
    "index": {
      "knn": true
    }
  },
  "mappings": {
    "properties": {
      "image_vector": {
        "type": "knn_vector",
        "dimension": 2,
        "method": {
          "name": "hnsw",
          "space_type": "l2",
          "engine": "faiss"}
      },
      "price":{"type": "float"}
    }
  }
}

查询语法

执行向量检索,依赖关键参数query.vector。

示例:

GET /my_index/_search
{
  "query": {
    "vector": {
      "image_vector": {
        "vector": [1.0,2.0],
        "topk": 3,
        "filter": {"range": {"price": {"lte": 300}}}
      }
    }
  }
}

执行向量检索,依赖关键参数query.knn。

示例(适用OpenSearch 2.x及以上版本):

GET /my_index/_search
{
  "query": {
    "knn": {
      "image_vector": {
        "vector": [1.0, 2.0],
        "k": 3,
        "filter": {"range":{"price":{"lte": 300 }}}
      }
    }
  }
}

相关文档

相关文档