This demo showcases the vector search similarity (VSS) capability within Redis Stack and Redis Enterprise. Through the RediSearch module, vector types and indexes can be added to Redis. This turns Redis into a highly performant vector database which can be used for all types of applications.
The following Redis Stack capabilities are available in this demo:
- Vector Similarity Search
- by image
- by text
 
- Multiple vector indexing types
- HNSW
- Flat (brute-force)
 
- Hybrid Queries
- Apply tags as pre-filter for vector search
 
This app was built as a Single Page Application (SPA) with the following components:
- Redis Stack: Vector database + JSON storage
- RedisVL for Python vector db client
- FastAPI for backend API
- Pydantic for schema and validation
- React (with Typescript)
- Docker Compose for development
- MaterialUI for some UI elements
- React-Bootstrap for some UI elements
- Pytorch/Img2Vec and Huggingface Sentence Transformers for vector embedding creation
Some inspiration was taken from this Cookiecutter project and turned into a SPA application instead of a separate front-end server approach.
Much inspiration taken from tiangelo/full-stack-fastapi-template
/backend
    /productsearch
        /api
            /routes
                product.py # primary API logic lives here
        /db
            load.py # seeds Redis DB
            utils.py # redis util
        /schema
            # pydantic models for serialization/validation from API
        /tests
        /utils
        config.py
        spa.py # logic for serving compiled react project
        main.py # entrypoint
/frontend
    /public
        # index, manifest, logos, etc.
    /src
        /config
        /styles
        /views
            # primary components live here
        api.ts # logic for connecting with BE
        App.tsx # project entry
        Routes.tsk # route definitions
        ...
/data
    # folder mounted as volume in Docker
    # load script auto populates initial data from S3
The dataset was taken from the the following Kaggle links.
A formatted version is available for use with this demo at:
Before running the app, install Docker Desktop.
- Copy .env file
cp .env.template .env- Run docker containers with make
make buildNote: you can add --build and --force-recreate if caching old images.
- Install NPM packages
$ cd frontend/ $ npm install
- Use npmto serve the application from your machine$ npm run start 
- Navigate to http://localhost:3000in a browser.
All changes to your local code will be reflected in your display in semi realtime.
Pre-step: install poetry.
- cd backend
- poetry installto get necessary python deps
- poetry run startto launch uvicorn server with FastAPI app
Included in the project is a ./vscode/launch.json for local debugging purposes.
Sometimes you need to clear out some Docker cached artifacts. Run docker system prune, restart Docker Desktop, and try again.
Open an issue here on GitHub and we will try to be responsive to these. Additionally, please consider contributing.