Files

40 lines
879 B
Python

import hashlib
from dataclasses import dataclass
def content_hash(content: str) -> str:
return hashlib.sha256(content.encode()).hexdigest()
@dataclass
class SyncStats:
added: int = 0
updated: int = 0
deleted: int = 0
unchanged: int = 0
@dataclass
class VectorHit:
id: str
kind: str
ref: str
title: str
content: str
metadata: dict
similarity: float
def hit_from_metadata(similarity: float, metadata: dict | None) -> VectorHit:
"""Build a transport-neutral hit from the metadata returned by a vector adapter."""
md = metadata or {}
return VectorHit(
id=md.get("record_key", ""),
kind=md.get("record_kind", md.get("kind", "")),
ref=md.get("ref", ""),
title=md.get("title", ""),
content=md.get("content", ""),
metadata=md,
similarity=float(similarity),
)