Skip to content

ochakai 0.10.2

Choose a tag to compare

@na0fu3y na0fu3y released this 19 Jul 17:29
Immutable release. Only release title and notes can be modified.
4b3085d

Attachments become searchable (design doc 0020, #92): filenames match in every search, and attachment contents join hybrid search — the follow-through on the groundwork design doc 0013 laid when it aligned the attachment allowlist with what Gemini embeds.

Attachment search (design doc 0020)

  • Filenames join the lexical haystack. Searching seeds finds the entry carrying seeds.txt — on every instance, embedder or not, effective immediately for existing attachments.
  • Attachment contents join hybrid search. On attach, the file is embedded into a new attachment_embedding table and fused into results as a third reciprocal-rank-fusion list. A hit is always the owning entry — attachments never stand alone (design doc 0008/0013), and ochakai still never interprets them (embedding is deterministic encoding, not interpretation).
    • text/plain embeds through the text path and works with any embedding model.
    • Images and PDFs embed with gemini-embedding-2 (GA 2026-04-22): set OCHAKAI_VERTEX_MODEL=gemini-embedding-2 and OCHAKAI_VERTEX_LOCATION=global (the model lives in global/us/eu only). On a text-only model they stay findable by name.
  • Replacing or detaching an attachment drops its vector in the same transaction; soft-deleting an entry keeps attachment vectors stored (search never surfaces them — revival brings them back).
  • No backfill, matching entry embeddings: only new attaches embed. Filename search needs none.

gemini-embedding-2 wire dialect

The Vertex driver now speaks two dialects, selected by model name: gemini-embedding-2* uses v1 :embedContent — task instructions folded into the prompt (the model has no task_type), outputDimensionality top-level, file bytes as inline_data parts next to a filename text part — while earlier models keep :predict + task_type. Verified against the live API; details recorded in design doc 0020 §2.3.

Switching an existing knowledge base to gemini-embedding-2 leaves previously stored vectors in the old model's space until entries are written again — there is no reindex mechanism, by the same write-time-only posture as entry embeddings. The default model stays gemini-embedding-001.

Container image

docker pull ghcr.io/na0fu3y/ochakai:0.10.2
gh attestation verify oci://ghcr.io/na0fu3y/ochakai:0.10.2 -R na0fu3y/ochakai