Add support for mariadb-vector as backing vector DB (#21931)

This commit is contained in:
Code with love
2026-03-08 17:13:14 -05:00
committed by GitHub
parent caf3362be8
commit 265d1b2824
7 changed files with 653 additions and 0 deletions
+72
View File
@@ -2359,6 +2359,78 @@ if VECTOR_DB == "chroma":
CHROMA_HTTP_SSL = os.environ.get("CHROMA_HTTP_SSL", "false").lower() == "true"
# this uses the model defined in the Dockerfile ENV variable. If you dont use docker or docker based deployments such as k8s, the default embedding model will be used (sentence-transformers/all-MiniLM-L6-v2)
# MariaDB Vector (mariadb-vector)
MARIADB_VECTOR_DB_URL = os.environ.get("MARIADB_VECTOR_DB_URL", "").strip()
MARIADB_VECTOR_INITIALIZE_MAX_VECTOR_LENGTH = int(
os.environ.get("MARIADB_VECTOR_INITIALIZE_MAX_VECTOR_LENGTH", "1536").strip() or "1536"
)
# Distance strategy:
# - cosine => vec_distance_cosine(...)
# - euclidean => vec_distance_euclidean(...)
MARIADB_VECTOR_DISTANCE_STRATEGY = (
os.environ.get("MARIADB_VECTOR_DISTANCE_STRATEGY", "cosine").strip().lower()
)
# HNSW M parameter (MariaDB VECTOR INDEX ... M=<int>)
MARIADB_VECTOR_INDEX_M = int(os.environ.get("MARIADB_VECTOR_INDEX_M", "8").strip() or "8")
# Pooling (MariaDB-Vector)
MARIADB_VECTOR_POOL_SIZE = os.environ.get("MARIADB_VECTOR_POOL_SIZE", None)
if MARIADB_VECTOR_POOL_SIZE != None:
try:
MARIADB_VECTOR_POOL_SIZE = int(MARIADB_VECTOR_POOL_SIZE)
except Exception:
MARIADB_VECTOR_POOL_SIZE = None
MARIADB_VECTOR_POOL_MAX_OVERFLOW = os.environ.get("MARIADB_VECTOR_POOL_MAX_OVERFLOW", 0)
if MARIADB_VECTOR_POOL_MAX_OVERFLOW == "":
MARIADB_VECTOR_POOL_MAX_OVERFLOW = 0
else:
try:
MARIADB_VECTOR_POOL_MAX_OVERFLOW = int(MARIADB_VECTOR_POOL_MAX_OVERFLOW)
except Exception:
MARIADB_VECTOR_POOL_MAX_OVERFLOW = 0
MARIADB_VECTOR_POOL_TIMEOUT = os.environ.get("MARIADB_VECTOR_POOL_TIMEOUT", 30)
if MARIADB_VECTOR_POOL_TIMEOUT == "":
MARIADB_VECTOR_POOL_TIMEOUT = 30
else:
try:
MARIADB_VECTOR_POOL_TIMEOUT = int(MARIADB_VECTOR_POOL_TIMEOUT)
except Exception:
MARIADB_VECTOR_POOL_TIMEOUT = 30
MARIADB_VECTOR_POOL_RECYCLE = os.environ.get("MARIADB_VECTOR_POOL_RECYCLE", 3600)
if MARIADB_VECTOR_POOL_RECYCLE == "":
MARIADB_VECTOR_POOL_RECYCLE = 3600
else:
try:
MARIADB_VECTOR_POOL_RECYCLE = int(MARIADB_VECTOR_POOL_RECYCLE)
except Exception:
MARIADB_VECTOR_POOL_RECYCLE = 3600
ENABLE_MARIADB_VECTOR = True
if VECTOR_DB == "mariadb-vector":
if not MARIADB_VECTOR_DB_URL:
ENABLE_MARIADB_VECTOR = False
else:
try:
parsed = urlparse(MARIADB_VECTOR_DB_URL)
scheme = (parsed.scheme or "").lower()
# Require official driver so VECTOR binds as float32 bytes correctly
if scheme != "mariadb+mariadbconnector":
ENABLE_MARIADB_VECTOR = False
except Exception:
ENABLE_MARIADB_VECTOR = False
# Milvus
MILVUS_URI = os.environ.get("MILVUS_URI", f"{DATA_DIR}/vector_db/milvus.db")
MILVUS_DB = os.environ.get("MILVUS_DB", "default")