Skip to content

Tags: sqliteai/sqlite-memory

Tags

1.3.5

Toggle 1.3.5's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: support deferred embedding generation (#12)

Add a defer_embeddings option that stores content without computing
embeddings or FTS entries, so callers (e.g. a dashboard upload) can add
files instantly without an embedding model and index them later from a
background process.

- memory_set_option('defer_embeddings', 1): memory_add_* functions only
  store content in dbmem_content; requires save_content=1
- memory_embed_pending([limit]): embeds pending rows in batches, one
  SAVEPOINT per file, so an interrupted worker can be safely retried;
  rekeys rows whose stored hash no longer matches the current
  preserve_duplicate_paths scope
- memory_pending_count(): number of rows awaiting embeddings, for
  progress reporting
- memory_list_files(): file nodes now include an "indexed" boolean
- content parsing to zero chunks (e.g. whitespace-only) now inserts a
  zero-length sentinel row in dbmem_vault marking it processed, so it
  exits the pending state and memory_reindex stops re-parsing it
  (sqlite-vector >= 0.9.80 skips undersized blobs during scans)

1.3.4

Toggle 1.3.4's commit message
fix: rekey renamed duplicate-path content

Recompute path-scoped hashes when memory_rename_file renames rows with preserve_duplicate_paths=1, and carry the new hash through dbmem_content, dbmem_vault, and dbmem_vault_fts in the same transaction.

Reject renames for preserve_duplicate_paths rows created with save_content=0 because the original content is unavailable, so the new path-scoped hash cannot be recomputed safely.

Document the save_content interaction, add regression coverage for empty content and indexed vault/FTS rows, and bump SQLITE_DBMEMORY_VERSION to 1.3.4.

1.3.3

Toggle 1.3.3's commit message
chore(release): 1.3.3

- feat: lazily initialize engines from saved settings (#10)
- fix: keep preserved duplicate paths idempotent
- feat: support empty directory markers (#11)

1.3.2

Toggle 1.3.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: add preserve duplicate paths option (#9)

Add the preserve_duplicate_paths option for virtual-file/editor workflows that need distinct logical paths even when content is identical or empty.

When enabled with SELECT memory_set_option('preserve_duplicate_paths', 1), storage hashes are scoped by path so dbmem_content can keep separate rows while the embedding cache still reuses chunk embeddings by text.

Fix empty content handling so memory_add_content() and memory_add_file() can store zero-length entries without producing chunks, and keep default deduplication behavior unchanged when the option is 0.

Document the option, bump the extension version to 1.3.2, and cover default dedupe, duplicate preservation, and empty file/content behavior with unit tests.

1.3.1

Toggle 1.3.1's commit message
fix: correct sqlite result error lengths

Use -1 as the sqlite3_result_error message length where calls were incorrectly passing SQLITE_ERROR, so SQLite reads each null-terminated error message correctly.

Bump SQLITE_DBMEMORY_VERSION to 1.3.1 for the fix release.

1.3.0

Toggle 1.3.0's commit message
Minor fixes

1.2.2

Toggle 1.2.2's commit message
fix: guard memory operations before model setup

Return a SQLite error when content indexing reaches embedding computation before memory_set_model has initialized an embedding engine, avoiding a null-engine dereference.

Check missing provider/model before backend dispatch so OMIT_REMOTE_ENGINE builds report the same required-model error.

Clarify the empty memory_search path by telling users to add content before searching, add regression coverage for memory_add_text without model setup, bump the extension version to 1.2.2, and remove the stale session note.

1.2.1

Toggle 1.2.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix(local): harden embedding batch and context handling (#7)

Skip whitespace-only chunks before embedding, size local llama contexts from
the configured chunk window, and keep batch/context limits aligned to avoid
encoder assertions.

Use thread-local llama diagnostics instead of process-global logger user_data,
rebuild the local engine when token window options change, and invalidate cached
local embeddings after context rebuilds so stale embeddings are not reused.

1.2.0

Toggle 1.2.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix: align and persist remote embedding result metadata (#6)

- Unify embedding result metadata: replace n_tokens_truncated with a
  shared truncated boolean across local, remote, and custom engines.
- Persist n_tokens and truncated on dbmem_vault and dbmem_cache rows,
  with schema versioning and automatic migration of existing databases.
- Parse the documented vectors.space envelope (output_dimension,
  data[0].embedding, data[0].truncated, usage.request_tokens) instead
  of a flat key scan.
- Add e2e coverage for multi-chunk retrieval and single-chunk inserts
  around the provider token ceiling and model context window; search
  tests print per-chunk n_tokens/truncated round-tripped through the API.
- Run extension unit tests in CI (with local-only build fixes), use
  portable temp paths in sync tests, hash the sync fixture from disk,
  and isolate curl's ./configure from inherited shell build envs.
- Update the C API reference for the truncated flag on custom provider
  results.

1.1.0

Toggle 1.1.0's commit message
Update sqlite-memory.h