LogoVisionLog

Layer 5: Storage

Persistent storage for face embeddings and attendance logs

The Storage Layer provides persistent storage for face embeddings and attendance records.

Overview

  • Purpose: Persist face embeddings and attendance records
  • Database: PostgreSQL with pgvector extension
  • Data: Face embeddings, attendance records, unknown faces

PostgreSQL with pgvector

The system uses PostgreSQL as the primary database with the pgvector extension for efficient vector similarity search.

FeatureBenefit
ACID ComplianceReliable data integrity
pgvector ExtensionFast 512-d embedding search
JSON SupportFlexible configuration storage
IndexingEfficient query performance

Data Schema

Person Table

Store enrolled persons with their face embeddings.

FieldTypeDescription
IDUUIDUnique identifier
Employee IDStringExternal identifier
First NameStringPerson's first name
Last NameStringPerson's last name
EmailStringContact email
DepartmentStringOrganization unit
Enrolled AtTimestampEnrollment date
Is ActiveBooleanActive status

Face Embeddings Table

Store face embeddings for recognition.

FieldTypeDescription
IDUUIDUnique identifier
Person IDUUIDReference to person
EmbeddingVector(512)Face embedding
Created AtTimestampCreation date

Attendance Table

Store attendance records.

FieldTypeDescription
IDUUIDUnique identifier
Person IDUUIDReference to person
Camera IDStringSource camera
TimestampDateTimeAttendance time
ConfidenceFloatRecognition confidence
Snapshot PathStringPath to face snapshot

Camera Table

Store camera configuration.

FieldTypeDescription
IDStringCamera identifier
NameStringDisplay name
LocationStringPhysical location
Stream URLStringVideo stream URL
Is ActiveBooleanActive status

Database Operations

Core Functions

OperationDescription
Add PersonRegister new person in system
Add EmbeddingStore face embedding for person
Find SimilarSearch for matching faces
Log AttendanceRecord attendance entry
Get ReportQuery attendance data

PostgreSQL with pgvector enables fast similarity search:

  • HNSW indexing for efficient nearest neighbor search
  • Cosine similarity for face matching
  • Optimized for 512-dimensional embeddings

Configuration

PostgreSQL Settings

SettingDescription
HostPostgreSQL server address
PortDatabase port (default: 5432)
DatabaseDatabase name
UserConnection username
PasswordConnection password
Pool SizeConnection pool size

Backup and Recovery

Backup Strategy

ComponentMethodFrequency
Face Embeddingspg_dumpDaily
Attendance Recordspg_dumpDaily
Full Databasepg_dumpWeekly

Data Retention

Consider policies for:

  • Archiving old attendance records
  • Cleaning up temporary data
  • Snapshot image management

Performance Optimization

Indexing Strategy

Create indexes for:

  • Person lookups by employee ID
  • Attendance queries by date
  • Active person filtering
  • Vector similarity search

Connection Pooling

Use connection pooling for production:

  • Reduces connection overhead
  • Manages concurrent access
  • Improves response times

Summary

The Storage Layer provides:

  • Person Management - Store enrolled persons and face embeddings
  • Attendance Logging - Record attendance with timestamps
  • Vector Search - Fast face matching capability
  • Reporting - Query attendance data for reports

On this page