CodeRED-Astra/rust-engine
2025-10-19 05:55:41 -05:00
..
demo-data Prepared demo files and demo explanation file. Added debug only button to trigger demo file ingest on the server to queue and prepare the files. Added small expressjs server for talking between the web app and the rust engine containers. 2025-10-19 05:55:41 -05:00
scripts Prepared demo files and demo explanation file. Added debug only button to trigger demo file ingest on the server to queue and prepare the files. Added small expressjs server for talking between the web app and the rust engine containers. 2025-10-19 05:55:41 -05:00
src Prepared demo files and demo explanation file. Added debug only button to trigger demo file ingest on the server to queue and prepare the files. Added small expressjs server for talking between the web app and the rust engine containers. 2025-10-19 05:55:41 -05:00
Cargo.lock Add and prepare rust worker management system for file information processing and knowledge base framework 2025-10-19 03:53:02 -05:00
Cargo.toml Add and prepare rust worker management system for file information processing and knowledge base framework 2025-10-19 03:53:02 -05:00
DEMODETAILS.md Prepared demo files and demo explanation file. Added debug only button to trigger demo file ingest on the server to queue and prepare the files. Added small expressjs server for talking between the web app and the rust engine containers. 2025-10-19 05:55:41 -05:00
Dockerfile Bringing build docker to latest to mitigate known security vulnerabilities 2025-10-19 04:11:59 -05:00
README.md Prepared demo files and demo explanation file. Added debug only button to trigger demo file ingest on the server to queue and prepare the files. Added small expressjs server for talking between the web app and the rust engine containers. 2025-10-19 05:55:41 -05:00
rust-toolchain.toml Bring chain versions up to proper version and bring dependencies up to current version. 2025-10-18 22:25:55 -05:00

Rust Engine API and Worker

Overview

  • HTTP API (warp) under /api for file management and query lifecycle
  • MySQL for metadata, Qdrant for vector similarity
  • Background worker resumes queued work and re-queues stale InProgress jobs at startup

Environment variables

  • DATABASE_URL: mysql://USER:PASS@HOST:3306/DB
  • QDRANT_URL: default http://qdrant:6333
  • GEMINI_API_KEY: used for Gemini content generation (optional in demo)

Endpoints (JSON)

  • POST /api/files (multipart)

    • Form: file=@path
    • Response: {"success": true}
  • GET /api/files/list

    • Response: {"files": [{"id","filename","path","description"}]}
  • GET /api/files/delete?id=<file_id>

    • Response: {"deleted": true|false}
  • POST /api/query/create

    • Body: {"q": "text", "top_k": 5}
    • Response: {"id": "uuid"}
  • GET /api/query/status?id=<query_id>

    • Response: {"status": "Queued"|"InProgress"|"Completed"|"Cancelled"|"Failed"|"not_found"}
  • GET /api/query/result?id=<query_id>

    • Response (Completed): { "result": { "summary": "Found N related files", "related_files": [ {"id","filename","path","description","score"} ], "relationships": "...", "final_answer": "..." } }
  • GET /api/query/cancel?id=<query_id>

    • Response: {"cancelled": true}

Worker behavior

  • Ensures Qdrant collection exists (dim 64, cosine)
  • Re-queues InProgress older than 10 minutes
  • Processing stages:
    1. Set InProgress
    2. Embed query text (demo now; pluggable Gemini later)
    3. Search Qdrant top_k (default 5)
    4. Join file metadata (MySQL)
    5. Gemini step: relationship analysis (strictly from provided files)
    6. Gemini step: final answer (no speculation; say unknown if insufficient)
    7. Persist result (JSON) and set Completed
    • Checks for cancellation between stages

Local quickstart

  1. docker compose up -d mysql qdrant
  2. set env DATABASE_URL and QDRANT_URL
  3. cargo run
  4. (optional) import demo PDFs
    • Ensure demo files are located in rust-engine/demo-data (default) or set DEMO_DATA_DIR env var to a folder containing PDFs.
    • Call the endpoint:
    • Or run the PowerShell helper:
      • ./scripts/import_demo.ps1 (adds all PDFs in demo-data)
      • ./scripts/import_demo.ps1 -Force (overwrite existing)

Notes

  • Replace demo embeddings with real Gemini calls for production
  • Add auth to endpoints if needed (API key/JWT)