Embedding-Service neben Qwen implementieren #12

Closed
opened 2026-08-10 20:12:30 +02:00 by zwuge · 2 comments
Owner

Ziel

Eigenständigen, CPU-only Embedding-Service neben Qwen gemäß Season-AE-Handoff implementieren.

Scope

  • eigenes Python-Service-Paket mit FastAPI/Uvicorn
  • POST /embed mit festem Modell, task-Prüfung und modellabhängiger Präfixergänzung
  • Bearer-Token-Authentifizierung aus konfigurierbarer restriktiver Secret-Datei
  • genau ein aktiver Request; Limits: 16 Texte, 16.000 Zeichen/Text, 256.000 Zeichen gesamt
  • retrybare Überlast-/Ressourcenantworten (429/503), ohne internes Queueing
  • strukturierte Logs ohne Token, Request-Body oder Textinhalte
  • Contract- und Sicherheitstests mit synthetischen Daten

Nicht im Scope

  • Qwen-/vLLM-Konfiguration
  • Qdrant- oder secondbrain-mcp-Änderungen
  • Modell-Download, Deployment, systemd, Firewall, Zertifikate und Live-E2E
  • Festlegung der noch offenen Spark-Betriebswerte; diese werden vor Deployment separat dokumentiert

Akzeptanzkriterien

  • lokale Tests decken Schema, Auth, Modell-/Task-Prüfung, Limits, Belegung, Fehlercodes, Dimension und Log-Redaktion ab
  • ruff/Typprüfung gemäß Repo-Konventionen laufen für die neuen Dateien
  • Reifegrad bleibt implementiert; kein Deployment-/Live-Claim

Quellen

  • Season-AE-Handoff: season-ae-embedding-interface-handoff.md
  • Forgejo #6–#11, insbesondere #7–#11
## Ziel Eigenständigen, CPU-only Embedding-Service neben Qwen gemäß Season-AE-Handoff implementieren. ## Scope - eigenes Python-Service-Paket mit FastAPI/Uvicorn - `POST /embed` mit festem Modell, `task`-Prüfung und modellabhängiger Präfixergänzung - Bearer-Token-Authentifizierung aus konfigurierbarer restriktiver Secret-Datei - genau ein aktiver Request; Limits: 16 Texte, 16.000 Zeichen/Text, 256.000 Zeichen gesamt - retrybare Überlast-/Ressourcenantworten (`429`/`503`), ohne internes Queueing - strukturierte Logs ohne Token, Request-Body oder Textinhalte - Contract- und Sicherheitstests mit synthetischen Daten ## Nicht im Scope - Qwen-/vLLM-Konfiguration - Qdrant- oder `secondbrain-mcp`-Änderungen - Modell-Download, Deployment, systemd, Firewall, Zertifikate und Live-E2E - Festlegung der noch offenen Spark-Betriebswerte; diese werden vor Deployment separat dokumentiert ## Akzeptanzkriterien - lokale Tests decken Schema, Auth, Modell-/Task-Prüfung, Limits, Belegung, Fehlercodes, Dimension und Log-Redaktion ab - `ruff`/Typprüfung gemäß Repo-Konventionen laufen für die neuen Dateien - Reifegrad bleibt `implementiert`; kein Deployment-/Live-Claim ## Quellen - Season-AE-Handoff: `season-ae-embedding-interface-handoff.md` - Forgejo #6–#11, insbesondere #7–#11
Author
Owner

Implementierungsstand

Issue #12 ist lokal implementiert und nach origin/master gepusht.

Commits:

  • 1a7a379 — CPU-only Embedding-Service neben Qwen
  • 8b2bddc — kleiner Whitespace-Fix

Enthalten sind:

  • POST /embed
  • GET /healthz und GET /readyz
  • feste Modell-/Task-Prüfung
  • Bearer-Token-Authentifizierung
  • Batch- und Zeichengrenzen
  • exklusive Inferenz mit 429 bei Belegung
  • 503 bei Readiness-/Dimensions-/Ressourcenproblemen
  • strukturierte Logs ohne Request-Inhalte
  • reproduzierbarer lokaler Modellrevisions-Pin
  • Contract- und Sicherheitstests mit synthetischen Daten

Verifikation:

  • 11 gezielte Service-Tests grün
  • Ruff grün
  • Mypy grün
  • Packaging-Dry-Run erfolgreich
  • Gesamtsuite: 442 bestanden, 2 übersprungen
  • 2 bestehende, unabhängige OCR-Permission-Fehler bleiben offen

Nicht erfolgt:

  • kein Modell-Download
  • kein Deployment oder Dienststart
  • keine systemd-, Firewall- oder Zertifikatsänderung
  • keine Änderungen an Qwen, Qdrant oder secondbrain-mcp

Reifegrad: implementiert, nicht deployt, nicht live verifiziert.

## Implementierungsstand Issue #12 ist lokal implementiert und nach `origin/master` gepusht. Commits: - `1a7a379` — CPU-only Embedding-Service neben Qwen - `8b2bddc` — kleiner Whitespace-Fix Enthalten sind: - `POST /embed` - `GET /healthz` und `GET /readyz` - feste Modell-/Task-Prüfung - Bearer-Token-Authentifizierung - Batch- und Zeichengrenzen - exklusive Inferenz mit `429` bei Belegung - `503` bei Readiness-/Dimensions-/Ressourcenproblemen - strukturierte Logs ohne Request-Inhalte - reproduzierbarer lokaler Modellrevisions-Pin - Contract- und Sicherheitstests mit synthetischen Daten Verifikation: - 11 gezielte Service-Tests grün - Ruff grün - Mypy grün - Packaging-Dry-Run erfolgreich - Gesamtsuite: 442 bestanden, 2 übersprungen - 2 bestehende, unabhängige OCR-Permission-Fehler bleiben offen Nicht erfolgt: - kein Modell-Download - kein Deployment oder Dienststart - keine systemd-, Firewall- oder Zertifikatsänderung - keine Änderungen an Qwen, Qdrant oder `secondbrain-mcp` Reifegrad: `implementiert`, nicht `deployt`, nicht `live verifiziert`.
Author
Owner

Implementierung abgeschlossen.

  • CPU-only FastAPI/Uvicorn-Service neben Qwen umgesetzt
  • POST /embed, /healthz, /readyz, feste Modell-/Task-Semantik, Limits, Bearer-Auth, atomare Batches und exklusive Inferenz umgesetzt
  • redigierte strukturierte Logs sowie fail-closed Readiness umgesetzt
  • Commits: 1a7a379, 8b2bddc
  • Verifikation: 11 gezielte Tests, Ruff, Mypy und Packaging-Dry-Run bestanden
  • vollständige Suite: 442 bestanden, 2 übersprungen; 2 bestehende OCR-Timeout-Setupfehler außerhalb dieses Scopes

Qwen, Qdrant und secondbrain-mcp wurden nicht verändert. Deployment, Secrets, Zertifikate, Firewall und Live-E2E sind ausdrücklich nicht Teil dieses Tickets. Reifegrad: implementiert, nicht deployt, nicht live verifiziert.

Implementierung abgeschlossen. - CPU-only FastAPI/Uvicorn-Service neben Qwen umgesetzt - `POST /embed`, `/healthz`, `/readyz`, feste Modell-/Task-Semantik, Limits, Bearer-Auth, atomare Batches und exklusive Inferenz umgesetzt - redigierte strukturierte Logs sowie fail-closed Readiness umgesetzt - Commits: `1a7a379`, `8b2bddc` - Verifikation: 11 gezielte Tests, Ruff, Mypy und Packaging-Dry-Run bestanden - vollständige Suite: 442 bestanden, 2 übersprungen; 2 bestehende OCR-Timeout-Setupfehler außerhalb dieses Scopes Qwen, Qdrant und `secondbrain-mcp` wurden nicht verändert. Deployment, Secrets, Zertifikate, Firewall und Live-E2E sind ausdrücklich nicht Teil dieses Tickets. Reifegrad: **implementiert**, nicht deployt, nicht live verifiziert.
zwuge closed this issue 2026-08-10 21:57:02 +02:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
zwuge/dgx-spark#12
No description provided.