From a source to searchable
A connector gets durable acceptance. Workers fetch, parse, split, embed and write passages by document, version and position. Live edits and bulk imports use separate queues so imports do not starve daily changes.
- The connector calls the changes API with document id, version, change kind and access information.
- The API writes the event to the right queue and returns a job id.
- Workers fetch the source file, parse it to text, split by structure and keep title and heading path with each passage.
- Workers embed passages in batches with backoff, then write the new version and retire the old live version.
- Repeated failures go to review; the source cursor advances only when the batch is durably recorded.
Diagram as text
Components: Wiki or drive (External API); Changes API (Service); Live and import queues (Queue); Parse and split (Worker); Embedding API (External API); Document store (Object store); Passage index (Vector DB). Connections: Wiki or drive → Changes API (change); Changes API → Live and import queues (accepted), asynchronous; Live and import queues → Parse and split (work); Parse and split → Embedding API (batches); Parse and split → Document store (parsed copy), asynchronous; Embedding API → Passage index (vectors).
Read:Learn: Queues, delivery semantics and backpressureLearn: Producer-consumer / work queueLearn: Vector Database
Check yourself
Why split a large first import from the live edit queue?
Show answerHide answer
The import can contain millions of files. If it shares one FIFO queue, an urgent edit or delete can wait behind bulk work and miss the freshness target.