VectorAdmin Documentation
repository·master·Indexed 25 days ago
https://github.com/mintplex-labs/vector-adminA universal management suite and GUI for vector databases such as Pinecone and Chroma. VectorAdmin provides a full-stack web interface for developers to inspect, manage, and manipulate vectorized text data, including tools for uploading documents, managing embeddings, and performing semantic searches. The system consists of a NodeJS/Express backend, a React frontend, a Flask-based document processor, and InngestJS background workers.
What's inside VectorAdmin
- VectorAdmin is a universal GUI and tool suite designed for managing vector databases (such as Pinecone or Chroma) at scale. It provides a full-stack application to view, update, and delete individual text chunks of embeddings, manage multiple concurrent vector databases, and upload/embed new documents directly. It is designed to give users total control over vectorized text that is otherwise difficult to inspect via standard APIs or tools like LangChain.
VectorAdmin Technical Architecture
masterThe VectorAdmin monorepo is composed of the following core components:
document-processor: A Flask application used to digest, parse, and embed documents.frontend: A ViteJS + React application for content management and UI.backend: A NodeJS + Express server that handles vector database interactions and management.workers: An InngestJS instance that manages long-running background tasks.docker: Orchestration files to run the entire architecture as a single instance.
Connect to a local Chroma vector database
masterWhen connecting to a Chroma instance running on the same machine as your Docker containers, use
http://host.docker.internal:[CHROMA_PORT]as the URL.Similar to Pinecone, a
Sync Chroma Databutton may appear on the organization homepage if existing data is detected in Chroma.Set up VectorAdmin using Docker
masterThe recommended way to get up and running quickly is using Docker. Detailed instructions for the Docker setup can be found in the./docker/DOCKER.mdfile.First-time setup and onboarding
masterAfter starting the container, access the application at
http://localhost:3001. You will be automatically redirected to an onboarding flow where you must:- Create your primary admin account.
- Create an organization.
- Establish a vector database connection.
Set up Prisma for the first time
masterTo perform a complete initial setup of the project, including installing node modules for both the server and frontend, configuring environment files, generating the Prisma client, running migrations, and seeding the database, run the following command from the project root directory:
yarn setupRun VectorAdmin using a pre-built Docker image
masterThe fastest way to run VectorAdmin is to pull the latest pre-built image from Docker Hub. You must provide a valid
DATABASE_CONNECTION_STRINGfor a Postgres database (RDS, remote, or local) before starting, as thevdbmsdatabase is created on boot using this string.docker pull mintplexlabs/vectoradmin docker run -d -p 3001:3001 \ --name vectoradmin \ -e SERVER_PORT="3001" \ -e JWT_SECRET="your-random-string-here" \ -e INNGEST_EVENT_KEY="background_workers" \ -e INNGEST_SIGNING_KEY="random-string-goes-here" \ -e INNGEST_LANDING_PAGE="true" \ -e DATABASE_CONNECTION_STRING="postgresql://vectoradmin:password@xxxxxxx:5432/vdbms" \ mintplexlabs/vectoradminSet up VectorAdmin in a Development Environment
masterTo run VectorAdmin locally for development, follow these steps. Note: These instructions do not work on Windows.
1. Initial Setup
From the project root directory, run:
yarn dev:setupThen, set up the document processor:
cd document-processor && python3.9 -m virtual-env v-env && source v-env/bin/activate && pip install -r requirements.txt2. Run Services
Open separate terminal windows from the project root and run the following commands:
Database and Server:
yarn prisma:setup yarn dev:serverFrontend:
yarn dev:frontendBackground Workers:
yarn dev:workersDocument Processor:
cd document-processor && flask run --host '0.0.0.0' --port 88883. Initial Configuration
On the first boot, visit the homepage. You will be automatically redirected to a setup flow to create your primary admin account, organization, and database connection.
Build VectorAdmin Docker image from source
masterTo build the image from the local repository, follow these steps:
- Clone the repository and navigate to the
docker/directory. - Copy the example environment file:
cp .env.example .env. - Edit the
.envfile to update the following required variables:JWT_SECRET: A random string for authentication.DATABASE_CONNECTION_STRING: A valid Postgres connection string.INNGEST_SIGNING_KEY: A random string.
- Run the build command.
Note: If connecting to a Postgres instance running on your host machine from within the container, use
host.docker.internalin the connection string.git clone git@github.com:Mintplex-Labs/vector-admin.git cd vector-admin cd docker/ cp .env.example .env # Edit .env with JWT_SECRET, DATABASE_CONNECTION_STRING, and INNGEST_SIGNING_KEY docker-compose up -d --build vector-admin- Clone the repository and navigate to the
Connect to Pinecone vector database
masterTo use Pinecone, navigate to your organization settings and provide your Pinecone configuration and keys.
After connecting, if you see a
Sync Pinecone Databutton on the organization homepage, it means there is existing data in your Pinecone index that can be pulled into VectorAdmin. The sync time depends on the number of embedded documents.Run the document processing API locally
masterTo run the document processing API in a local environment, navigate to thecollectordirectory and ensure your virtual environment (v-env) is active. Execute the Flask server to allow the frontend to process uploads locally, simulating the behavior of running thewatch.pyscript manually.Migrate data from SQLite to Prisma
masterIf you are transitioning from the old custom SQLite ORM setup to Prisma, you must migrate existing data. Navigate to the
serverdirectory and run thesqlite:migratescript.Note: If you are a new user performing a fresh setup, this step is unnecessary as the standard setup already uses Prisma.