--- title: FastAPI App emoji: ⚡ colorFrom: gray colorTo: purple sdk: docker app_file: app.py pinned: false --- # Image Similarity Search API A FastAPI application for image similarity search using CLIP embeddings and Qdrant vector database. ## Features - Upload images and store their vector embeddings - Search for similar images using an uploaded image or base64 encoded image - Secure API with API key authentication - Well-organized, modular codebase following OOP principles ## Installation 1. Clone this repository 2. Install dependencies: ```bash pip install -r requirements.txt ``` 3. Set up environment variables (optional, defaults are provided): ```bash export QDRANT_URL="your-qdrant-url" export QDRANT_API_KEY="your-qdrant-api-key" export COLLECTION_NAME="your-collection-name" export API_KEY="your-api-key" export PORT=8000 export ENVIRONMENT="production" # Or "development" for debug mode with auto-reload ``` ## Usage Run the application: ```bash python app.py ``` The API will be available at http://localhost:8000 (or the port specified in environment variables). ### API Documentation Once running, API documentation is available at: - Swagger UI: http://localhost:8000/docs - ReDoc: http://localhost:8000/redoc ## API Endpoints - `POST /add-image/`: Add an image to the database - `POST /add-images-from-folder/`: Add all images from a folder to the database - `POST /search-by-image/`: Search for similar images using an uploaded image - `POST /search-by-image-scan/`: Search for similar images using a base64 encoded image - `GET /collections`: List all collections in the database - `GET /health`: Health check endpoint ## Project Structure ``` image_similarity_api/ │ ├── app.py # Main application entry point ├── config.py # Configuration settings ├── models/ │ ├── __init__.py │ └── schemas.py # Pydantic models ├── services/ │ ├── __init__.py │ ├── embedding.py # Image embedding service │ ├── security.py # Security service │ └── vector_db.py # Vector database service ├── api/ │ ├── __init__.py │ └── routes.py # API routes ├── requirements.txt # Project dependencies └── README.md # Project documentation ``` ## Development For development, set the ENVIRONMENT variable to "development" for auto-reload: ```bash export ENVIRONMENT="development" python app.py ``` ## Deployment This application can be deployed to any platform that supports Python applications: 1. Docker 2. Kubernetes 3. Cloud platforms (AWS, GCP, Azure, etc.) 4. Serverless platforms (with appropriate adapters) Remember to set all required environment variables in your production environment.