A sophisticated vector search application built with SvelteKit and Weaviate, designed for managing and searching multi-modal content including text, images, audio, and video. The application provides an intuitive interface for vector-based similarity search across different media types.
- 🔍 Semantic search across different media types (text, images, audio, video)
- 🖼️ Multi-modal embeddings using ImageBind technology
- 🎯 Similarity-based content discovery
- 📊 Vector-based content organization
- 📁 Dynamic collection creation with media type specification
- 🏷️ Automatic metadata extraction and indexing
- 🔄 Flexible schema management for different content types
- 📊 Collection statistics and insights
- 🖼️ Image processing and vector embedding
- 🎵 Audio content analysis and vectorization
- 📝 Text-to-vector conversion
- 🎥 Video content processing
- 💡 Cross-modal similarity search
- 🎯 Semantic search across collections
- 🔍 Hybrid search combining vector and keyword search
- 🎨 Visual similarity search for images
- Weaviate Backend: Handles vector storage and similarity search
- Multi2Vec-Bind Integration: Provides multi-modal embedding capabilities
- Collection Schema:
- Dynamic property configuration
- Support for blob data types (images, audio, video)
- Metadata management
- Automatic vectorization
Each collection supports various media types with the following structure:
- Base Properties:
- Title (searchable text)
- Creation timestamp
- Media-specific metadata
- Media-Specific Properties:
- Images: format, size, dimensions
- Audio: duration, format, size
- Video: duration, format, resolution
- Text: content, language
- Content Ingestion
- Media Type Detection
- Feature Extraction
- Vector Embedding Generation
- Metadata Extraction
- Index Storage
- Docker and Docker Compose for Weaviate services
- Node.js for the SvelteKit application
- pnpm (recommended) or npm
- Clone the repository
- Install dependencies:
pnpm install
- Start Weaviate and vector services:
docker-compose up -d
- Start the development server:
pnpm dev
The application will be available at http://localhost:5173
The docker-compose.yml
file configures:
- Weaviate vector database (port 8080)
- Multi2vec-bind service for multi-modal embeddings
- Vector dimension settings
- Authentication settings
- Persistence configuration
src/lib/server/db/
: Database integration and collection managementsrc/routes/
: API endpoints and UI routessrc/lib/components/
: UI components for search and visualization
await createCollection({
name: "MediaLibrary",
description: "Multi-modal content collection",
mediaTypes: ["image", "audio", "text"]
});
const results = await collection.search({
vector: contentVector,
limit: 10,
mediaTypes: ["image", "text"]
});
pnpm dev
- Start development serverpnpm build
- Build for productionpnpm preview
- Preview production buildpnpm check
- Type-check the codebase
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a new Pull Request
This project is open source and available under the MIT license.