首批通过分布式安全可靠测评,为关键业务系统打造
AI 场景常见问题
更新时间:2026-08-05 14:51:35
本文介绍了 OceanBase AI 数据库使用过程中可能遇到的一些常见问题及相关的原因和解决方法。
混合搜索
Rerank 精排调用外部模型的开销有多大?
Rerank 精排调用外部 AI 模型时,整体开销主要受到以下因素影响:模型大小、请求参数、网络延迟等。推荐使用 Profile 工具进行详细开销分析。
使用
/*+monitor*/Hint 执行混合搜索 SQL:SELECT /*+ monitor */ content FROM HYBRID_SEARCH( TABLE doc_table, '{ "knn": { "field": "vector", "k": 3, "query_vector": "[1, 2, 3]" }, "rerank" : { "model": "aliyun-dashscope/gte-rerank-v2", "field": "content", "query": "oceanbase mysql", "rank_window_size": 3 }, "size": 3 }');执行 Profile 命令,查看执行期物理算子的详细结构及统计信息:
CALL DBMS_XPROFILE.DISPLAY_PROFILE();
需要重点关注的 Profile 信息如下:
- rerank document:参与 rerank 的文档数量。
- rerank api call:rerank 模型的实际 API 调用次数(与
batch_size和rank_window_size有关)。 - rerank elapse:精排过程的总耗时。
- rerank http elapse:Rerank API 进行 HTTP 请求的实际耗时。
通过上述方式,可以直观评估 Rerank 精排阶段调用外部模型所产生的资源和时间消耗。
全文/标量查询并行执行
query_dop 设到很大(如 128)一定更快吗?
不一定。实际并行度受租户线程池容量、数据规模、调度开销限制;过大的 query_dop 在线程紧张时会引发排队,长尾 RT 反而升高。建议从 2 / 4 开始观察收益再调优。
如何验证某条查询确实开启了并行?
可以通过 Query Profile 观察查询实际的并行度。具体步骤如下:
执行你的混合搜索查询,例如:
SELECT tid, __score FROM HYBRID_SEARCH(TABLE passages_test, @q);查看刚刚执行的 SQL 的 Profile 信息(默认使用最近一次
trace_id):SELECT DBMS_XPROFILE.DISPLAY_PROFILE();或者也可以通过显式指定
trace_id查看某次具体的查询:SELECT DBMS_XPROFILE.DISPLAY_PROFILE('<trace_id>');DBMS_XPROFILE.DISPLAY_PROFILE用于展示 SQL 执行计划的性能分析数据,详细信息请参见 DBMS_XPROFILE。判断实际是否为并行执行、并发度为多少:
并行执行:在 profile 的
Fusion Iter节点下会出现parallel task count:N,并嵌套 N 个Task子树,每个 Task 代表一个并行工作线程(worker),N 即实际的并行度。Fusion Iter parallel task count:4 Task Search Driver Iter ... Task Search Driver Iter ... ...串行执行:
Fusion Iter下没有parallel task count字段,也不存在Task嵌套,各个子查询路径直接挂在Fusion Iter下。Fusion Iter Vector Iter ... Search Driver Iter ...
向量搜索
在什么模式下支持向量搜索?
OceanBase 的 MySQL 模式支持向量搜索,Oracle 模式暂不支持。
向量列中,每一行的数据维度是否必须相同?
必须相同,定义向量列时必须指定维度,写入向量数据时也必须校验维度。
最大支持写入多少行的向量数据?
不限,取决于租户内存资源。
如何对超过 4096 维的向量建索引?
需要对数据做维度压缩,压缩到 4096 维以内之后再建索引。