A Streamlit-based web interface that allows you to upload and index text documents across multiple vector databases including Milvus, Pinecone, MongoDB, and QDrant. Supports searching over embedded content using the fastembed
library for embeddings.
- 📂 Upload a
.zip
file containing textual documents. - 🧠 Embed and index documents using multiple vector DBs.
- 🔍 Perform semantic search over indexed documents.
- 🔄 Pluggable vector database backends.
- 🧹 Easily extendable for new DBs or embedding models.
- Docker (recommended)
- Alternatively: Python 3.11+ with
uv
,streamlit
, and relevant DB clients
docker build -t unified_vector_db .
docker run -p 8501:8501 \
-e VECTOR_SEARCH_APP_STREAMLIT_SERVER_PORT=8501 \
-e VECTOR_SEARCH_APP_STREAMLIT_SERVER_ADDRESS=0.0.0.0 \
unified_vector_db
Or use Docker Compose:
docker compose up --build unified_vector_db
Copy example.env
to .env
and fill in your credentials:
cp example.env .env
# Qdrant configuration
VECTOR_SEARCH_APP_QDRANT_COLLECTION_NAME=documents
# Milvus configuration
VECTOR_SEARCH_APP_MILVUS_COLLECTION_NAME=documents
# MongoDB configuration
VECTOR_SEARCH_APP_MONGODB_URI=mongodb+srv://usr:pwd@cluster
VECTOR_SEARCH_APP_MONGODB_DB_NAME=vector_db
VECTOR_SEARCH_APP_MONGODB_COLLECTION_NAME=documents
# Pinecone configuration
VECTOR_SEARCH_APP_PINECONE_API_KEY=your-pinecone-key
VECTOR_SEARCH_APP_PINECONE_INDEX_NAME=documents
# Streamlit config
VECTOR_SEARCH_APP_STREAMLIT_SERVER_PORT=8501
VECTOR_SEARCH_APP_STREAMLIT_SERVER_ADDRESS=0.0.0.0
These are automatically used by the app at runtime.
- Open the Streamlit app in your browser:
http://localhost:8501
- Upload a
.zip
containing text files (e.g.,.txt
,.md
) - Select the vector database to use
- Click “Index Documents”
- Use the search input to query the indexed documents
.
├── Dockerfile
├── README.md
├── app
│ ├── __init__.py
│ ├── interface.py
│ └── settings.py
├── compose.yml
├── example.env
├── pyproject.toml
└── requirements.lock