feat(vector): add opt-in multimodal attachment search - #611
feat(vector): add opt-in multimodal attachment search#611salmonumbrella wants to merge 2 commits into
Conversation
5fdae9a to
01774d9
Compare
roborev: Combined Review (
|
01774d9 to
2310a1e
Compare
roborev: Combined Review (
|
e7543bd to
7301e0c
Compare
roborev: Combined Review (
|
|
Looking at this |
- fix(vector): avoid attachment schema dependency
Keep the cmd package under the goconst occurrence threshold after the rebase onto main. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
d6e8450 to
4c9336e
Compare
roborev: Combined Review (
|
|
@salmonumbrella — thanks for this. Here's the plan for landing it, so nothing here is a surprise. What just happened. I squashed the branch to one commit (your authorship preserved) and rebased it onto current Ordering with #635. #635 (the continuation of your #616) is landing first. Both PRs add the same attachment-role / occurrence-provenance foundation — Moving the reusable pieces into docbank. #635 already imports docbank as a Go library for the provider-facing parts of document processing (format detection, private staging, capability probe/manifest, Mistral transport), while msgvault keeps provenance, consent, orchestration, storage, and search. We're going to do the same split here. The parts of this PR that are pure "bytes + declared type → is this an acceptable provider input" and "talk to the provider" are moving into docbank:
Everything else stays in msgvault as you wrote it: attachment provenance, generation-scoped claims and atomic publication, reconciliation, the sqlite-vec/pgvector storage, search and Files fusion, consent records, schedules, and the API/CLI/MCP/web surface. What this means for you. No action needed right now. This PR will get smaller, not different. We'll do the rebase and fix-ups on a kenn-io continuation branch (as with #616 → #635), keeping your original commit and authorship. If you'd rather drive the rebase yourself once #635 and the docbank package are in, just say so and I'll hold off. |
|
Working on docbank#172 |
|
Kicked off a refactor of this based on docbank#172 |
|
The continuation is up as #650, rebased on main after #635 with your commit and authorship preserved. The attachment-provenance foundation now comes from what #635 landed, and media detection, the Voyage client, and capability gating moved to Docbank's shared packages — the compile-time animated-GIF constant is now recorded probe evidence, with consent bound to the manifest fingerprint. No action needed; follow along on #650 if interested. |
|
@salmonumbrella I need sleep but I will try to wrap up the docbank change and this PR in the morning |
What changed
Why
Message text and attachment metadata cannot find something that is only visible in a screenshot, photo, diagram, or short video. This adds a separate, consent-gated retrieval lane without mixing visual vectors into message embeddings or losing the source message and attachment occurrence behind each result.
The formats supported by this PR are:
GIF indexing is not enabled in this PR. Animated GIFs remain blocked until the provider capability is authenticated; PDF, OCR, audio, transcription, and transcoding are also out of scope.
Usage
Set
VOYAGE_API_KEY, then enable the lane in~/.msgvault/config.toml:Restart the daemon, explicitly consent to hosted attachment processing, then search by text or image:
msgvault multimodal build --yes msgvault multimodal status msgvault multimodal search "diagram description" msgvault multimodal search --image query.pngCloses #609. Refs #612. Built on #589.
Draft boundary: the authenticated Voyage contract and representative-corpus evaluation still need to pass before this is ready to merge.