This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
backendcritical PriorityID: pg17-halfvec-hnsw-memory-quarantine

Postgres 17 Half-Precision HNSW Index Memory Quarantine & Resource Isolation

Enforces strict memory quarantine and session-level isolation for billion-scale halfvec HNSW index builds in PostgreSQL 17. Prevents shared buffer cache thrashing, backend worker memory starvation, and kernel OOM kills by constraining parallel maintenance workers, allocating bounded session-local maintenance_work_mem, and indexing across bounded partitions.

Prohibited Anti-Pattern: Unquarantined Full-Precision HNSW Index Builds on Shared OLTP Connections Inducing Backend OOM Starvation

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: Postgres 17 Half-Precision HNSW Index Memory Quarantine & Resource Isolation - Enforces strict memory quarantine and session-level isolation for billion-scale halfvec HNSW index builds in PostgreSQL 17. Prevents shared buffer cache thrashing, backend worker memory starvation, and kernel OOM kills by constraining parallel maintenance workers, allocating bounded session-local maintenance_work_mem, and indexing across bounded partitions.
globs: src/db/**/*.ts, src/database/**/*.ts, src/migrations/**/*.ts, src/workers/**/*.ts
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/pg17-halfvec-hnsw-memory-quarantine"
---

# Postgres 17 Half-Precision HNSW Index Memory Quarantine & Resource Isolation

> **Severity**: CRITICAL | **Category**: backend
> **Anti-Pattern Warning**: Unquarantined Full-Precision HNSW Index Builds on Shared OLTP Connections Inducing Backend OOM Starvation

## System Constraints
You are a Principal Database Infrastructure Engineer enforcing strict resource isolation for Postgres 17 and pgvector (0.7.0+) systems. You must mandate memory quarantine patterns during large-scale HNSW index builds on halfvec types to safeguard concurrent OLTP workloads from memory starvation and buffer pool eviction.

## Strict Guidelines
- Engineers MUST ALWAYS cast high-dimensional float vector embeddings to 'halfvec' (16-bit half-precision) before indexing to achieve a 50% reduction in working memory footprint and index storage.
- Engineers MUST execute vector index construction via an isolated, dedicated maintenance connection pool rather than standard OLTP application pools.
- Engineers MUST NOT execute HNSW index builds inside active multi-statement transaction blocks (`BEGIN ... COMMIT`) or through client-side transaction wrappers.
- Code MUST set deterministic session-scoped GUCs (`maintenance_work_mem`, `max_parallel_maintenance_workers`, and `lock_timeout`) strictly within the isolated maintenance session before invoking `CREATE INDEX CONCURRENTLY`.
- Services MUST partition billion-scale vector tables (e.g., declarative RANGE or LIST partitioning) and build HNSW indexes partition-by-partition sequentially to guarantee bounded working memory caps.
- Workers MUST monitor `pg_stat_progress_create_index` and terminate index construction immediately if graph construction memory exceeds the quarantined maintenance budget.

## Bad vs Good Implementations
### HNSW Vector Indexing on Postgres 17

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: Executes on the primary OLTP connection pool inside a transaction, uses full 32-bit float vectors, and does not configure session-level maintenance memory boundaries. Under billion-scale datasets, this blows through system RAM, thrashes PostgreSQL's shared buffers, and triggers OOM kills of concurrent query backend workers.
```typescript
import { Pool } from 'pg';

export async function buildVectorIndex(sharedAppPool: Pool): Promise<void> {
  // Anti-pattern: Executed on shared OLTP pool, full precision 32-bit vector,
  // unconstrained maintenance_work_mem, inside a transaction block,
  // causing shared_buffers eviction and backend OOM starvation under concurrent load.
  const client = await sharedAppPool.connect();
  try {
    await client.query('BEGIN');
    await client.query(`
      CREATE INDEX idx_embeddings_hnsw ON document_embeddings 
      USING hnsw (embedding vector_cosine_ops)
      WITH (m = 32, ef_construction = 128);
    `);
    await client.query('COMMIT');
  } catch (err) {
    await client.query('ROLLBACK');
    throw err;
  } finally {
    client.release();
  }
}
```

#### Production Standard (Correct)
> **Standard**: Establishes a dedicated, unpooled maintenance connection outside of transactional blocks. Explicitly scopes `maintenance_work_mem` and `max_parallel_maintenance_workers` to quarantine memory consumption. Employs Postgres 17 `halfvec(1536)` to halve memory consumption and indexes partitions concurrently without starving concurrent workloads.
```typescript
import { Client } from 'pg';

interface QuarantineConfig {
  connectionString: string;
  maintenanceWorkMem: string; // e.g. '4GB'
  maxParallelWorkers: number;
  targetPartition: string;
}

export async function buildQuarantinedHalfvecIndex(config: QuarantineConfig): Promise<void> {
  // Invariant: Use an isolated dedicated connection, outside OLTP pools and transactions.
  const client = new Client({ connectionString: config.connectionString });
  await client.connect();

  try {
    // Quarantine session parameters strictly before building the graph
    await client.query('SET lock_timeout = \'10s\'');
    await client.query('SET statement_timeout = \'0\'');
    await client.query(`SET maintenance_work_mem = '${config.maintenanceWorkMem}'`);
    await client.query(`SET max_parallel_maintenance_workers = ${config.maxParallelWorkers}`);

    // Invariant: Build concurrently on halfvec to halve memory footprint and isolate buffer degradation
    const indexName = `idx_${config.targetPartition}_halfvec_hnsw`;
    const query = `
      CREATE INDEX CONCURRENTLY IF NOT EXISTS ${indexName}
      ON ${config.targetPartition}
      USING hnsw ((embedding::halfvec(1536)) halfvec_cosine_ops)
      WITH (m = 16, ef_construction = 64);
    `;

    await client.query(query);
  } finally {
    await client.query('RESET ALL');
    await client.end();
  }
}
```

Recommended MCP Servers (mcp-serverlist.com)

Equip agent with system tools to verify code for this stack.

Recommended Agent Skills (askills.dev)

Ready-to-use executable skill functions tailored to this stack.

Architectural Specification & Invariant Rationale

Architectural Invariant Design: Postgres 17 Half-Precision HNSW Index Memory Quarantine & Resource Isolation

Postgres 17 Half-Precision HNSW Index Memory Quarantine & Resource Isolation defines an industrial-grade behavioral standard for backend engineering. Enforces strict memory quarantine and session-level isolation for billion-scale halfvec HNSW index builds in PostgreSQL 17. Prevents shared buffer cache thrashing, backend worker memory starvation, and kernel OOM kills by constraining parallel maintenance workers, allocating bounded session-local maintenance_work_mem, and indexing across bounded partitions. Modern software architectures require strict adherence to deterministic patterns to guarantee high availability, maintainability, and zero security vulnerabilities.

Framework Paradigm Shift & Drift MechanicsLLMs are trained on millions of open-source repositories containing outdated code, legacy idioms, and unpatched antipatterns. When coding assistants generate implementations for this stack, they default to common statistical tokens: Unquarantined Full-Precision HNSW Index Builds on Shared OLTP Connections Inducing Backend OOM Starvation Without an explicit system instruction file, developers spend hours debugging silent failures.
Failure Modes & Production Blast Radius

Hazard Analysis: What Breaks Without This Rule

The following failure modes have been cataloged from hundreds of hours of production code reviews where AI assistants produced non-compliant implementations:

Failure ModeAI Symptom (The Anti-Pattern)SeverityProduction Impact & Remedy
AI Hallucination & Deprecation DriftUnquarantined Full-Precision HNSW Index Builds on Shared OLTP Connections Inducing Backend OOM StarvationCritical
Violating this industrial standard introduces regression bugs, security risks, and unexpected runtime failures in production.
Enforce explicit behavioral system directives across all AI coding assistants in your repository.
Silent Architecture InconsistencyAI assistants produce mixed paradigms across files, creating fragmented codebase conventions.Medium
Increases cognitive load during code reviews and leads to maintenance debt across engineering teams.
Pin project conventions in .cursor/rules, CLAUDE.md, and AGENTS.md so all team agents follow identical guardrails.
Architectural Directives in Detail

Step-by-Step Production Directives

Each rule constraint below is injected into the AI agent's system prompt to establish deterministic boundaries:

1

Engineers MUST ALWAYS cast high-dimensional float vector embeddings to 'halfvec' (16-bit half-precision) before indexing to achieve a 50% reduction in working memory footprint and index storage.

Engineers MUST ALWAYS cast high-dimensional float vector embeddings to 'halfvec' (16-bit half-precision) before indexing to achieve a 50% reduction in working memory footprint and index storage.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
2

Engineers MUST execute vector index construction via an isolated, dedicated maintenance connection pool rather than standard OLTP application pools.

Engineers MUST execute vector index construction via an isolated, dedicated maintenance connection pool rather than standard OLTP application pools.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
3

Engineers MUST NOT execute HNSW index builds inside active multi-statement transaction blocks (`BEGIN ... COMMIT`) or through client-side transaction wrappers.

Engineers MUST NOT execute HNSW index builds inside active multi-statement transaction blocks (`BEGIN ... COMMIT`) or through client-side transaction wrappers.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
4

Code MUST set deterministic session-scoped GUCs (`maintenance_work_mem`, `max_parallel_maintenance_workers`, and `lock_timeout`) strictly within the isolated maintenance session before invoking `CREATE INDEX CONCURRENTLY`.

Code MUST set deterministic session-scoped GUCs (`maintenance_work_mem`, `max_parallel_maintenance_workers`, and `lock_timeout`) strictly within the isolated maintenance session before invoking `CREATE INDEX CONCURRENTLY`.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
5

Services MUST partition billion-scale vector tables (e.g., declarative RANGE or LIST partitioning) and build HNSW indexes partition-by-partition sequentially to guarantee bounded working memory caps.

Services MUST partition billion-scale vector tables (e.g., declarative RANGE or LIST partitioning) and build HNSW indexes partition-by-partition sequentially to guarantee bounded working memory caps.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
6

Workers MUST monitor `pg_stat_progress_create_index` and terminate index construction immediately if graph construction memory exceeds the quarantined maintenance budget.

Workers MUST monitor `pg_stat_progress_create_index` and terminate index construction immediately if graph construction memory exceeds the quarantined maintenance budget.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
Technical Questions & Answers

Frequently Asked Technical Questions

Common questions developers face when configuring AI coding assistants for this stack:

Q:Why is Postgres 17 Half-Precision HNSW Index Memory Quarantine & Resource Isolation critical for AI coding assistants?

Enforces strict memory quarantine and session-level isolation for billion-scale halfvec HNSW index builds in PostgreSQL 17. Prevents shared buffer cache thrashing, backend worker memory starvation, and kernel OOM kills by constraining parallel maintenance workers, allocating bounded session-local maintenance_work_mem, and indexing across bounded partitions. Without explicit behavioral boundaries, AI coding assistants (Cursor, Claude Code, Windsurf, Codex) rely on training data averages, which frequently produce deprecated, inefficient, or vulnerable code patterns.

Q:How does adopting this rule prevent AI hallucinations?

This rule explicitly declares what the AI must avoid (Unquarantined Full-Precision HNSW Index Builds on Shared OLTP Connections Inducing Backend OOM Starvation) and prescribes verified positive examples. Grounding the LLM with negative and positive pairs eliminates guesswork.

Q:Which AI coding environments are supported?

This specification is multi-platform compatible: Cursor (.cursor/rules/*.mdc & .cursorrules), Anthropic Claude Code (CLAUDE.md), Windsurf (.windsurfrules), Codex / Cline (AGENTS.md), and GitHub Copilot (.github/copilot-instructions.md).

Q:Can I combine this rule with other technology stacks?

Yes. Use the Interactive Stack Builder or download an Agent Pack to merge this rule with other frontend, backend, database, security, and DevOps rules without syntax collision.

Open Specification · CC BY 4.0·Free for Personal, Team & Commercial In-Repo Use

Citation & Open Source Attribution Guidelines

This specification is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). You are completely free to adapt and share this rule in your workspace. If citing, including in public AI benchmark datasets, or redistributing, attribution to AgentRules.org is required.

1 Rule in Stack

Postgres