Code Embeddings

GNO now ships with an opinionated default embed model:

  • Qwen3-Embedding-0.6B-GGUF

That default is already strong on:

  • mixed markdown + prose collections
  • multilingual notes and docs
  • code-heavy collections

So for many users, the right answer is: do nothing.

Recent compatibility work also made the current Qwen path more intentional:

  • model-specific query/doc formatting is now explicit
  • indexing can recover item-by-item if batch embedding fails
  • batched vector-query embedding keeps the current Qwen path efficient

When To Override

Use a collection-level embed override when:

  • you want to test a code-specialist challenger
  • one collection should diverge from the global default without changing the rest of the workspace

Do not use a code-specific override for a mixed docs + notes + code collection unless you have benchmark evidence that it helps that mixed corpus.

Today, the recommended pattern is simpler:

  • keep the built-in default as-is
  • do not add a collection override just to get Qwen on code collections, because Qwen is already the global default embed model
  • only add a collection override when one collection should intentionally diverge from that default

If your code lives next to markdown docs, prefer splitting them into separate collections:

collections:
  - name: project-code
    path: /Users/you/work/project/src
    pattern: "**/*.{ts,tsx,js,jsx,go,rs,py,swift,c}"
    models:
  - name: project-docs
    path: /Users/you/work/project/docs
    pattern: "**/*.md"

CLI

New collection with an intentional override:

gno collection add ~/work/gno/src \
  --name gno-code \
  --embed-model "hf:Qwen/Qwen3-Embedding-0.6B-GGUF/Qwen3-Embedding-0.6B-Q8_0.gguf"

Re-embed after changing the collection embed model:

gno embed gno-code

Optional stale cleanup after the new embeddings exist:

gno collection clear-embeddings gno-code

Web UI

Collections page:

  1. open the collection menu
  2. choose Model settings
  3. set embed for that collection
  4. save
  5. run the suggested re-embed flow

For code-shaped collections, the dialog can surface benchmark-backed guidance. Use it when you are intentionally diverging from the global default, not just to re-apply the current default.

Why Qwen Is The Current Default

GNO benchmarked Qwen3-Embedding-0.6B-GGUF against bge-m3 on:

  • fixed code fixtures
  • real GNO code
  • pinned public OSS code slices
  • multilingual markdown docs

Current result:

  • Qwen won strongly enough to become the built-in default
  • collection overrides still matter only when one collection should diverge from that default
  • recent smoke runs on the current Qwen path remain healthy after the compatibility/profile work landed

See: