OpenSearch

OpenSearch

开源搜索与分析引擎,内置向量近邻检索

核心功能

OpenSearch 是开源搜索与分析引擎,其 k-NN 插件提供向量近邻检索:以 knn_vector 字段存储嵌入,支持 HNSW、IVF 与多种引擎,可与全文检索混合,适合语义搜索与 RAG。

功能亮点

多引擎

同一向量字段可指定 Faiss、Lucene 等引擎实现

混合检索

向量 k-NN 可与 keyword、filter 查询组合

降内存

on_disk 模式与 pq/sq 编码可显著降低内存

易起步

Docker 一键拉起,_search 中加 knn 子句即可

适用场景

• 在日志或文档检索中叠加向量,实现语义与关键词混合搜索。
• 用 knn_vector 存储商品嵌入,支撑以图搜图。
• 与 RAG 结合,提供私有知识库的自然语言检索。

安装配置

bash
Docker 运行(单节点,关闭安全插件便于本地测试):
docker pull opensearchproject/opensearch:latest
docker run -it -p 9200:9200 -p 9600:9600 -e "discovery.type=single-node" -e "DISABLE_SECURITY_PLUGIN=true" opensearchproject/opensearch:latest

健康检查:
curl http://localhost:9200

或 docker compose 启动:
docker compose up -d

使用方法

bash
创建索引并开启 knn:
PUT /test-index
{
  "settings": {
    "index": {
      "knn": true
    }
  },
  "mappings": {
    "properties": {
      "embedding": {
        "type": "knn_vector",
        "dimension": 3,
        "space_type": "l2"
      }
    }
  }
}

向量近邻查询:
GET /my-vector-index/_search
{
  "size": 3,
  "query": {
    "knn": {
      "embedding": {
        "vector": [1, 2, 3],
        "k": 3
      }
    }
  }
}

关键指标

尚未核验对标产品,此处只列本工具自身指标,不做对比结论。

指标OpenSearch
价格免费
开源
上手难度进阶

相关工具

优点

  • 开源(Apache 2.0),可自托管且与 Elasticsearch API 兼容。
  • 向量检索可与全文、聚合查询在同一引擎内混合。
  • HNSW/Faiss/Lucene 多引擎,可按规模与精度选型。
  • 支持 on_disk 与量化编码,降低大规模内存占用。

缺点

  • NMSLIB 引擎已弃用,新建索引应使用 Faiss 或 Lucene。
  • IVF 索引需先执行 Train API 训练中心后再写入。
  • 向量过滤仅 Faiss 与 Lucene 引擎支持,NMSLIB 不行。
  • Lucene 引擎建议向量数低于 1000 万,超量需评估。