Run a single embed call against *embedder* and report dim or error. *params* are spread into ``embed()`` so callers can verify indexing vs query params separately (they may use different keys at runtime). Never raises. Used by the daemon's doctor path (`daemon._check_model`).
(
embedder: Embedder,
params: dict[str, Any] | None = None,
)
| 59 | |
| 60 | |
| 61 | async def check_embedding( |
| 62 | embedder: Embedder, |
| 63 | params: dict[str, Any] | None = None, |
| 64 | ) -> EmbeddingCheckResult: |
| 65 | """Run a single embed call against *embedder* and report dim or error. |
| 66 | |
| 67 | *params* are spread into ``embed()`` so callers can verify indexing vs |
| 68 | query params separately (they may use different keys at runtime). |
| 69 | |
| 70 | Never raises. Used by the daemon's doctor path (`daemon._check_model`). |
| 71 | """ |
| 72 | kwargs = dict(params) if params else {} |
| 73 | try: |
| 74 | vec = await embedder.embed("hello world", **kwargs) |
| 75 | return EmbeddingCheckResult(dim=len(vec), error=None) |
| 76 | except Exception as e: |
| 77 | msg = " ".join(f"{type(e).__name__}: {e}".splitlines()) |
| 78 | if len(msg) > 500: |
| 79 | msg = msg[:500] + "…" |
| 80 | return EmbeddingCheckResult(dim=None, error=msg, traceback=_tb.format_exc()) |
| 81 | |
| 82 | |
| 83 | def create_embedder( |