How koioio/video-embedding works
This repository’s main product is a video-embedding and recommendation service, with a Vue debugging client and offline recommendation training projects. The main workflow runs from video upload through HLS transcoding and AI-based transcription, segmentation, summaries, and embeddings; users can then play videos, retrieve relevant segments by question, and receive personalized recommendations. Interaction events also support recommendation training. The graph preserves the README’s documented capabilities; source excerpts were limited, so some subsystem links reflect that documentation rather than inspected call sites. The historical legacy-video project is excluded.
Main entry points: service.go Video application · app.go Vector worker · handler API handlers · rustfs.go Object storage
Components 24
Client
- Debug client
embedding-video/hls-web/src/App.vue - Short-video client
embedding-video/short-video-web/src/App.vue
HTTP service
- HTTP API
embedding-video/video-service/cmd/httpapi/main.go - HTTP router
embedding-video/video-service/internal/http/router/router.go - API handlers
embedding-video/video-service/internal/http/handler - Video application
embedding-video/video-service/internal/application/videoapp/service.go - Knowledge video
embedding-video/video-service/internal/application/knowledgevideo/service.go - Social features
embedding-video/video-service/internal/application/userfollow/service.go
Media processing
- Upload workflow
embedding-video/video-service/internal/application/videoapp/upload/service.go - Transcode worker
embedding-video/video-service/internal/worker/transcodeworker/app.go - FFmpeg transcoder
embedding-video/video-service/internal/infrastructure/transcode/ffmpeg_transcoder.go - Vector worker
embedding-video/video-service/internal/worker/vectorworker/app.go - AI segment tasks
embedding-video/video-service/internal/worker/vectorworker/tasks/hierarchical.go
Recommendation
- Recommendation service
embedding-video/video-service/internal/application/videoapp/recommendation/service.go - Gorse
- Two-tower training
embedding-video/two-tower-training/src/two_tower_training/train.py - RecBole training
embedding-video/recbole-training/src/recbole_recommendation/train.py - Dataset export
embedding-video/video-service/tools/export_recbole_dataset/main.go - Embedding import
embedding-video/video-service/tools/import_recsys_embeddings/main.go
State and integrations
- Object storage
embedding-video/video-service/internal/infrastructure/objectstorage/rustfs.go - PostgreSQL
- Redis queues
- AI providers
Other components
- Uploader / viewer
Connections 33
- Uploader / viewer → Debug client: uses
- Uploader / viewer → Short-video client: uses
- Debug client → HTTP API: calls API
- Short-video client → HTTP API: calls API
- HTTP API → HTTP router: starts
- HTTP router → API handlers: dispatches
- API handlers → Video application: invokes
- API handlers → Knowledge video: invokes
- API handlers → Social features: invokes
- Video application → Upload workflow: delegates upload
- Upload workflow → Object storage: stores source
- Upload workflow → Redis queues: queues work
- Transcode worker → Redis queues: consumes jobs
- Transcode worker → FFmpeg transcoder: transcodes
- FFmpeg transcoder → Object storage: writes HLS
- Transcode worker → PostgreSQL: updates status
- Vector worker → Redis queues: consumes jobs
- Vector worker → Object storage: reads media
- Vector worker → AI segment tasks: runs stages
- AI segment tasks → AI providers: uses AI
- Vector worker → PostgreSQL: persists results
- Video application → PostgreSQL: reads and writes
- Knowledge video → Object storage: manages media
- Knowledge video → PostgreSQL: persists records
- Video application → Recommendation service: requests recommendations
- Recommendation service → Gorse: gets candidates
- Recommendation service → PostgreSQL: loads recommendation data
- Uploader / viewer → Video application: records interactions
- Dataset export → PostgreSQL: reads events and items
- Dataset export → RecBole training: exports dataset
- Dataset export → Two-tower training: supplies training data
- Two-tower training → Embedding import: exports embeddings
- Embedding import → PostgreSQL: upserts embeddings