fix(dashboard): st.secrets lazy load, chroma_store metadata types, ChromaDB sync
This commit is contained in:
@@ -31,19 +31,21 @@ class ChromaStore:
|
||||
)
|
||||
|
||||
def _build_metadata(self, engram: Engram) -> Dict[str, Any]:
|
||||
"""Serialisierte Metadaten für ChromaDB (nur primitives)."""
|
||||
meta = engram.metadata.copy()
|
||||
# ChromaDB akzeptiert nur Listen/Strings/Numbers/Bools
|
||||
tags = meta.pop("tags", [])
|
||||
if isinstance(tags, list):
|
||||
meta["tags"] = ",".join(str(t) for t in tags)
|
||||
meta.setdefault("source", "agent")
|
||||
meta.setdefault("confidence", 0.5)
|
||||
meta.setdefault("correctness", "unconfirmed")
|
||||
# Hierarchy als JSON-String
|
||||
if "hierarchy" in meta:
|
||||
meta["hierarchy"] = json.dumps(meta["hierarchy"])
|
||||
return meta
|
||||
"""Serialisierte Metadaten für ChromaDB (nur primitiv/scalar/Str)."""
|
||||
m = engram.metadata
|
||||
safe: Dict[str, Any] = {}
|
||||
# Nur explizit erlaubte Felder übernehmen
|
||||
safe["source"] = str(m.get("source", "agent"))
|
||||
safe["confidence"] = float(m.get("confidence", 0.5))
|
||||
safe["grounding"] = int(m.get("grounding", 1))
|
||||
tags = m.get("tags", [])
|
||||
safe["tags"] = ",".join(str(t) for t in tags) if isinstance(tags, list) else str(tags)
|
||||
safe["created"] = str(m.get("created", ""))
|
||||
safe["modified"] = str(m.get("modified", ""))
|
||||
safe["access_count"] = int(m.get("access_count", 0))
|
||||
safe["correctness"] = "confirmed" if engram.correctness.confirmed else "unconfirmed"
|
||||
safe["content"] = str(engram.content)[:500] # Chroma akzeptiert kurze Strings besser
|
||||
return safe
|
||||
|
||||
def add(self, engram: Engram, embedding: Optional[List[float]] = None) -> None:
|
||||
"""Engramm mit Embedding zur Vektor-DB hinzufügen."""
|
||||
|
||||
Reference in New Issue
Block a user