feat(ai): pgvector embedding infrastructure #19

Merged
cesnimda merged 1 commits from feature/pgvector-infra into develop 2026-07-02 03:00:06 +02:00
Owner

Semantic-search slice 1 (infra): pgvector image + Pgvector EF (0.2.0) + Email.Embedding vector(768) with HNSW cosine index + migration. Verified full EF round-trip + cosine ordering against a real pgvector container. Column stays null until Ollama runs (lexical fallback). No vulnerable packages.

Note: deploy swaps the Postgres image; staging volume will be re-initialized fresh.

🤖 Generated with Claude Code

Semantic-search slice 1 (infra): pgvector image + Pgvector EF (0.2.0) + Email.Embedding vector(768) with HNSW cosine index + migration. Verified full EF round-trip + cosine ordering against a real pgvector container. Column stays null until Ollama runs (lexical fallback). No vulnerable packages. Note: deploy swaps the Postgres image; staging volume will be re-initialized fresh. 🤖 Generated with Claude Code
cesnimda added 1 commit 2026-07-02 02:29:52 +02:00
feat(ai): pgvector embedding infrastructure for semantic search
CI / backend (pull_request) Successful in 52s
CI / frontend (pull_request) Successful in 15s
Security / secrets (pull_request) Successful in 3s
Security / dependencies (pull_request) Successful in 54s
df04568b06
Semantic-search slice 1 (infra). Adds the pgvector plumbing the backfill worker and
hybrid search will use:
- swap the Postgres image to pgvector/pgvector:pg16 (drop-in for pg16 data)
- Pgvector + Pgvector.EntityFrameworkCore (0.2.0, EF8-compatible); UseVector() on the
  runtime + design-time contexts
- Email.Embedding vector(768) column (nomic-embed-text dims), nullable, with an HNSW
  cosine index; ignored under the InMemory test provider
- migration: CREATE EXTENSION vector + column + HNSW index

Verified against a real pgvector container: extension, HNSW, and cosine search work, and
the full EF round-trip (store a Pgvector.Vector, CosineDistance operator, nearest-first
ordering) applies all migrations and passes. No vulnerable packages. Build + all 41 tests
pass. Column stays null until Ollama generates embeddings (search falls back to lexical).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
cesnimda merged commit 2056548702 into develop 2026-07-02 03:00:06 +02:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cesnimda/Inboxintel#19