Embeddings & pgvector
Overview
Section titled “Overview”Embeddings convert text or image content into float vectors for similarity search.
Arcnem Vision stores embeddings in two tables:
| Table | Purpose | FK target |
|---|---|---|
document_embeddings | Raw document-derived vectors | documents.id |
document_description_embeddings | Description text vectors | document_descriptions.id |
Each row includes:
embedding(pgvector column)embedding_dim(stored vector length)model_id(which model produced the vector)
Current Schema
Section titled “Current Schema”The current schema stores variable-length vectors and tracks per-row dimensions.
embeddingDim: integer("embedding_dim").notNull().default(768),embedding: variableVector("embedding").notNull(),check( "document_embeddings_embedding_dim_matches_vector", sql`vector_dims(${table.embedding}) = ${table.embeddingDim}`,),Operational Constraints
Section titled “Operational Constraints”- Stored vector length must match
embedding_dim(vector_dims(embedding) = embedding_dim). - The schema currently has partial HNSW indexes for
embedding_dim = 768andembedding_dim = 1536. - Similarity search is only meaningful when query and indexed vectors come from compatible model spaces.
- Keep
model_idandembedding_dimconsistent between indexing and query flows.