Skip to content
QUORVE LABS

Ingest · retrieve

Knowledge assistant

Three deployables: a document ingest pipeline into vector search, an orchestrator API, and a chat client. Answers are generated from indexed chunks, not from a naked prompt.

LAYERS, DATA FLOW, EVENT TRIGGERS

01Principles

  • Serverless-first compute on Functions.
  • Event-driven for new blobs and deletions — not a cron that pretends to watch storage.
  • Stateless workers. Session lives in Cosmos (or equivalent), not in the process.
  • Modular processors. PDF, DOCX, Excel share an interface; the factory picks by type.

02Layers

SYSTEM MAP

Rendering diagram…

03Upload flow

  1. POST /upload with multipart file and X-API-KEY.
  2. Detect type; reject unknown.
  3. Write raw bytes to blob storage.
  4. Run the processor: layout → text/tables/figures → chunks (1500 / 200 overlap, recursive separators).
  5. Embed in batches of 64 (3072-d).
  6. Upsert search documents. Return chunk / table / image counts and elapsed seconds.

04Delete flow

Blob deletion is not “forget the file name.” Event Grid (or an explicit delete API) removes all chunks whose blob_name matches. Index and blob stay twins.

05Orchestrator vs ingest

The chat client calls the orchestrator, not the ingest app. Ingest is a write path. Orchestrator is retrieve → generate → cite, plus a traces dashboard. Hosting both as Functions is an ops choice; the boundary is the API.

06Trust

LayerControl
TransportTLS 1.2+
AppAPI key on mutating and query routes
CloudManaged identity to storage, search, embeddings
DataEncryption at rest; SAS URLs expire in hours, not days
BlobsLeast-privilege containers; no public read