A modern web UI for browsing and exploring ChromaDB vector database collections.
- Connection Management: Connect to any ChromaDB instance via host and port
- Collection Browser: View all collections with record counts
- Record Viewer: Browse records with pagination support
- Text Search: Search documents by content with text matching
- Semantic Search: Find similar documents using vector embeddings
- Metadata Filtering: Filter records by metadata fields with support for multiple operators
- Advanced Filters: Edit raw Chroma where clauses as JSON
- Record Details: View full document content, metadata, and embeddings
- Find Similar: One-click semantic search to find related documents
- Data Export: Export records to JSON or CSV format
- Dark Mode: Full dark/light theme support
- Keyboard Shortcuts: Navigate efficiently with keyboard shortcuts
- Node.js 18.x or later
- A running ChromaDB instance
# Clone the repository
git clone https://github.com/your-username/chroma-viewer.git
cd chroma-viewer
# Install dependencies
npm install
# Start the development server
npm run devOpen http://localhost:3000 in your browser.
# Build for production
npm run build
# Start the production server
npm start- When you first open the app, you'll be redirected to the Settings page
- Enter your ChromaDB host (e.g.,
localhost) and port (e.g.,8000) - Click "Test Connection" to verify connectivity
- Click "Connect" to save your connection
- Select a collection from the dropdown in the header
- View records in the paginated table
- Use the page size selector to adjust records per page
- Navigate between pages using the pagination controls
- Enter a search term in the search bar
- Toggle between Text search and Semantic search:
- Text Search: Finds documents containing the exact text
- Semantic Search: Finds semantically similar documents using embeddings
- Click the search button or press Enter to search
- Click "Clear search" to return to browsing mode
- Click "Add Filter" to create a new filter
- Select a metadata field, operator, and value
- Add multiple filters to narrow down results
- Click "Advanced" to edit filters as raw JSON
- Click "Clear all" to remove all filters
- Click the menu icon on any row
- Select "View Details" to see the full record
- View the complete document, metadata, and embedding
- Use the "Copy" buttons to copy values to clipboard
- Click the menu icon on any row
- Select "Find Similar" to search for semantically similar documents
- Results are ranked by similarity (distance shown)
- Click the "Export" button above the table
- Choose JSON or CSV format
- The file will download with the current view's data
/- Focus the search barEsc- Clear search and filtersLeft Arrow- Previous pageRight Arrow- Next page
- Framework: Next.js 16 with App Router
- Styling: Tailwind CSS 4
- UI Components: shadcn/ui with Radix UI primitives
- Data Tables: TanStack Table
- Icons: Lucide React
- Database Client: ChromaDB JavaScript client
- Validation: Zod
- Theming: next-themes
chroma-viewer/
├── app/ # Next.js App Router pages
│ ├── api/ # API routes
│ │ ├── collections/ # Collections endpoint
│ │ ├── records/ # Records endpoint
│ │ ├── search/ # Search endpoint
│ │ └── metadata/ # Metadata endpoint
│ ├── settings/ # Settings page
│ └── page.tsx # Main page
├── components/ # React components
│ ├── ui/ # shadcn/ui components
│ ├── connection/ # Connection-related components
│ ├── data-table/ # Table components
│ ├── filters/ # Filter components
│ ├── record/ # Record display components
│ ├── search/ # Search components
│ └── layout/ # Layout components
├── lib/ # Utilities and hooks
│ ├── hooks/ # Custom React hooks
│ ├── chroma.ts # ChromaDB client utilities
│ ├── validations.ts # Zod schemas
│ └── utils.ts # General utilities
└── types/ # TypeScript types
MIT License - see LICENSE for details.
