Skip to content
Sign in
KnowledgeIngestion pipelineMenu

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.

ProSix files through upload, parse, chunk, embed and index: one needs OCR, one waits out a rate limit.

Installation

$ pnpm dlx shadcn@latest add @chatcn-pro/ingestion-pipeline

Usage

tsx
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

ProFinished with a failure, paused on a rate limit, empty and loading.

Props

PropTypeNotes
filesIngestionFile[]{ id, name, size, status, stage?, progress?, pages?, chunks?, embedded?, indexed?, durations?, error?, reason? }
collection, modelstringShown under the title
paused, onPausedChangeboolean, (paused) => voidAdds Pause and Resume
onRetry, onRetryAll(id) => void, () => voidRetry a failed or canceled file, or every failed file
onCancel, onCancelAll, onRemovecallbacksRow and header actions
onAddFiles() => voidButton in the empty state
loadingbooleanSkeleton rows while the job loads
labelsPartial<IngestionPipelineLabels>Every string, for translation

Keyboard

KeyAction
TabMoves through file names, row actions and header actions
Enter or Space on a file nameOpens 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.