RAG 中的混合搜索对决!OpenSearch Serverless VS Aurora Serverless

前言

今天我要对可作为 Amazon Bedrock Knowledge Bases 向量数据库(搜索引擎)的工具进行对比。

目前,Bedrock Knowledge Base 中支持混合搜索的向量数据库如下:

  • OpenSearch Serverless
  • OpenSearch Managed Cluster(OpenSearch 托管集群)
  • Aurora Serverless V2(PostgreSQL)
  • MongoDB Atlas

本次,我将针对其中使用率较高的OpenSearch ServerlessAurora Serverless V2(PostgreSQL) ,对比二者在混合搜索中的精度表现。

概述

混合搜索是一种结合向量(语义)搜索关键词(全文)搜索来查找相关文档的搜索方式。这种方式既能通过向量搜索实现基于语义的检索,又能通过关键词搜索,在检索过程中纳入指定关键词的考量。

OpenSearch Serverless 与 Aurora Serverless V2(PostgreSQL)的对比

下面我将对本次作为数据存储使用的 OpenSearch Serverless 和 Aurora Serverless V2(PostgreSQL)进行简单对比。

对比维度OpenSearch ServerlessAurora Serverless V2(PostgreSQL)
混合搜索(Bedrock Knowledge Bases)支持支持
中文支持可使用 Kuromoji 等中文形态素分析PostgreSQL 标准全文搜索(目前不支持中文形态素分析)
向量存储格式支持浮点数 / 二进制两种格式浮点数(基于 pgvector 插件)
计费单位OCU / 小时(最小 1 个 OCU,含 0.5 计算 OCU+0.5 存储 OCU)ACU / 小时(最小 0.5 个 ACU)
最小配置计费示例175.22 美元(1 个 OCU:175.2 美元,存储:0.02 美元)87.83 美元(1 个 ACU:87.60 美元,I/O:0.13 美元)

(参考链接:aws.amazon.comaws.amazon.com

OpenSearch Serverless 支持中文形态素分析,因此即便使用中文,也能高精度地进行关键词搜索。另一方面,Aurora Serverless V2(PostgreSQL)在最小配置下的费用更具优势,但由于其默认不支持中文形态素分析,因此在中文混合搜索的精度方面存在不确定性。

精度对比实验

为对比 OpenSearch Serverless 与 Aurora Serverless V2(PostgreSQL)的精度,本次将开展以下两类实验:

  1. 英文数据集的搜索精度对比
  2. 中文数据集的搜索精度对比

尤其对于中文数据集,由于 Aurora Serverless V2(PostgreSQL)不支持中文形态素分析,预计 OpenSearch Serverless 在精度上会更具优势。

1. 实验设置

以下是本次实验使用的基本设置。首先,Bedrock Knowledge Base 的基础设置如下,仅向量存储工具为两者的差异点。

嵌入模型(Embedding Model)嵌入类型(Embedding Type)分块策略(Chunking Strategy)
Titan Text Embeddings V21024 维浮点数向量嵌入分层分块(父块:2000 字符,子块:500 字符,重叠:50 字符)

精度对比将通过 Bedrock Evaluations 完成。

(参考链接:docs.aws.amazon.com

本次对比将采用以下两项指标,指标取值范围均为 0~1,数值越大表示对问题的回答质量越高:

  • Context relevance(上下文相关性):衡量获取的文本与问题在上下文层面的关联程度
  • Context coverage(上下文覆盖率):衡量获取的文本对正确数据中全部信息的覆盖程度

2. 混合搜索对比(英文数据集)

1. 数据集

本次实验使用的数据集如下:Amazon Reviews 2023(2023 年亚马逊评论数据集)

(参考链接:amazon-reviews-2023.github.io

该数据集包含约 2.8 万组 “产品 ID – 评论” 数据,示例如下:

product/productId: B000GKXY4S
product/title: Crazy Shape Scissor Set
product/price: unknown
review/userId: A1QA985ULVCQOB
review/profileName: Carleen M. Amadio "Lady Dragonfly"
review/helpfulness: 2/2
review/score: 5.0
review/time: 1314057600
review/summary: Fun for adults too!
review/text: I really enjoy these scissors for my inspiration books that I am making (like collage, but in books) and using these different textures these give is just wonderful, makes a great statement with the pictures and sayings. Want more, perfect for any need you have even for gifts as well. Pretty cool!

2. 结果(英文)

对比结果如下,
数值越高,评估结果越好。

指标类型OpenSearch无服务器Aurora Serverless V2(PostgreSQL)
上下文相关性0.060.07
上下文覆盖0.190.18

3. 混合搜索对比(中文数据集)

那么,接下来将对核心中文数据集的(检索)精度展开比较分析。​

1. OpenSearch(中文分词设置示例)

由于 OpenSearch Serverless 可使用 Kuromoji 形态素分析(中文分词工具),因此需进行相关配置。

通过该配置,中文文本能被正确分割,进而有望提升关键词搜索的精度。

配置示例

PUT bedrock-knowledge-base-hybrid-index
{
  "mappings": {
    "properties": {
      "AMAZON_BEDROCK_METADATA": {
        "type": "text",
        "index": false
      },
      "AMAZON_BEDROCK_TEXT_CHUNK": {
        "type": "text",
        "analyzer": "custom_kuromoji_analyzer"
      },
      "bedrock-knowledge-base-default-vector": {
        "type": "knn_vector",
        "dimension": 1024,
        "method": {
          "name": "hnsw",
          "engine": "faiss",
          "space_type": "cosinesimil"
        }
      },
      "id": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      }
    }
  },
  "settings": {
    "index": {
      "knn.algo_param": {
        "ef_search": "512"
      },
      "knn": "true",
      "analysis": {
        "analyzer": {
          "custom_kuromoji_analyzer": {
            "tokenizer": "kuromoji_tokenizer",
            "filter": [
              "kuromoji_baseform",
              "ja_stop"
            ],
            "char_filter": [
              "icu_normalizer"
            ]
          }
        }
      }
    }
  }
}

2. 插入的中文文档

本次使用的数据集,是让 ChatGPT 输出的,具体如下。
在混合检索时,我们期望能以 “张居正生平” 作为关键词,检索到相关信息。

张居正像(现藏于中国国家博物馆)

时代 明朝中后期(嘉靖、隆庆、万历年间)

生诞 嘉靖四年五月初三日(1525 年 5 月 24 日)

死没 万历十年六月二十日(1582 年 7 月 9 日)(58 岁卒)

改名 无(一直以 “张居正” 为名,字叔大,号太岳)

字:叔大

号:太岳

谥号:文忠(万历朝初赠,后被追夺,天启朝恢复)

墓所:湖北省荆州市沙市区张居正墓

官职:吏部左侍郎兼东阁大学士、礼部尚书兼武英殿大学士、少师兼太子太师、吏部尚书、中极殿大学士(内阁首辅)

主要事迹 1. 推行 “一条鞭法”,将田赋、徭役和杂税合并,按田亩折算银两征收,简化税制,增加财政收入;2. 实施 “考成法”,考核各级官吏政绩,整顿吏治,提高行政效率;3. 重用戚继光、李成梁等将领,加强北方边防,抵御蒙古部落侵扰,稳定边疆局势;4. 主持治理黄河、淮河,任用潘季驯负责河工,疏通河道,减少水患,保障农业生产。

评估用数据集示例

  • 问题:请告知张居正被任命为吏部尚书的年份
  • 答案:张居正于明万历元年(公元 1573 年) 正式被任命为吏部尚书。

3. 结果(中文)

以下是中文数据集的精度对比结果。数值越大,代表评价结果越好。

Metric typeOpenSearch ServerlessAurora Serverless V2(PostgreSQL)
Context relevance0.450.43
Context coverage1.000.93

如上表所示,尽管优势微弱,但 OpenSearch Serverless 在两项指标上均超过 Aurora Serverless V2(PostgreSQL)。尤其在衡量 “问题回答覆盖度” 的上下文覆盖率(Context coverage)指标上,OpenSearch Serverless 的优势更为明显。

我们认为,这一差异源于 OpenSearch Serverless 通过 Kuromoji 实现了中文形态素分析支持,进而在混合搜索的关键词搜索精度上形成了优势。

此外,我们也对比了两者的搜索速度,结果如下:我们连续执行 5 种不同查询,去除最大值与最小值后计算 “截尾平均值”(Trimmed Mean)进行对比。

OpenSearch Serverless(秒)Aurora Serverless V2(PostgreSQL)(秒)
0.48 秒0.55 秒

从搜索速度来看,OpenSearch Serverless 同样具备更快的检索表现。

总结

本次实验对比了在 Bedrock 知识库中,分别使用 OpenSearch Serverless 与 Aurora Serverless V2(PostgreSQL)实现混合搜索的效果。结果显示,在中文搜索的精度与速度上,OpenSearch Serverless 均优于 Aurora Serverless V2(PostgreSQL)。

需要说明的是,本次验证基于 “数据量较少” 的场景,因此两者的差距并不显著;若后续数据量增加,结果可能会发生变化。不过,从整体来看,两款工具在精度与速度上均具备较高性能,建议根据实际使用场景数据量选择合适的工具。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注