Skip to content

[lore 4/7] VectorStore interface + sqlite-backed reference impl#4

Merged
kunallanjewar merged 1 commit into
mainfrom
quest-4-vectorstore-sqlitevec
Apr 28, 2026
Merged

[lore 4/7] VectorStore interface + sqlite-backed reference impl#4
kunallanjewar merged 1 commit into
mainfrom
quest-4-vectorstore-sqlitevec

Conversation

@kunallanjewar
Copy link
Copy Markdown
Contributor

Summary

  • Adds pkg/lore/vector with the VectorStore interface (Upsert, Delete, Search, Close), plus Hit and SearchOpts types and sentinel errors (ErrNotFound, ErrInvalidArgument, ErrClosed).
  • Adds pkg/lore/vector/sqlitevec: a pure-Go SQLite-backed reference impl. Vectors stored as little-endian float32 BLOBs; cosine similarity computed in Go over a full table scan (Path A, zero CGO, zero extensions). Acceptable at v0.1.1 scale; 100K scale limit documented in godoc.
  • Schema DDL in schema.go (vectors table with entry_id, dim, vec, updated_at).
  • OTel spans on lore.vector.upsert, lore.vector.delete, lore.vector.search with lore.id, lore.dim, lore.limit, lore.candidates attributes.
  • 10 tests: dimension mismatch, top-K cosine ranking, non-collinear nearest-neighbor, limit enforcement, default limit, delete not-found, delete removes from search, upsert replaces, close idempotent, search after close.
  • README usage example added.
  • Deps: go.opentelemetry.io/otel + trace v1.43.0, modernc.org/sqlite v1.50.0.

Test plan

  • go build ./... passes
  • go vet ./... passes
  • go test -race ./pkg/lore/vector/... passes (10/10 tests)
  • gofmt -l ./pkg/lore/vector/ reports no files
  • No PII in any new file
  • CI green

Part of lore v0.1.1 build campaign (QUEST-308, parallel with Q2/Q3/Q6).

@kunallanjewar kunallanjewar marked this pull request as ready for review April 28, 2026 15:28
@kunallanjewar kunallanjewar force-pushed the quest-4-vectorstore-sqlitevec branch from 6060908 to db2bb4e Compare April 28, 2026 15:31
Adds pkg/lore/vector with VectorStore interface (Upsert/Delete/Search/Close),
Hit and SearchOpts types, and pkg/lore/vector/sqlitevec: a pure-Go SQLite-backed
impl using BLOB columns + cosine similarity computed in Go (Path A, no CGO).

Includes schema DDL (vectors table), OTel spans on all write/read paths,
full test coverage (dimension mismatch, top-K ranking, limit, delete,
upsert replace, close idempotence), and README usage example.

go.mod: adds go.opentelemetry.io/otel + trace v1.43.0, modernc.org/sqlite v1.50.0.
@kunallanjewar kunallanjewar force-pushed the quest-4-vectorstore-sqlitevec branch from db2bb4e to 196802c Compare April 28, 2026 15:32
@kunallanjewar kunallanjewar merged commit c1b0f37 into main Apr 28, 2026
4 checks passed
@kunallanjewar kunallanjewar deleted the quest-4-vectorstore-sqlitevec branch April 28, 2026 15:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant