Milvus Vector Database Integration¶
This document describes the integration of Milvus vector database into the Obelisk project to enhance RAG (Retrieval-Augmented Generation) capabilities.
Overview¶
Milvus is an open-source vector database designed for embedding similarity search and AI applications. It provides:
- High-performance vector similarity search
- Scalable architecture
- Flexible index types for different use cases
- Support for hybrid search (vector + scalar filtering)
In the Obelisk project, Milvus serves as the vector database backend for storing and retrieving document embeddings used in the RAG pipeline.
Architecture¶
The Milvus integration consists of the following components:
- Milvus Standalone Service: A self-contained Milvus instance that includes:
- Milvus Server
- Metadata Management (etcd)
-
Storage Backend (MinIO)
-
OpenWebUI Integration: Configuration to use Milvus as the vector store for OpenWebUI's RAG features.
-
Obelisk-RAG Integration: Configuration to use Milvus as the vector store for Obelisk's RAG service.
Deployment¶
The Milvus integration is defined in the docker-compose.yaml
file and includes:
Milvus Ecosystem Services¶
-
etcd: For metadata management
-
MinIO: For storage management
-
Milvus Server: The main Milvus service
OpenWebUI Integration¶
OpenWebUI is configured to use Milvus for its RAG features:
open-webui:
# Other configuration...
environment:
# RAG configuration
- RETRIEVAL_ENABLED=true
- RETRIEVAL_VECTOR_STORE=milvus
- MILVUS_URI=http://milvus:19530
- MILVUS_HOST=milvus
- MILVUS_PORT=19530
# Other environment variables...
Obelisk-RAG Integration¶
The Obelisk-RAG service is configured to use Milvus:
obelisk-rag:
# Other configuration...
environment:
# Milvus configuration
- VECTOR_DB=milvus
- MILVUS_URI=http://milvus:19530
- MILVUS_HOST=milvus
- MILVUS_PORT=19530
# Other environment variables...
Verification¶
The Milvus integration has been verified using test scripts that:
- Connect to Milvus and create a collection
- Insert document embeddings
- Create an index for efficient searching
- Perform vector similarity searches
- Verify connectivity from OpenWebUI
Test scripts can be found in the /hack
directory: - test_milvus.py
: Basic Milvus functionality test - test_rag_milvus.py
: Verification of RAG configuration - test_rag_e2e.py
: End-to-end RAG pipeline test
Usage¶
When the Obelisk stack is deployed with docker-compose up
, the Milvus integration is automatically configured and available. Users can:
- Upload documents via the OpenWebUI interface
- Embed documents into the Milvus vector database
- Use RAG for enhanced AI responses based on document context
No additional configuration is required for basic usage.
Advanced Configuration¶
For advanced configurations, you can modify the following environment variables:
Milvus Server Configuration¶
ETCD_ENDPOINTS
: etcd endpoint for metadata storageMINIO_ADDRESS
: MinIO address for object storage
OpenWebUI RAG Configuration¶
RETRIEVAL_ENABLED
: Enable/disable RAG featuresRETRIEVAL_VECTOR_STORE
: Vector database type (milvus)MILVUS_URI
/MILVUS_HOST
/MILVUS_PORT
: Connection parameters
Obelisk-RAG Configuration¶
VECTOR_DB
: Vector database type (milvus)MILVUS_URI
/MILVUS_HOST
/MILVUS_PORT
: Connection parameters
Troubleshooting¶
Common issues and solutions:
-
Cannot connect to Milvus: Ensure the Milvus service is running and network settings are correct
-
Vector search returns no results: Verify collection exists and has data
-
OpenWebUI RAG not working: Check OpenWebUI logs for connection issues