国产关系数据库向量能力手册(OceanBase / GaussDB / 金仓)

向量数据库手册 02-融合型向量能力 20.2 KB 原文

国产关系数据库向量能力手册(OceanBase / GaussDB / 金仓)

适用版本:OceanBase 稀疏向量自 V4.3.5 BP2 起支持(2026 最新稳定版本未核实);GaussDB 公有云当前稳定版本未核实;金仓 KES Vector 官方细节未核实,核实于 2026-11 许可与形态:三者均为已有国产关系库内的向量能力,非独立向量库;OceanBase / GaussDB 为官方文档口径,金仓部分为第三方选型资料;许可与商业版边界以各厂商为准 一句话定位:在已有 OceanBase / GaussDB / 金仓实例上用 SQL 原生向量类型与索引做混合检索,不新增一套数据库,也不用 Milvus SDK 迁移业务。 约定:$ 普通用户、# root 或 sudo、<xxx> 为占位符;标 ⚠️ 的是高危操作。 更新时间:2026-11(版本与 API 变化快,执行前请以官方文档复核)


目录

  1. 它是什么、什么时候选它
  2. 版本、许可与官方入口
  3. 安装与启动
  4. 核心概念与数据模型
  5. 快速上手:完整 CRUD 示例
  6. 索引与检索进阶
  7. 生产部署与运维
  8. 高频故障与排障
  9. 常见坑与避坑清单
  10. 速查表
  11. 参考与延伸

1. 它是什么、什么时候选它

1.1 定位与架构(按子产品)

OceanBase:分布式关系库内置向量能力,SQL 原生 VECTOR(n) / SPARSEVECTOR 类型 + VECTOR INDEX,向量与业务表同库,支持事务 / MVCC / 分布式扩展、稠密 + 稀疏混合检索。dense 最多 16000 维;元素仅单精度 float,禁止 NaN / Inf。另有 pyobvector 提供 Python 接入。

华为 GaussDB:企业级分布式关系库原生内置向量引擎,用 SQL 扩展做向量 + 标量混合查询,非独立向量库;类型 FloatVector / BoolVector,支持多表 JOIN,另有 BM25 全文检索 / Tokenweight 自定义分词词典。公有云开发者版可免费试用 1 个月(4U16G)。

人大金仓 KES Vector:第三方选型资料描述为内核级向量引擎,SQL 同时做多表关联与高维向量检索,支持事务一致性、信创适配;暂不支持 GPU 加速,索引构建内存占用高。官方细节未核实,以下相关内容均按第三方资料标注,勿当官方声明。

分层 共同形态 运维含义
进程层 检索在关系库内核 / SQL 执行层完成 无额外进程,复用现有集群连接与事务
存储层 向量是表里的一个列,索引是库内索引 纳入现有备份 / 高可用 / 分布式扩展
接口层 SQL(gsql / OBClient 等) 复用现有驱动,无独立向量服务端口
部署层 建表时声明向量列与 VECTOR INDEX 不新增组件,能力随库升级

核心主题:已有国产关系库时,向量能力是加一个列、加一个索引,不是再部署 Milvus / Qdrant。三者都强调「SQL 同时做标量关联与向量检索」,这正是融合型相对专用向量库的价值。

1.2 横向对照表:定位差异(第 1 章)

维度 OceanBase GaussDB 金仓 KES Vector
形态 分布式关系库内置向量 企业级分布式关系库内置向量引擎 内核级向量引擎(第三方资料)
接入方式 SQL + pyobvector SQL / gsql SQL 多表关联(第三方资料)
事务 / 一致性 事务 / MVCC / 分布式扩展 SQL 扩展 + 多表 JOIN 事务一致性、信创适配(第三方资料)
关键限制 元素仅单精度 float,禁 NaN / Inf 向量索引只支持升序,不支持降序 暂不支持 GPU、索引构建内存占用高(第三方资料)
维度上限 dense 16000 建表 [1,4096],仅 GsDiskANN 支持 4096 未核实
Milvus SDK 兼容 MilvusLikeClient 非 100% 兼容 未核实,且未找到官方兼容声明 未核实
稳定版本 / 许可 未核实 未核实 未核实
证据等级 官方文档 官方文档 第三方选型资料

1.3 适合 / 不适合(按子产品)

OceanBase 适合:已有 OceanBase 集群;需要事务 / MVCC / 分布式扩展与稠密 + 稀疏混合检索;希望用 SQL 或 pyobvector 接入。不适合:需要 100% 兼容 pymilvus(其 MilvusLikeClient 明确不是);维度超 16000;依赖未支持的数据类型。

GaussDB 适合:已有 GaussDB / 公有云版本;需要向量 + 标量混合、多表 JOIN、BM25 / Tokenweight 全文融合;可接受 SQL 接入。不适合:需要降序排序的向量索引(不支持);除 GsDiskANN 外要用 4096 维(其他索引最多 1024 维);依赖 Milvus SDK(无官方兼容声明)。

金仓 KES Vector 适合(基于第三方资料,须核实):信创环境、需要多表关联 + 高维检索 + 事务一致性。不适合(基于第三方资料,须核实):需要 GPU 加速;内存受限、无法承受索引构建期高内存占用。

1.4 规模、链路位置与「何时该换」

项 经验区间(非官方承诺,须实测;金仓为第三方资料)
维度 OceanBase dense ≤16000;GaussDB 建表 [1,4096];金仓未核实
索引维度 GaussDB 仅 GsDiskANN 支持 4096,其他索引 ≤1024
条数 / QPS 官方资料未给出官方数字,按关系库规模与压测评估
常见维度 实际常见 768 / 1024 / 1536;示例用 3~4 维便于阅读

链路位置:离线「文档 → Embedding → 写入业务表的向量列」;在线「query → Embedding → SELECT ... WHERE <标量/关联条件> ORDER BY <距离> LIMIT k → JOIN 取回业务字段 → 展示」。三者都位于关系查询 + 向量召回合一的层,最大价值是多表关联与事务一致性。

该换专用向量库的信号:需要 Milvus SDK / 生态 100% 兼容;需要 GPU、复杂量化族或十亿级分布式向量优化;向量检索要独立弹性扩缩而不拖累核心库;需要降序排序 / 超过索引维度上限等内核限制无法满足。


2. 版本、许可与官方入口

2.1 版本状态表

产品 版本 / 时间点 状态 备注
OceanBase 稀疏向量自 V4.3.5 BP2 起支持 官方能力节点 dense 最多 16000 维
OceanBase 2026 最新稳定版本号 未核实 官方资料「未核实清单」第 7 条明确列出
GaussDB 公有云当前稳定版本号 未核实 官方资料明确列出
GaussDB 是否兼容 Milvus SDK 未核实,未找到官方兼容声明 接入方式为 SQL / gsql
GaussDB 开发者版 可免费试用 1 个月(4U16G) 官方资料给出,非「未核实」
金仓 KES Vector 版本 / 许可 未核实 第三方选型资料,官方细节未核实

避坑:三者的版本与许可大量处于「未核实」状态。方案、CMDB、发版公告里都不要写死稳定版号或许可名称,统一写「以官方为准」。

2.2 许可与官方入口(按子产品)

  • OceanBase:2026 最新稳定版本与许可证未核实;接入可用 SQL 或 pyobvector(pip install -U pyobvector,Python 3.9+)。
  • GaussDB:公有云稳定版本号未核实,是否兼容 Milvus SDK 未核实且无官方兼容声明;接入方式为 SQL / gsql。
  • 金仓:许可与版本未核实,以下相关描述均来自第三方选型资料。
类型 OceanBase GaussDB 金仓
向量类型文档 https://docs.oceanbase.com/oceanbase-database/V4.3.5-vector-data-type https://support.huawei.cn/enterprise/en/doc/EDOC1100599971/f8711f76/product-description —
Python / 兼容文档 https://en.oceanbase.com/docs/common-oceanbase-database-10000000001976353 — —
产品页 官方资料未提供 https://huaweicloud.com/product/gaussdb.html —
第三方资料 — — https://www.kingbase.com.cn/explore/tech-blog/2026年向量数据库选型
官网 / 镜像仓库 / SDK / 控制台 官方资料未提供逐字 URL,勿臆测 官方资料未提供逐字 URL,勿臆测 官方资料未提供逐字 URL,勿臆测

2.3 版本识别与近两年变更

-- 通用做法:查服务端版本(具体函数 / 视图以各产品官方文档为准)
SELECT version();
变更 影响
OceanBase 稀疏向量自 V4.3.5 BP2 起支持 稠密 + 稀疏混合检索的能力基线
OceanBase pyobvector 的 MilvusLikeClient 明确非 100% 兼容 存量 Milvus 代码不能直接搬
GaussDB 索引维度与升序限制 建表 / 建索引前必须核对
金仓相关描述仅为第三方选型资料 选型结论须向厂商复核

3. 安装与启动

3.1 说明与前置条件

本组产品通常已有数据库实例,「安装」实为「在已有库上启用向量能力」。官方资料未提供三者的官方安装命令、镜像 tag 与端口,部署安装以各厂商官方文档为准,勿臆测。前置条件:版本达到各自能力节点(OceanBase 稀疏向量需 V4.3.5 BP2+);具备建表 / 建索引权限;确认向量维度在允许区间内(GaussDB 尤其要按索引类型选维度)。

避坑:金仓部分来自第三方选型资料,其具体安装 / 类型 / 索引细节官方未核实,本章不提供臆造命令,按厂商文档执行。

3.2 方式一:OceanBase(SQL 建表 + VECTOR INDEX)

-- 连接:OBClient / MySQL 客户端连接到 OceanBase 实例
CREATE TABLE t1(
    c1 INT,
    c2 VECTOR(3),
    PRIMARY KEY(c1),
    VECTOR INDEX idx1(c2) WITH (distance=L2, type=hnsw)
);

官方 SQL 示例(维度 3 便于阅读,实际常见 768 / 1024 / 1536)。distance=L2、type=hnsw 取自官方文档。

3.3 方式二:GaussDB(gsql 建表 + 检索)

-- 连接:gsql 连接到 GaussDB 实例
CREATE TABLE t1(id int, repr floatvector(4));
INSERT INTO t1 VALUES (0,'[1,2,3,4]');
SELECT id FROM t1 ORDER BY repr <-> '[1,1,3,2]' LIMIT 2;

官方 SQL 示例取自官方文档(维度 4)。类型为 floatvector(4);<-> 类操作符与 ORDER BY 组合做近邻检索。

3.4 金仓:启用方式

金仓 KES Vector 的具体建表 / 索引语法官方资料未提供(第三方资料只描述能力),故此处不给臆造 SQL;按厂商官方文档的 SQL 方式启用,并核对「多表关联 + 高维检索」的能力边界。

3.5 目录、端口与健康检查

项 说明
端口 三者官方资料均未提供逐字端口,以实际部署 / 官方文档为准;无独立向量端口
数据 / 索引 均在关系库表空间内,纳入现有备份 / 高可用
日志 数据库自身日志;无独立向量日志
健康检查 建带向量列的表 → 插入一条 → 执行近邻检索能返回该行,即能力就绪

判定「向量能力就绪」的可靠方式是完成一次「建表 → 写入 → 近邻检索」闭环;仅能建表不能检索,说明索引 / 距离函数未正确配置。GaussDB 检索语法官方资料已给出,可直接验证;OceanBase 检索函数逐字写法官方资料未给,按官方文档构造后验证。

3.6 生产最小配置建议

认证 / TLS / RBAC / 网络暴露面沿用各库基线(通用运维见根目录手册);建索引前评估内存(金仓第三方资料特别提示索引构建内存占用高);维度与索引类型在建表前定稿(GaussDB 改维度 / 索引涉及重建)。

⚠️ 危险:在已有大表上加 VECTOR INDEX / 改向量列会长时间占用资源并可能影响线上业务,务必在维护窗口、有备份的前提下执行。


4. 核心概念与数据模型

4.1 术语对照(按子产品)

通用术语 OceanBase GaussDB 金仓
稠密向量类型 VECTOR(n) FloatVector(SQL 写 floatvector(n)) 未核实
稀疏 / 二值类型 SPARSEVECTOR BoolVector 未核实
向量索引 VECTOR INDEX GsIVFFLAT / GsDiskANN 未核实
距离函数 / 操作符 distance=L2(索引参数) cosine_distance() / hamming_bool_distance() / <-> 未核实
Python 客户端 pyobvector 无(SQL / gsql) 未核实
全文 / 分词 稠密 + 稀疏混合 BM25 / Tokenweight 多表关联(第三方)

4.2 横向对照表:类型 / 索引 / 维度上限 / 兼容性(第 4 章,重点)

维度 OceanBase GaussDB 金仓 KES Vector
稠密类型 VECTOR(n) FloatVector / floatvector(n) 第三方资料,未核实
稀疏 / 二值 SPARSEVECTOR(V4.3.5 BP2 起) BoolVector 未核实
dense 维度上限 16000 建表 [1, 4096] 未核实
索引类型 HNSW / IVF / HNSW_BQ(RaBitQ) GsIVFFLAT(聚类分桶)/ GsDiskANN(向量标量混合) 未核实
索引维度上限 官方资料未区分 仅 GsDiskANN 支持 4096 维;其他索引最多 1024 维 未核实
元素类型约束 仅单精度 float,禁止 NaN / Inf 官方资料未给出 未核实
排序方向 官方资料未给出 索引只支持升序,不支持降序 未核实
距离 / 函数 distance=L2(SQL 示例)、稠密 + 稀疏混合 cosine_distance() / hamming_bool_distance() / <->、多表 JOIN 未核实
全文 / 混合 稠密 + 稀疏混合检索 BM25 全文 / Tokenweight 自定义分词词典 多表关联 + 高维检索(第三方)
Milvus SDK 兼容 MilvusLikeClient 不是 100% 兼容 未核实,且未找到官方兼容声明 未核实
Python 接入 pyobvector(MilvusLikeClient / ObVecClient) SQL / gsql 未核实
版本 / 许可 未核实 未核实 未核实
证据等级 官方文档 官方文档 第三方选型资料

避坑:这张表是本篇最关键的对照。GaussDB 仅 GsDiskANN 支持 4096 维、索引只支持升序;OceanBase 的 MilvusLikeClient 不是 100% 兼容 pymilvus;金仓整列均为第三方资料、官方细节未核实。把三者混为一谈或把第三方结论写成官方声明,是选型文档最常见问题。

4.3 数据模型、距离方向与生命周期

三者都是「database → schema → table(标量列 + 向量列)→ 向量索引」,一行 = 一个实体,无 collection / partition / load 概念。

  • OceanBase:向量元素仅单精度 float,禁 NaN / Inf;VECTOR INDEX ... WITH (distance=L2, type=hnsw) 在建表时声明;稠密 + 稀疏混合检索。距离方向官方未给出明确口径,L2 类通常越小越相似(经验性,以官方文档为准)。
  • GaussDB:<-> 类操作符、cosine_distance()、hamming_bool_distance();支持多表 JOIN;索引只支持升序排序,不支持降序;BM25 / Tokenweight 可做全文融合。
  • 金仓:SQL 多表关联与高维检索(第三方资料),距离与排序细节未核实。

生命周期:建表即定义向量列与索引;写入随事务提交;查询由 SQL 优化器决定是否用向量索引;一致性沿用各关系库的事务 / MVCC 模型(OceanBase 明确支持事务 / MVCC,金仓为第三方资料所述事务一致性)。


5. 快速上手:完整 CRUD 示例

示例用 3~4 维便于阅读;实际常见 768 / 1024 / 1536 维。GaussDB 的 SQL 取自官方文档;UPDATE / DELETE / DROP / 加列等为关系库通用 SQL(经验性,以各产品文档为准)。

5.1 GaussDB:完整 SQL CRUD(gsql,可直接复制运行)

-- 连接:gsql 连接到 GaussDB 实例
DROP TABLE IF EXISTS t1;
CREATE TABLE t1(id int, repr floatvector(4), category varchar(32));

-- 1) 插入
INSERT INTO t1 VALUES (0,'[1,2,3,4]','tech');
INSERT INTO t1 VALUES (1,'[4,5,6,7]','tech');
INSERT INTO t1 VALUES (2,'[7,1,2,3]','life');

-- 2) 近邻检索(<->,索引只支持升序)
SELECT id, category FROM t1 ORDER BY repr <-> '[1,1,3,2]' LIMIT 2;

-- 3) 带标量过滤的检索
SELECT id, category FROM t1
WHERE category = 'tech'
ORDER BY repr <-> '[1,1,3,2]' LIMIT 2;

-- 4) 更新(通用 SQL)
UPDATE t1 SET repr = '[1,2,3,5]' WHERE id = 0;

-- 5) 删除(通用 SQL)
DELETE FROM t1 WHERE id = 2;

-- 6) 清理(通用 SQL)
DROP TABLE t1;

避坑:GaussDB 向量索引只支持升序排序,不支持降序;ORDER BY ... DESC 不要用。多表 JOIN 与 BM25 / Tokenweight 融合可在此 SQL 之上扩展(官方资料给出能力,逐字函数以官方文档为准)。

5.2 OceanBase:建表、插入与索引

DROP TABLE IF EXISTS t1;
CREATE TABLE t1(
    c1 INT,
    c2 VECTOR(3),
    c3 VARCHAR(64),
    PRIMARY KEY(c1),
    VECTOR INDEX idx1(c2) WITH (distance=L2, type=hnsw)
);
INSERT INTO t1 VALUES (1, '[1,2,3]', 'tech');
INSERT INTO t1 VALUES (2, '[4,5,6]', 'tech');
INSERT INTO t1 VALUES (3, '[7,1,2]', 'life');
-- 近邻检索:官方资料未给出 OceanBase 距离运算符 / 函数的逐字写法,
-- 请按 https://docs.oceanbase.com/oceanbase-database/V4.3.5-vector-data-type 构造 ORDER BY 子句
UPDATE t1 SET c3 = 'tech' WHERE c1 = 1;
DELETE FROM t1 WHERE c1 = 3;
DROP TABLE t1;

避坑:VECTOR INDEX idx1(c2) WITH (distance=L2, type=hnsw) 是官方写法;检索侧的运算符 / 函数名官方资料未核实,故此处不臆造查询体,按官方文档补齐后再做「写入一条 → 近邻检索返回」的闭环验证。

5.3 输出怎么读

列 含义
id / c1 业务主键,用于 JOIN 取回业务字段
category / c3 标量列,验证过滤与多表关联
<-> 结果 距离 / 排序依据,升序取最近(GaussDB 索引只支持升序)

GaussDB 的 <-> 距离方向官方未给出明确口径,通常越小越相似(经验性,以官方文档为准);若结果异常,先核对排序方向与索引类型。

5.4 pyobvector 接入与 MilvusLikeClient 兼容性

$ python3 -m pip install -U pyobvector      # 官方安装命令,Python 3.9+
from pyobvector import MilvusLikeClient, ObVecClient

# 实例化连接参数官方资料未给出逐字签名,按 pyobvector 官方文档构造:
# client = MilvusLikeClient(...)   /   vec_client = ObVecClient(...)

UNSUPPORTED_TYPES = [
    "BINARY_VECTOR", "FLOAT16_VECTOR", "BFLOAT16_VECTOR",
    "SPARSE_FLOAT_VECTOR", "dynamic_field",
]
SQLALCHEMY_ONLY_METHODS = ["load_collection", "release_collection", "close"]

print("MilvusLikeClient 不是 100% 兼容 pymilvus")
print("不支持的类型 / 字段:", UNSUPPORTED_TYPES)
print("需经 SQLAlchemy 的方法:", SQLALCHEMY_ONLY_METHODS)
print("注意:create_collection 实际是建表,语义与 Milvus 不同")

明确列出不支持的类型 / 字段:BINARY_VECTOR、FLOAT16_VECTOR、BFLOAT16_VECTOR、SPARSE_FLOAT_VECTOR、dynamic_field。另外 load_collection / release_collection / close 需经 SQLAlchemy;create_collection 实际是建表。

避坑:旧教程 / 选型文章常写「OceanBase 兼容 Milvus SDK,可直接迁移 pymilvus 代码」。MilvusLikeClient 不是 100% 兼容:上述五类类型 / 字段不支持,且三个方法需走 SQLAlchemy,create_collection 语义是建表。存量 Milvus 业务代码必须逐项核对,不能原样搬。

第 5 章的完整可运行 CRUD 由 5.1 / 5.2 的 SQL 承担;5.4 为 Python 接入兼容性核对(import 齐全、变量有定义)。金仓的具体 SQL 官方资料未提供,不给臆造示例。

5.5 金仓 KES Vector

第三方资料描述为「SQL 同时做多表关联与高维向量检索、事务一致性、信创适配」,但官方细节未核实,无逐字 SQL 可给;按厂商官方文档接入并复核能力边界。


6. 索引与检索进阶

6.1 索引参数调优(按子产品)

产品 参数 / 索引 默认值 影响 建议(经验值,实测为准)
OceanBase VECTOR INDEX ... distance=L2 — 距离度量 与查询一致
OceanBase type=hnsw — HNSW 图 另有 IVF / HNSW_BQ
OceanBase HNSW_BQ(RaBitQ) — 官方称可降约 95% 内存 内存受限时评估
GaussDB GsIVFFLAT — 聚类分桶 维度 ≤1024
GaussDB GsDiskANN — 向量标量混合索引 唯一支持 4096 维
GaussDB BM25 / Tokenweight — 全文融合 / 自定义分词词典 混合检索时搭配
金仓 索引参数 — 未核实 按厂商文档

6.2 横向对照表:索引 / 量化 / 维度 / 兼容性(第 6 章)

维度 OceanBase GaussDB 金仓
索引族 HNSW / IVF / HNSW_BQ GsIVFFLAT / GsDiskANN 未核实
量化 / 压缩 HNSW_BQ(RaBitQ,官方称降约 95% 内存) 官方资料未提供 未核实
维度上限 dense 16000 建表 [1,4096];仅 GsDiskANN 4096,其他 ≤1024 未核实
排序方向 官方资料未给出 只支持升序,不支持降序 未核实
稀疏 / 混合 稠密 + 稀疏混合检索 BM25 全文 / Tokenweight + 向量标量混合 多表关联(第三方)
过滤 pre/post 官方资料未给出 官方资料未给出 未核实
Milvus 兼容 非 100% 兼容 未核实,无官方声明 未核实
Python 接入 pyobvector 无(SQL / gsql) 未核实

6.3 recall 与延迟取舍

官方资料未给出三者的召回 / 延迟官方参数或承诺。方法(经验):用精确距离扫描跑 ground truth,再对同一批 query 在建索引后算 recall@k;OceanBase 可比较 HNSW / IVF / HNSW_BQ,GaussDB 可比较 GsIVFFLAT / GsDiskANN。所有结论须实测,勿套用别产品参数。

6.4 标量过滤、混合检索与多向量

  • 过滤行为:三者都是「SQL WHERE + ORDER BY 距离」形态;pre/post-filter 的官方语义官方资料未给出,以各产品执行计划(EXPLAIN,通用能力)与实测为准,勿把 pgvector / ES 的结论套过来。
  • 混合检索:OceanBase 支持稠密 + 稀疏混合检索(稀疏向量自 V4.3.5 BP2 起);GaussDB 有 BM25 全文检索与 Tokenweight 自定义分词词典,可与向量标量混合查询组合;金仓为 SQL 多表关联(第三方资料)。
  • 多向量 / 稀疏 / 重排:多向量列、两阶段「近似取候选 + 精确重排」为经验做法;金仓「暂不支持 GPU 加速、索引构建内存占用高」为第三方资料,须核实。

6.5 量化与容量估算(经验公式,非官方承诺)

单行向量存储 ≈ 4 × dim 字节(单精度 float);dim=768 → 3072 B ≈ 3.0 KB / 行
OceanBase HNSW_BQ(RaBitQ)官方称可降约 95% 内存(相对基线,具体口径以官方为准)
总容量 ≈ (数据 + 索引) × (1 + 副本数) / 压缩比
GaussDB 高维(4096)只能选 GsDiskANN,索引体积与内存须单独评估
金仓第三方资料提示索引构建内存占用高,规划时预留

系数为经验区间,非官方承诺;用各库的系统表 / 监控实测后做容量规划。


7. 生产部署与运维

  • 高可用 / 分片 / 副本:OceanBase 明确支持事务 / MVCC / 分布式扩展;GaussDB 为企业级分布式关系库;向量列与索引随各自集群的复制 / 备份体系。金仓为第三方资料所述事务一致性,须核实。
  • 备份恢复:沿用各关系库现有备份方案;恢复后核对向量索引是否随数据恢复,必要时重建。
  • 监控(沿用各库监控体系,无独立向量端点;具体视图 / 端点官方资料未提供,以官方文档为准):
指标 关注点 告警阈值(经验值)
向量查询延迟 P99 是否走索引 相对基线翻倍即排查
索引构建内存 金仓第三方提示占用高 接近内存水位即扩容
表 / 索引大小 向量列放大存储 超水位即扩容
慢 SQL / 执行计划 ORDER BY 是否用向量索引 退化为全表扫描即排查
副本 / 分布式延迟 索引同步 沿用各库基线
  • 扩缩容:以 6.5 估算为起点;GaussDB 维度与索引类型强绑定,扩容 / 改索引需重建评估。
  • 升级迁移:核对 OceanBase 稀疏向量 V4.3.5 BP2 能力节点;GaussDB 稳定版本与 Milvus 兼容声明未核实,升级前复核;金仓以厂商文档为准。
  • 安全 / 日志:认证、TLS、RBAC、网络暴露面沿用各库基线(通用运维见根目录手册);向量列同样受权限控制。日志为数据库自身日志,无独立向量日志。

⚠️ 危险:DROP TABLE / 删索引会连带删除向量数据与索引,且 GaussDB 索引只支持升序、维度上限固定,变更索引类型需重建,执行前必须确认备份与回滚方案。


8. 高频故障与排障

症状 可能原因 定位命令 处置
[OB] 建表 / 建索引报类型错误 向量元素含 NaN / Inf 或非单精度 float 检查写入值 清洗为合法 float,禁 NaN / Inf
[OB] 维度超限 dense 超过 16000 维 DESC t1(通用) 降维或核对上限
[OB] 稀疏向量不可用 版本低于 V4.3.5 BP2 查服务端版本(以官方文档为准) 升级到支持稀疏向量的版本
[OB] 搬 Milvus 代码后报错 MilvusLikeClient 非 100% 兼容 核对不支持类型清单 逐项改 SQL / 走 SQLAlchemy
[OB] load_collection / close 异常 需经 SQLAlchemy 检查调用方式 用 ObVecClient / SQLAlchemy 路径
[GaussDB] ORDER BY ... DESC 报错 / 索引不生效 索引只支持升序 检查 ORDER BY 方向 改为升序
[GaussDB] 4096 维建索引失败 仅 GsDiskANN 支持 4096 维 核对索引类型 改用 GsDiskANN 或降到 1024 维
[GaussDB] 其他索引超 1024 维失败 GsIVFFLAT 等最多 1024 维 核对维度与索引类型 降维或换 GsDiskANN
[金仓] 索引构建 OOM 第三方资料提示内存占用高 查内存监控 预留内存、分批建索引(须核实)
[通用] 查不到 / 召回低 索引未建、排序方向错、维度不符 EXPLAIN(通用) 核对索引声明与查询一致性
[通用] 查询慢 退化为全表扫描 EXPLAIN 看执行计划 补建 / 重建向量索引
[通用] 连不上 / 写入失败 实例不可达、权限不足、磁盘满 各库连接 / 权限检查(以官方文档为准) 恢复实例、授权、清磁盘
[通用] 升级后报错 版本能力节点 / 索引结构变化 查服务端版本 按新版本文档重建索引
[通用] 过滤结果变少 WHERE 与近邻排序组合 EXPLAIN + 对比无索引结果 核对过滤条件,以实测为准

9. 常见坑与避坑清单

  1. 现象:文档把 OceanBase / GaussDB / 金仓稳定版号、许可写死。原因:三项官方资料明确未核实。怎么做:统一写「以官方为准」,勿编造。
  2. 现象:把金仓第三方资料结论写成官方声明。原因:金仓部分官方细节未核实。怎么做:全程标注「第三方选型资料」,选型结论向厂商复核。
  3. 现象:以为 GaussDB 兼容 Milvus SDK。原因:未核实且未找到官方兼容声明。怎么做:接入方式按 SQL / gsql,勿承诺 SDK 兼容。
  4. 现象:以为 OceanBase MilvusLikeClient 100% 兼容 pymilvus。原因:不是 100% 兼容。怎么做:明确列出不支持 BINARY_VECTOR / FLOAT16_VECTOR / BFLOAT16_VECTOR / SPARSE_FLOAT_VECTOR / dynamic_field。
  5. 现象:load_collection / release_collection / close 报错。原因:需经 SQLAlchemy。怎么做:走 ObVecClient / SQLAlchemy 路径。
  6. 现象:create_collection 行为与 Milvus 不同。原因:实际是建表。怎么做:按建表语义设计,别按 Milvus collection 语义验收。
  7. 现象:GaussDB 用 ORDER BY ... DESC。原因:向量索引只支持升序、不支持降序。怎么做:一律升序。
  8. 现象:GaussDB 4096 维用 GsIVFFLAT 建索引失败。原因:仅 GsDiskANN 支持 4096 维,其他索引最多 1024 维。怎么做:换 GsDiskANN 或降到 1024 维。
  9. 现象:OceanBase 向量写入含 NaN / Inf。原因:元素仅单精度 float,禁止 NaN / Inf。怎么做:写入前清洗。
  10. 现象:OceanBase 用了 SPARSEVECTOR 却查不到能力。原因:稀疏向量自 V4.3.5 BP2 起支持。怎么做:核对版本节点。
  11. 现象:把别的产品的 pre/post-filter 结论套到国产库。原因:三者过滤官方语义官方资料未给出。怎么做:以 EXPLAIN 与实测为准,勿臆测。
  12. 现象:大表加 VECTOR INDEX / 删索引拖垮业务。原因:DDL 占资源、索引结构绑定。怎么做:⚠️ 维护窗口 + 备份 + 回滚方案,可能引发线上事故。

10. 速查表(横向对照)

操作 OceanBase GaussDB 金仓 KES Vector 说明
稠密类型 VECTOR(3) floatvector(4) 未核实 示例 3 / 4 维
稀疏 / 二值 SPARSEVECTOR(V4.3.5 BP2 起) BoolVector 未核实 —
建表 CREATE TABLE t1(c1 INT, c2 VECTOR(3), PRIMARY KEY(c1), VECTOR INDEX idx1(c2) WITH (distance=L2, type=hnsw)); CREATE TABLE t1(id int, repr floatvector(4)); 按厂商文档 OB / GaussDB 取自官方文档
插入 INSERT INTO t1 VALUES (1, '[1,2,3]', 'tech'); INSERT INTO t1 VALUES (0,'[1,2,3,4]'); 未核实 —
近邻检索 运算符 / 函数以官方文档为准 SELECT id FROM t1 ORDER BY repr <-> '[1,1,3,2]' LIMIT 2; 未核实 GaussDB 取自官方文档
带过滤检索 SQL WHERE + ORDER BY ... WHERE category='tech' ORDER BY repr <-> '[...]' LIMIT 2; 未核实 以 EXPLAIN 实测
索引类型 HNSW / IVF / HNSW_BQ GsIVFFLAT / GsDiskANN 未核实 —
维度上限 dense 16000 建表 [1,4096];仅 GsDiskANN 4096 未核实 其他 GaussDB 索引 ≤1024
排序方向 官方资料未给出 只支持升序 未核实 勿用 DESC
距离 / 函数 distance=L2 cosine_distance() / hamming_bool_distance() / <-> 未核实 —
全文 / 混合 稠密 + 稀疏混合 BM25 / Tokenweight 多表关联(第三方) —
Python 接入 pip install -U pyobvector;MilvusLikeClient / ObVecClient 无(SQL / gsql) 未核实 非 100% 兼容 pymilvus
不支持类型 BINARY_VECTOR / FLOAT16_VECTOR / BFLOAT16_VECTOR / SPARSE_FLOAT_VECTOR / dynamic_field — — 明确清单
需 SQLAlchemy load_collection / release_collection / close — — —
更新 UPDATE t1 SET c3 = 'tech' WHERE c1 = 1; UPDATE t1 SET repr = '[1,2,3,5]' WHERE id = 0; 未核实 通用 SQL
删除 DELETE FROM t1 WHERE c1 = 3; DELETE FROM t1 WHERE id = 2; 未核实 通用 SQL
清理 DROP TABLE t1; DROP TABLE t1; 未核实 ⚠️ 高危
版本识别 SELECT version();(通用) 同左 同左 以各产品文档为准
Milvus 兼容 非 100% 兼容 未核实,无官方声明 未核实 关键选型项
端口 / 路径 值 备注
端口 三者官方资料均未提供逐字端口 以实际部署 / 官方文档为准;无独立向量端口
数据 / 索引 关系库表空间 纳入现有备份 / 高可用
日志 数据库自身日志 无独立向量日志
客户端 OBClient / gsql 等(通用) 以各产品文档为准

11. 参考与延伸

官方 / 资料链接清单

资源 URL
OceanBase 向量数据类型(官方) https://docs.oceanbase.com/oceanbase-database/V4.3.5-vector-data-type
OceanBase pyobvector / 兼容性(官方) https://en.oceanbase.com/docs/common-oceanbase-database-10000000001976353
GaussDB 产品描述 / 维度限制(官方) https://support.huawei.cn/enterprise/en/doc/EDOC1100599971/f8711f76/product-description
GaussDB 产品页(官方) https://huaweicloud.com/product/gaussdb.html
金仓 KES Vector(第三方选型资料,官方细节未核实) https://www.kingbase.com.cn/explore/tech-blog/2026年向量数据库选型

与同册其他产品的关系:已有国产关系库 → 本篇;已有 PG → pgvector.md;已有 ES / OpenSearch → Elasticsearch-OpenSearch.md;已有 Redis → Redis-Vector-Search.md;已有 ClickHouse → ClickHouse.md;需 Milvus SDK 100% 兼容 / 专用向量库 → 01-专用向量数据库 分册。

进阶阅读:OceanBase 向量类型与 VECTOR INDEX 参数、pyobvector 的 MilvusLikeClient 兼容边界;GaussDB 的 GsDiskANN / GsIVFFLAT 维度与排序限制、BM25 / Tokenweight;金仓须向厂商复核第三方资料。

本篇「未核实 / 以官方为准」事项:

  1. OceanBase 2026 最新稳定版本号与许可证未核实(清单第 7 条)。
  2. 华为 GaussDB 公有云当前稳定版本号未核实;是否兼容 Milvus SDK 未核实,且未找到官方兼容声明(清单第 7 条),接入方式为 SQL / gsql。
  3. 金仓 KES Vector 全部细节来自第三方选型资料,官方未核实(内核级向量引擎、多表关联、高维检索、事务一致性、信创适配、暂不支持 GPU、索引构建内存占用高),不得写成官方声明。
  4. OceanBase 向量检索运算符 / 函数的逐字写法未核实,5.2 未给臆造查询体,按官方文档构造。
  5. pyobvector 的 MilvusLikeClient / ObVecClient 实例化签名与方法参数未核实,5.4 只给导入与兼容性核对。
  6. 三者端口、安装命令、控制台 / SDK / 镜像仓库 URL、监控端点官方资料未提供,勿臆测。
  7. 三者过滤 pre/post 官方语义未核实,6.4 只给经验性说明,须以执行计划与实测为准。
  8. 距离方向(L2 / <-> 等)的逐值口径、SELECT version() / EXPLAIN / DESC / 通用 DML 属通用知识与经验性表述,以各产品官方文档为准。
  9. 规模、QPS、容量公式、告警阈值均为经验值,非官方承诺,须实测;OceanBase HNSW_BQ 「降约 95% 内存」为官方称,具体口径以官方为准。