feat: vector integrationTest;feat: ob quantization (#6366)

* feat(vectordb): add OceanBase HNSW quantization (HNSW_SQ/HNSW_BQ) (#6348)

Support OceanBase vector index quantization via VECTOR_VQ_LEVEL:
- 32 (default): hnsw + inner_product
- 8: hnsw_sq + inner_product (2-3x memory savings)
- 1: hnsw_bq + cosine (~15x memory savings)

HNSW_BQ requires cosine distance per OceanBase docs.
Tested on OceanBase 4.3.5.5 (BP5).

Closes #6202

* feat: add test inclusion for vectorDB tests in vitest configuration (#6358)

* feat: add test inclusion for vectorDB tests in vitest configuration

* refactor: update vectorDB README and setup for environment configuration

- Enhanced README to clarify the use of factory pattern for vectorDB integration tests.
- Updated instructions for setting up environment variables from a local file.
- Removed obsolete PG integration test file and adjusted test execution instructions.
- Improved structure explanation for shared test data and factory functions.

* perf: integrationTest

* feat: vector integration

---------

Co-authored-by: ZHANG Yixin <hi.yixinz@gmail.com>
Co-authored-by: Jingchao <alswlx@gmail.com>
This commit is contained in:
Archer
2026-02-02 18:48:25 +08:00
committed by GitHub
parent 358109f556
commit 64f70a41c1
38 changed files with 758 additions and 163 deletions

View File

@@ -26,7 +26,7 @@ x-share-db-config: &x-share-db-config
# 向量库相关配置
x-vec-config: &x-vec-config
OCEANBASE_URL: mysql://root%40tenantname:tenantpassword@ob:2881/test
OCEANBASE_URL: mysql://root%40tenantname:tenantpassword@ob:2881/mysql
version: '3.3'
@@ -52,8 +52,8 @@ services:
- OB_SERVER_IP=127.0.0.1
# 更多环境变量配置见oceanbase官方文档 https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013494
volumes:
- ../ob/data:/root/ob
- ../ob/config:/root/.obd/cluster
- ./ob/data:/root/ob
- ./ob/config:/root/.obd/cluster
configs:
- source: init_sql
target: /root/boot/init.d/init.sql

View File

@@ -26,7 +26,7 @@ x-share-db-config: &x-share-db-config
# 向量库相关配置
x-vec-config: &x-vec-config
SEEKDB_URL: mysql://root%40tenantname:tenantpassword@seekdb:3306/fastgpt
SEEKDB_URL: mysql://root:seekdbpassword@seekdb:2881/mysql
version: '3.3'
@@ -37,23 +37,20 @@ services:
container_name: seekdb
restart: always
# ports: # 生产环境建议不要暴露
# - 3306:3306
# - 2881:2881
# - 2886:2886
networks:
- fastgpt
environment:
# SeekDB 连接配置(兼容 MySQL 协议)
- MYSQL_ROOT_PASSWORD=seekdbpassword
# SeekDB 租户配置(与 OceanBase 兼容)
- OB_TENANT_NAME=tenantname
- OB_TENANT_PASSWORD=tenantpassword
- ROOT_PASSWORD=seekdbpassword
# MODE分为MINI和NORMAL 后者会最大程度使用主机资源
- MODE=MINI
- OB_SERVER_IP=127.0.0.1
volumes:
- ../seekdb/data:/var/lib/mysql
- ../seekdb/config:/etc/mysql/conf.d
- ./seekdb/data:/var/lib/mysql
- ./seekdb/config:/etc/mysql/conf.d
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
test: ['CMD', 'mysqladmin', 'ping', '-h', '127.0.0.1', '-P2881', '-uroot', '-pseekdbpassword']
interval: 30s
timeout: 10s
retries: 1000

View File

@@ -26,7 +26,7 @@ x-share-db-config: &x-share-db-config
# 向量库相关配置
x-vec-config: &x-vec-config
OCEANBASE_URL: mysql://root%40tenantname:tenantpassword@ob:2881/test
OCEANBASE_URL: mysql://root%40tenantname:tenantpassword@ob:2881/mysql
version: '3.3'
@@ -52,8 +52,8 @@ services:
- OB_SERVER_IP=127.0.0.1
# 更多环境变量配置见oceanbase官方文档 https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013494
volumes:
- ../ob/data:/root/ob
- ../ob/config:/root/.obd/cluster
- ./ob/data:/root/ob
- ./ob/config:/root/.obd/cluster
configs:
- source: init_sql
target: /root/boot/init.d/init.sql

View File

@@ -26,7 +26,7 @@ x-share-db-config: &x-share-db-config
# 向量库相关配置
x-vec-config: &x-vec-config
SEEKDB_URL: mysql://root%40tenantname:tenantpassword@seekdb:3306/fastgpt
SEEKDB_URL: mysql://root:seekdbpassword@seekdb:2881/mysql
version: '3.3'
@@ -37,23 +37,20 @@ services:
container_name: seekdb
restart: always
# ports: # 生产环境建议不要暴露
# - 3306:3306
# - 2881:2881
# - 2886:2886
networks:
- fastgpt
environment:
# SeekDB 连接配置(兼容 MySQL 协议)
- MYSQL_ROOT_PASSWORD=seekdbpassword
# SeekDB 租户配置(与 OceanBase 兼容)
- OB_TENANT_NAME=tenantname
- OB_TENANT_PASSWORD=tenantpassword
- ROOT_PASSWORD=seekdbpassword
# MODE分为MINI和NORMAL 后者会最大程度使用主机资源
- MODE=MINI
- OB_SERVER_IP=127.0.0.1
volumes:
- ../seekdb/data:/var/lib/mysql
- ../seekdb/config:/etc/mysql/conf.d
- ./seekdb/data:/var/lib/mysql
- ./seekdb/config:/etc/mysql/conf.d
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
test: ['CMD', 'mysqladmin', 'ping', '-h', '127.0.0.1', '-P2881', '-uroot', '-pseekdbpassword']
interval: 30s
timeout: 10s
retries: 1000

View File

@@ -76,7 +76,7 @@ const vector = {
ob: {
db: '',
config: `\
OCEANBASE_URL: mysql://root%40tenantname:tenantpassword@ob:2881/test
OCEANBASE_URL: mysql://root%40tenantname:tenantpassword@ob:2881/mysql
`,
extra: `\
configs:
@@ -89,7 +89,7 @@ configs:
seekdb: {
db: '',
config: `\
SEEKDB_URL: mysql://root%40tenantname:tenantpassword@seekdb:3306/fastgpt
SEEKDB_URL: mysql://root:seekdbpassword@seekdb:2881/mysql
`,
extra: ``
},

View File

@@ -18,8 +18,8 @@
- OB_SERVER_IP=127.0.0.1
# 更多环境变量配置见oceanbase官方文档 https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013494
volumes:
- ../ob/data:/root/ob
- ../ob/config:/root/.obd/cluster
- ./ob/data:/root/ob
- ./ob/config:/root/.obd/cluster
configs:
- source: init_sql
target: /root/boot/init.d/init.sql

View File

@@ -3,23 +3,20 @@
container_name: seekdb
restart: always
# ports: # 生产环境建议不要暴露
# - 3306:3306
# - 2881:2881
# - 2886:2886
networks:
- fastgpt
environment:
# SeekDB 连接配置(兼容 MySQL 协议)
- MYSQL_ROOT_PASSWORD=seekdbpassword
# SeekDB 租户配置(与 OceanBase 兼容)
- OB_TENANT_NAME=tenantname
- OB_TENANT_PASSWORD=tenantpassword
- ROOT_PASSWORD=seekdbpassword
# MODE分为MINI和NORMAL 后者会最大程度使用主机资源
- MODE=MINI
- OB_SERVER_IP=127.0.0.1
volumes:
- ../seekdb/data:/var/lib/mysql
- ../seekdb/config:/etc/mysql/conf.d
- ./seekdb/data:/var/lib/mysql
- ./seekdb/config:/etc/mysql/conf.d
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
test: ['CMD', 'mysqladmin', 'ping', '-h', '127.0.0.1', '-P2881', '-uroot', '-pseekdbpassword']
interval: 30s
timeout: 10s
retries: 1000