Dateien nach "scripts" hochladen
All checks were successful
Deploy mindnet to llm-node / deploy (push) Successful in 2s
All checks were successful
Deploy mindnet to llm-node / deploy (push) Successful in 2s
This commit is contained in:
parent
ec2ff74514
commit
c492f97a67
|
|
@ -2,28 +2,33 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
"""
|
"""
|
||||||
Name: scripts/reset_qdrant.py
|
Name: scripts/reset_qdrant.py
|
||||||
Version: v1.1.1 (2025-09-05)
|
Version: v1.2.0 (2025-11-11)
|
||||||
Kurzbeschreibung:
|
Kurzbeschreibung:
|
||||||
Sicheres Zurücksetzen der Qdrant-Collections für EIN Projektpräfix. Das Skript
|
Sicheres Zurücksetzen der Qdrant-Collections für EIN Projektpräfix. Das Skript
|
||||||
ermittelt zunächst die tatsächlich betroffenen Collections und zeigt eine
|
ermittelt zunächst die tatsächlich betroffenen Collections und zeigt eine
|
||||||
Übersicht an. Anschließend wird der User um Bestätigung gebeten (interaktive
|
Übersicht an. Anschließend wird der User um Bestätigung gebeten (interaktive
|
||||||
Abfrage), bevor eine der beiden Aktionen ausgeführt wird:
|
Abfrage), bevor eine der Aktionen ausgeführt wird:
|
||||||
|
|
||||||
- wipe: Löscht die Collections komplett und legt sie gemäß Projekt-Defaults neu an
|
- wipe: Löscht die Collections komplett und legt sie gemäß Projekt-Defaults neu an.
|
||||||
- truncate: Löscht nur alle Points (Inhalte), behält die Collection-Settings
|
**Neu**: Danach werden *immer* die Payload-Indizes & Schema-Ergänzungen
|
||||||
|
über ensure_payload_indexes() idempotent eingerichtet (falls nicht mit --no-indexes deaktiviert).
|
||||||
|
- truncate: Löscht nur alle Points (Inhalte), behält die Collection-Settings.
|
||||||
|
**Neu**: Optional (Default) werden im Anschluss die Payload-Indizes geprüft/ergänzt.
|
||||||
|
|
||||||
Aufruf (aus Projekt-Root, im venv):
|
Aufruf (aus Projekt-Root, im venv):
|
||||||
python3 -m scripts.reset_qdrant --mode wipe [--prefix PREFIX] [--yes] [--dry-run]
|
python3 -m scripts.reset_qdrant --mode wipe [--prefix PREFIX] [--yes] [--dry-run]
|
||||||
python3 -m scripts.reset_qdrant --mode truncate [--prefix PREFIX] [--yes] [--dry-run]
|
python3 -m scripts.reset_qdrant --mode truncate [--prefix PREFIX] [--yes] [--dry-run]
|
||||||
|
|
||||||
Parameter:
|
Parameter:
|
||||||
--mode wipe | truncate (Pflicht)
|
--mode wipe | truncate (Pflicht)
|
||||||
--prefix Collection-Prefix (Default: env COLLECTION_PREFIX oder 'mindnet')
|
--prefix Collection-Prefix (Default: env COLLECTION_PREFIX oder 'mindnet')
|
||||||
--yes Keine Rückfrage, direkt ausführen (CI/CD geeignet)
|
--yes Keine Rückfrage, direkt ausführen (CI/CD geeignet)
|
||||||
--dry-run Nur anzeigen, was passieren würde; nichts ändern
|
--dry-run Nur anzeigen, was passieren würde; nichts ändern
|
||||||
|
--no-indexes Überspringt den Schritt ensure_payload_indexes() (Standard: Indizes/Schema werden geprüft/ergänzt)
|
||||||
|
|
||||||
Umgebungsvariablen (optional):
|
Umgebungsvariablen (optional):
|
||||||
QDRANT_URL, QDRANT_API_KEY, COLLECTION_PREFIX, VECTOR_DIM (Default 384)
|
QDRANT_URL, QDRANT_API_KEY, COLLECTION_PREFIX, VECTOR_DIM (Default 384)
|
||||||
|
(Zusätzliche ENV für Named Vectors etc. werden innerhalb ensure_collections/ensure_payload_indexes berücksichtigt.)
|
||||||
|
|
||||||
Sicherheitsmerkmale:
|
Sicherheitsmerkmale:
|
||||||
- Betrachtet ausschließlich Collections des angegebenen Präfixes.
|
- Betrachtet ausschließlich Collections des angegebenen Präfixes.
|
||||||
|
|
@ -34,6 +39,8 @@ Exitcodes:
|
||||||
0 = OK, 1 = abgebrochen/keine Aktion, 2 = Verbindungs-/Konfigurationsfehler
|
0 = OK, 1 = abgebrochen/keine Aktion, 2 = Verbindungs-/Konfigurationsfehler
|
||||||
|
|
||||||
Changelog:
|
Changelog:
|
||||||
|
v1.2.0: ensure_payload_indexes() nach wipe/truncate standardmäßig ausführen (idempotent); --no-indexes Flag ergänzt.
|
||||||
|
v1.1.1: Stabilisierung & Preview (2025-09-05).
|
||||||
v1.1.0: Interaktive Bestätigung, --yes/--dry-run hinzugefügt, Preview der betroffenen Collections.
|
v1.1.0: Interaktive Bestätigung, --yes/--dry-run hinzugefügt, Preview der betroffenen Collections.
|
||||||
v1.0.0: Wipe/Truncate ohne Bestätigungsabfrage.
|
v1.0.0: Wipe/Truncate ohne Bestätigungsabfrage.
|
||||||
"""
|
"""
|
||||||
|
|
@ -46,7 +53,13 @@ from typing import List
|
||||||
from qdrant_client import QdrantClient
|
from qdrant_client import QdrantClient
|
||||||
from qdrant_client.http import models as rest
|
from qdrant_client.http import models as rest
|
||||||
|
|
||||||
from app.core.qdrant import QdrantConfig, get_client, ensure_collections, collection_names
|
from app.core.qdrant import (
|
||||||
|
QdrantConfig,
|
||||||
|
get_client,
|
||||||
|
ensure_collections,
|
||||||
|
ensure_payload_indexes,
|
||||||
|
collection_names,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def resolve_existing_collections(client: QdrantClient, prefix: str) -> List[str]:
|
def resolve_existing_collections(client: QdrantClient, prefix: str) -> List[str]:
|
||||||
|
|
@ -111,12 +124,13 @@ def wipe_collections(client: QdrantClient, all_col_names: List[str], existing: L
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
ap = argparse.ArgumentParser(description="Wipe oder truncate mindnet-Collections in Qdrant (mit Bestätigung).")
|
ap = argparse.ArgumentParser(description="Wipe oder truncate mindnet-Collections in Qdrant (mit Bestätigung & Index-Setup).")
|
||||||
ap.add_argument("--mode", choices=["wipe", "truncate"], required=True,
|
ap.add_argument("--mode", choices=["wipe", "truncate"], required=True,
|
||||||
help="wipe = Collections löschen & neu anlegen; truncate = nur Inhalte löschen")
|
help="wipe = Collections löschen & neu anlegen; truncate = nur Inhalte löschen")
|
||||||
ap.add_argument("--prefix", help="Collection-Prefix (Default: env COLLECTION_PREFIX oder 'mindnet')")
|
ap.add_argument("--prefix", help="Collection-Prefix (Default: env COLLECTION_PREFIX oder 'mindnet')")
|
||||||
ap.add_argument("--yes", action="store_true", help="Ohne Rückfrage ausführen (CI/CD)")
|
ap.add_argument("--yes", action="store_true", help="Ohne Rückfrage ausführen (CI/CD)")
|
||||||
ap.add_argument("--dry-run", action="store_true", help="Nur anzeigen, was passieren würde; nichts ändern")
|
ap.add_argument("--dry-run", action="store_true", help="Nur anzeigen, was passieren würde; nichts ändern")
|
||||||
|
ap.add_argument("--no-indexes", action="store_true", help="Überspringt ensure_payload_indexes()")
|
||||||
args = ap.parse_args()
|
args = ap.parse_args()
|
||||||
|
|
||||||
# Qdrant-Konfiguration
|
# Qdrant-Konfiguration
|
||||||
|
|
@ -155,13 +169,22 @@ def main():
|
||||||
if args.mode == "wipe":
|
if args.mode == "wipe":
|
||||||
wipe_collections(client, all_col_names, existing)
|
wipe_collections(client, all_col_names, existing)
|
||||||
ensure_collections(client, cfg.prefix, cfg.dim)
|
ensure_collections(client, cfg.prefix, cfg.dim)
|
||||||
|
if not args.no_indexes:
|
||||||
|
ensure_payload_indexes(client, cfg.prefix)
|
||||||
print(f"Wiped & recreated (Prefix={cfg.prefix}): {all_col_names}")
|
print(f"Wiped & recreated (Prefix={cfg.prefix}): {all_col_names}")
|
||||||
|
if not args.no_indexes:
|
||||||
|
print("Payload-Indizes & Schema-Ergänzungen geprüft/ergänzt (ensure_payload_indexes).")
|
||||||
else:
|
else:
|
||||||
if not existing:
|
if not existing:
|
||||||
print("Keine existierenden Collections zum Truncaten gefunden. Beende ohne Aktion.")
|
print("Keine existierenden Collections zum Truncaten gefunden. Beende ohne Aktion.")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
delete_all_points(client, existing)
|
delete_all_points(client, existing)
|
||||||
|
if not args.no_indexes:
|
||||||
|
# Auch nach truncate sicherstellen, dass neue/fehlende Indizes ergänzt werden
|
||||||
|
ensure_payload_indexes(client, cfg.prefix)
|
||||||
print(f"Truncated (deleted all points in): {existing}")
|
print(f"Truncated (deleted all points in): {existing}")
|
||||||
|
if not args.no_indexes:
|
||||||
|
print("Payload-Indizes & Schema-Ergänzungen geprüft/ergänzt (ensure_payload_indexes).")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user