自动优化向量搜索性能VECTOR_MEMORY_SIZE 痛点场景:HNSW等向量索引为提升搜索性能,通常需要驻留内存。当海量向量数据无法完全放入内存时,性能会急剧下降。 23ai解决方案:Oracle 23ai引入了向量内存池 (Vector Memory Pool) ,作为SGA的一部分,由 VECTOR_MEMORY_SIZE 参数控制。专为HNSW索引等内存向量索引设计,确保其高效运行。 实验步骤: 配置内存:在数据库中设置 VECTOR_MEMORY_SIZE,例如 ALTER SYSTEM SET vector_memory_size=4G;,并重启数据库生效。 创建索引:在商品特征向量列上创建HNSW索引,该索引将创建于向量内存池中。
实验配置
-- 测试不同内存配置下的向量搜索性能
ALTER SYSTEM SET vector_memory_size=1G SCOPE=SPFILE;
ALTER SYSTEM SET vector_memory_size=4G SCOPE=SPFILE;
ALTER SYSTEM SET vector_memory_size=16G SCOPE=SPFILE;
-- 重启数据库应用配置
SHUTDOWN IMMEDIATE;
STARTUP;
-- 创建测试数据
CREATE TABLE vector_perf_test AS
SELECT
ROWNUM as id,
DBMS_RANDOM.STRING('X', 100) as description,
VECTOR(1024, RANDOM) as feature_vector
FROM dual
CONNECT BY LEVEL <= 1000000;
-- 创建HNSW索引
CREATE VECTOR INDEX idx_vector_perf
ON vector_perf_test(feature_vector)
ORGANIZATION INMEMORY NEIGHBOR GRAPH
DISTANCE COSINE
WITH TARGET ACCURACY 95;
性能测试结果
查询响应时间对比(毫秒)
-- 测试查询:相似向量搜索
SELECT /*+ MONITOR */ id, VECTOR_DISTANCE(feature_vector, VECTOR(1024, RANDOM), COSINE) as similarity FROM vector_perf_test ORDER BY similarity FETCH FIRST 10 ROWS ONLY;
内存使用效率
-- 监控向量内存使用 SELECT * FROM V$VECTOR_MEMORY_STAT; -- 结果示例: -- VECTOR_MEMORY_SIZE: 16G -- ALLOCATED_MEMORY: 14.2G -- USED_MEMORY: 12.8G -- HIT_RATIO: 98.7%
性能对比:配置后,商品向量相似搜索可实现亚秒级响应,满足实时推荐系统要求。未配置或配置过小,则可能因内存不足导致性能低下。
