change QDRANT_HYBRID_SEARCH_RRF_K to QDRANT_HYBRID_SEARCH_FUSION_TYPE After testing

This commit is contained in:
MiXaiLL76 2026-03-31 22:34:39 +03:00
parent c57d99cb28
commit 2f42a4a5fa
2 changed files with 10 additions and 5 deletions

View file

@ -2280,7 +2280,7 @@ QDRANT_HYBRID_SEARCH_ENABLED = os.environ.get('QDRANT_HYBRID_SEARCH_ENABLED', 'f
QDRANT_SPARSE_EMBEDDING_MODEL = os.environ.get('QDRANT_SPARSE_EMBEDDING_MODEL', 'Qdrant/bm25')
QDRANT_DENSE_VECTOR_NAME = os.environ.get('QDRANT_DENSE_VECTOR_NAME', 'dense')
QDRANT_SPARSE_VECTOR_NAME = os.environ.get('QDRANT_SPARSE_VECTOR_NAME', 'sparse')
QDRANT_HYBRID_SEARCH_RRF_K = int(os.environ.get('QDRANT_HYBRID_SEARCH_RRF_K', '60'))
QDRANT_HYBRID_SEARCH_FUSION_TYPE = os.environ.get('QDRANT_HYBRID_SEARCH_FUSION_TYPE', 'rrf').lower() # 'rrf' or 'dbsf'
QDRANT_SPARSE_ON_DISK = os.environ.get('QDRANT_SPARSE_ON_DISK', 'false').lower() == 'true'
WEAVIATE_HTTP_HOST = os.environ.get('WEAVIATE_HTTP_HOST', '')

View file

@ -20,7 +20,7 @@ from open_webui.config import (
QDRANT_SPARSE_EMBEDDING_MODEL,
QDRANT_DENSE_VECTOR_NAME,
QDRANT_SPARSE_VECTOR_NAME,
QDRANT_HYBRID_SEARCH_RRF_K,
QDRANT_HYBRID_SEARCH_FUSION_TYPE,
QDRANT_SPARSE_ON_DISK,
)
@ -71,7 +71,7 @@ class QdrantClient(VectorDBBase):
self.QDRANT_SPARSE_EMBEDDING_MODEL = QDRANT_SPARSE_EMBEDDING_MODEL
self.QDRANT_DENSE_VECTOR_NAME = QDRANT_DENSE_VECTOR_NAME
self.QDRANT_SPARSE_VECTOR_NAME = QDRANT_SPARSE_VECTOR_NAME
self.QDRANT_HYBRID_SEARCH_RRF_K = QDRANT_HYBRID_SEARCH_RRF_K
self.QDRANT_HYBRID_SEARCH_FUSION_TYPE = QDRANT_HYBRID_SEARCH_FUSION_TYPE
self.QDRANT_SPARSE_ON_DISK = QDRANT_SPARSE_ON_DISK
if not self.QDRANT_URI:
@ -382,12 +382,17 @@ class QdrantClient(VectorDBBase):
collection_is_hybrid = self._is_hybrid_collection(mt_collection)
# Hybrid search with RRF fusion
# Hybrid search with server-side fusion (RRF or DBSF)
if collection_is_hybrid and self._hybrid_enabled and query:
sparse_query = self._encode_sparse_query(query)
fusion = (
models.Fusion.DBSF
if self.QDRANT_HYBRID_SEARCH_FUSION_TYPE == 'dbsf'
else models.Fusion.RRF
)
query_response = self.client.query_points(
collection_name=mt_collection,
query=models.FusionQuery(fusion=models.Fusion.RRF),
query=models.FusionQuery(fusion=fusion),
prefetch=[
models.Prefetch(
query=vectors[0],