Ingestion pipelinePro
Files on their way into a vector index: upload, parse, chunk, embed and index as live steps with stage totals, per file tracks and retry from the stage that failed.
On this page
Installation
Usage
import { IngestionPipeline } from "@/components/ui/chatcn/pro/ingestion-pipeline"
<IngestionPipeline
files={job.files}
collection="support-handbook"
onRetry={retryFromStage}
onCancel={cancel}
/>The pro variant of the free upload-queue. Pass each file's status, the stage it is in and its progress inside that stage, plus the counts your workers report (pages, chunks, embedded, indexed). The rail sums them per stage. A failure names its stage and shows your error, which should say how to fix it; Retry restarts the file from that stage. waiting is for rate limits and quotas: give it a reason with the resume time.
Examples
States
Props
| Prop | Type | Notes |
|---|---|---|
files | IngestionFile[] | { id, name, size, status, stage?, progress?, pages?, chunks?, embedded?, indexed?, durations?, error?, reason? } |
collection, model | string | Shown under the title |
paused, onPausedChange | boolean, (paused) => void | Adds Pause and Resume |
onRetry, onRetryAll | (id) => void, () => void | Retry a failed or canceled file, or every failed file |
onCancel, onCancelAll, onRemove | callbacks | Row and header actions |
onAddFiles | () => void | Button in the empty state |
loading | boolean | Skeleton rows while the job loads |
labels | Partial<IngestionPipelineLabels> | Every string, for translation |
Keyboard
| Key | Action |
|---|---|
| Tab | Moves through file names, row actions and header actions |
| Enter or Space on a file name | Opens its per stage output and timing |
Accessibility
- Each track is an image with a label such as Stage 4 of 5, Embed, 51%.
- Failures and the finish are announced once in a polite live region; progress never is.
- Status has a glyph and words as well as color: blue running, amber waiting, green done, red failed.
Motion
Track fills move linearly with the work, because they map to real progress. Rows added later rise in for 150 ms, status glyphs crossfade for 150 ms, and stage details open over 200 ms when clicked, instantly from the keyboard. Reduced motion jumps the fills and keeps short fades.