# Installed SQL Object And Option Inventory Generated by `scripts/generate-sql-object-inventory.sh` from `sql/pgcontext--0.3.0.sql` and the HNSW reloptions callback. Run the generator after changing the installed SQL contract, or use `scripts/generate-sql-object-inventory.sh --check` to verify it. Do not edit this file by hand. The SQL contract registry owns lifecycle classification; this inventory pins the installed object and option shape consumed by the capability contract. Full SQL artifact SHA-256: `e64dcfb289a4c21a05cc055a4a0e45f548258164674747660029a9b4d6ac1fdc` The artifact fingerprint covers every object declaration, function result shape, cast method/context, operator identity, and opclass strategy. `contract_registry` separately compares installed functions and catalog objects bidirectionally, including typed operator and access-method/input-type opclass identities. | Object kind | Installed count | |---|---:| | Types | 20 | | Schemas | 0 | | Functions | 468 | | Tables | 44 | | Views | 33 | | Triggers | 6 | | Casts | 35 | | Operators | 62 | | Operator classes | 70 | | Aggregates | 12 | | Access methods | 2 | ## Types - `BuildJobStatus` - `EmbeddingMigrationStatus` - `HalfVec` - `IndexAdvisorRecommendation` - `IndexDiagnosticStatus` - `IndexLifecycleStatus` - `IndexMemoryEstimateStatus` - `OptimizationStatus` - `QueryCohortStatus` - `QueryExplainStatus` - `QueryLatencyBucket` - `QueryLifecycleState` - `RecallCheckStatus` - `SparseVec` - `TelemetryStatus` - `VacuumAdviceStatus` - `Vector` - `pgcontext.bitvec` - `pgcontext.int8vec` - `pgcontext.uint8vec` ## Schemas, Tables, Views, And Triggers - table `pgcontext._artifact_reader_pins` - table `pgcontext._artifact_segments` - table `pgcontext._build_deltas` - table `pgcontext._build_jobs` - table `pgcontext._chunking_profile_alias_history` - table `pgcontext._chunking_profile_alias_retained` - table `pgcontext._chunking_profile_aliases` - table `pgcontext._chunking_profiles` - table `pgcontext._collection_aliases` - table `pgcontext._collection_fuzzy_sources` - table `pgcontext._collection_late_interaction_tokens` - table `pgcontext._collection_late_interaction` - table `pgcontext._collection_lexical_fields` - table `pgcontext._collection_lexical_sources` - table `pgcontext._collection_payload_columns` - table `pgcontext._collection_points` - table `pgcontext._collection_source_revisions` - table `pgcontext._collection_sparse_vectors` - table `pgcontext._collection_vectors` - table `pgcontext._collections` - table `pgcontext._current_document_chunk_generations` - table `pgcontext._document_chunk_generations` - table `pgcontext._document_chunk_jobs` - table `pgcontext._document_chunk_staging` - table `pgcontext._document_embedding_jobs` - table `pgcontext._document_sources` - table `pgcontext._embedding_migrations` - table `pgcontext._embedding_profiles` - table `pgcontext._exact_first_columns` - table `pgcontext._exact_first_invalid_samples` - table `pgcontext._exact_first_plan_jobs` - table `pgcontext._exact_first_plans` - table `pgcontext._exact_first_registrations` - table `pgcontext._exact_first_targets` - table `pgcontext._generation_aliases` - table `pgcontext._generation_artifacts` - table `pgcontext._generation_build_rows` - table `pgcontext._generation_manifests` - table `pgcontext._generation_reader_pins` - table `pgcontext._pgvector_ownership_conversions` - table `pgcontext._query_stats` - table `pgcontext._semantic_rerank_candidates` - table `pgcontext._semantic_rerank_requests` - table `pgcontext._semantic_rerank_sources` - trigger `embedding_profiles_immutable` - trigger `pgcontext_build_jobs_no_progress_regression` - trigger `pgcontext_build_jobs_terminal_state` - trigger `pgcontext_capture_build_point_delta` - trigger `pgcontext_cleanup_late_interaction_registration` - trigger `pgcontext_initialize_collection_source_revision` - view `pgcontext._collection_acl` - view `pgcontext._visible_artifact_segments` - view `pgcontext._visible_build_jobs` - view `pgcontext._visible_chunking_profile_alias_retained` - view `pgcontext._visible_chunking_profile_aliases` - view `pgcontext._visible_chunking_profiles` - view `pgcontext._visible_collection_fuzzy_sources` - view `pgcontext._visible_collection_late_interaction` - view `pgcontext._visible_collection_lexical_fields` - view `pgcontext._visible_collection_lexical_sources` - view `pgcontext._visible_collection_limits` - view `pgcontext._visible_collection_payload_columns` - view `pgcontext._visible_collection_points` - view `pgcontext._visible_collection_sparse_vectors` - view `pgcontext._visible_collection_vectors` - view `pgcontext._visible_collections` - view `pgcontext._visible_current_document_chunk_generations` - view `pgcontext._visible_document_chunk_generations` - view `pgcontext._visible_document_chunk_jobs` - view `pgcontext._visible_document_chunk_staging` - view `pgcontext._visible_document_embedding_jobs` - view `pgcontext._visible_document_sources` - view `pgcontext._visible_embedding_profiles` - view `pgcontext._visible_exact_first_columns` - view `pgcontext._visible_exact_first_invalid_samples` - view `pgcontext._visible_exact_first_plans` - view `pgcontext._visible_exact_first_registrations` - view `pgcontext._visible_exact_first_targets` - view `pgcontext._visible_pgvector_ownership_conversions` - view `pgcontext._visible_query_stats` - view `pgcontext._visible_semantic_rerank_candidates` - view `pgcontext._visible_semantic_rerank_requests` - view `pgcontext._visible_semantic_rerank_sources` ## Function Names Overload argument and result identities are pinned by the artifact fingerprint and bidirectional `contract_registry` test. - `"_begin_pgvector_ownership_conversion"` - `"_compact_hnsw_segment_pair"` - `"_consume_document_chunk_permit"` - `"_document_chunk_raw_datum_bytes"` - `"_document_chunk_source_key_visible"` - `"_enqueue_ivfflat_compaction_debt"` - `"_hnsw_candidates"` - `"_hnsw_masked_candidates"` - `"_hnsw_sparse_candidates"` - `"_hnsw_sparse_masked_candidates"` - `"_mmap_hnsw_artifact_candidates"` - `"_sync_pgvector_ownership_columns"` - `"_transition_pgvector_ownership_conversion"` - `"adopt_pgvector"` - `"apply_exact_first_plan"` - `"artifact_segment_diagnostics"` - `"artifact_segment_memory"` - `"artifact_segment_mmap_payload"` - `"artifact_segment_serving_readiness"` - `"artifact_segments"` - `"attach_fuzzy_index"` - `"attach_hnsw_index"` - `"attach_lexical_index"` - `"attach_sparse_hnsw_index"` - `"backfill_points"` - `"binary_quantize"` - `"bitvec"` - `"bitvec_and_transition"` - `"bitvec_bits_final"` - `"bitvec_cmp"` - `"bitvec_dims"` - `"bitvec_enforce_typmod"` - `"bitvec_eq"` - `"bitvec_from_bool_array"` - `"bitvec_from_provider_bytes"` - `"bitvec_ge"` - `"bitvec_gt"` - `"bitvec_hamming_distance"` - `"bitvec_jaccard_distance"` - `"bitvec_le"` - `"bitvec_lt"` - `"bitvec_ne"` - `"bitvec_or_transition"` - `"bitvec_to_bool_array"` - `"bitvec_typmod_in"` - `"bitvec_typmod_out"` - `"build_jobs"` - `"build_mmap_hnsw_artifact"` - `"bulk_delete_points"` - `"bulk_upsert_points"` - `"cancel_document_chunk_job"` - `"cancel_exact_first_build"` - `"checkpoint_document_chunk_job"` - `"claim_document_chunk_jobs"` - `"claim_exact_first_build"` - `"cleanup_artifact_segments"` - `"cleanup_semantic_rerank_requests"` - `"clear_payload"` - `"collection_aliases"` - `"collection_info"` - `"collection_limits"` - `"collection_sparse_vectors"` - `"collection_vectors"` - `"compact"` - `"compact_ivfflat"` - `"compare_indexes"` - `"configure_collection_limits"` - `"configure_sparse_vector"` - `"configure_vector"` - `"cosine_distance"` - `"count"` - `"create_collection"` - `"create_collection_alias"` - `"create_document_chunk_projection"` - `"create_embedding_migration"` - `"create_fuzzy_index"` - `"create_lexical_index"` - `"current_document_chunks"` - `"cutover_pgvector_ownership_conversion"` - `"delete_payload"` - `"delete_points"` - `"detach_fuzzy_index"` - `"detach_lexical_index"` - `"disable_pgvector_binding"` - `"disable_pgvector_name_facade"` - `"discover"` - `"document_chunking_progress"` - `"drain_chunking_profile_alias"` - `"drop_collection"` - `"drop_collection_alias"` - `"drop_fuzzy_source"` - `"drop_lexical_source"` - `"embedding_migrations"` - `"embedding_profile_coverage"` - `"embedding_profile_explain"` - `"embedding_profiles"` - `"enable_pgvector_binding"` - `"enable_pgvector_name_facade"` - `"encode_artifact_segment"` - `"enqueue_build_job"` - `"enqueue_document_chunking"` - `"enqueue_document_chunking_profile"` - `"enqueue_hnsw_compaction"` - `"enqueue_ivfflat_compaction"` - `"estimate_index_memory"` - `"exact_first_advisor"` - `"exact_first_progress"` - `"exact_first_readiness"` - `"exact_first_search"` - `"execute_query"` - `"explain"` - `"explain_late_interaction"` - `"explain_late_interaction_ann"` - `"explain_sparse"` - `"explore"` - `"facet"` - `"fail_document_chunk_job"` - `"fail_exact_first_build"` - `"fake_process_document_chunk_job"` - `"finalize_pgvector_ownership_conversion"` - `"finalize_semantic_rerank"` - `"fuzzy_sources"` - `"grouped_search"` - `"halfvec"` - `"halfvec_avg_final"` - `"halfvec_cmp"` - `"halfvec_cosine_distance"` - `"halfvec_dims"` - `"halfvec_enforce_typmod"` - `"halfvec_eq"` - `"halfvec_from_double_array"` - `"halfvec_from_integer_array"` - `"halfvec_from_real_array"` - `"halfvec_ge"` - `"halfvec_gt"` - `"halfvec_in"` - `"halfvec_inner_product"` - `"halfvec_l1_distance"` - `"halfvec_l2_distance"` - `"halfvec_le"` - `"halfvec_lt"` - `"halfvec_ne"` - `"halfvec_negative_inner_product"` - `"halfvec_out"` - `"halfvec_sum_final"` - `"halfvec_sum_transition"` - `"halfvec_to_real_array"` - `"halfvec_to_vector"` - `"halfvec_typmod_in"` - `"halfvec_typmod_out"` - `"heartbeat_document_chunk_job"` - `"heartbeat_exact_first_build"` - `"hnsw_build_stats"` - `"hnsw_l2_distance"` - `"hnsw_last_scan_work"` - `"hnsw_segment_stats"` - `"hnsw_serving_stats"` - `"index_advisor"` - `"index_diagnostics"` - `"index_status"` - `"inner_product"` - `"inspect_exact_first_source"` - `"install_document_chunk_trigger"` - `"int8vec"` - `"int8vec_cmp"` - `"int8vec_cosine_distance"` - `"int8vec_dims"` - `"int8vec_enforce_typmod"` - `"int8vec_eq"` - `"int8vec_from_integer_array"` - `"int8vec_from_profile"` - `"int8vec_from_smallint_array"` - `"int8vec_from_vector"` - `"int8vec_ge"` - `"int8vec_gt"` - `"int8vec_inner_product"` - `"int8vec_l1_distance"` - `"int8vec_l2_distance"` - `"int8vec_le"` - `"int8vec_lt"` - `"int8vec_ne"` - `"int8vec_negative_inner_product"` - `"int8vec_sum_transition"` - `"int8vec_to_smallint_array"` - `"int8vec_to_vector"` - `"int8vec_typmod_in"` - `"int8vec_typmod_out"` - `"integer_vector_avg_final"` - `"integer_vector_sum_final"` - `"invalidate_document_chunks"` - `"ivfflat_index_info"` - `"ivfflat_last_scan_work"` - `"l1_distance"` - `"l2_distance"` - `"lexical_headline"` - `"lexical_sources"` - `"migration_report"` - `"negative_inner_product"` - `"optimization_status"` - `"pgvector_compatibility_inventory"` - `"pgvector_ownership_conversions"` - `"prepare_chunking_profile_alias"` - `"prepare_semantic_rerank"` - `"product_quantize"` - `"product_reconstruct"` - `"promote_chunking_profile_alias"` - `"publish_artifact_segment"` - `"publish_artifact_segment_file"` - `"publish_document_chunk_generation"` - `"publish_exact_first_build"` - `"query"` - `"query_cohort_stats"` - `"query_discover"` - `"query_execution_stats"` - `"query_external_rerank"` - `"query_formula"` - `"query_fuzzy"` - `"query_late_interaction"` - `"query_lexical"` - `"query_lookup"` - `"query_multi_model"` - `"query_nearest"` - `"query_prefetch"` - `"query_recommend"` - `"query_rerank"` - `"query_score_threshold"` - `"query_sparse_nearest"` - `"query_telemetry_queue_stats"` - `"query_topology_expand"` - `"query_weight"` - `"rebuild_document_chunk_job"` - `"recall_check"` - `"recommend"` - `"record_query_stat"` - `"refresh_lexical_catalog"` - `"register_chunking_profile"` - `"register_document_source"` - `"register_embedding_profile"` - `"register_exact_first"` - `"register_filter_column"` - `"register_fuzzy_source"` - `"register_jsonb_path"` - `"register_late_interaction"` - `"register_lexical_document_source"` - `"register_lexical_source"` - `"register_lexical_tsquery"` - `"register_semantic_rerank_source"` - `"register_sparse_vector"` - `"register_vector"` - `"repair_late_interaction"` - `"request_build_cancel"` - `"rerank_late_interaction"` - `"rerank_quantized_candidates"` - `"retire_artifact_segment"` - `"retry_build_job"` - `"retry_document_chunk_job"` - `"retry_exact_first_build"` - `"rollback_chunking_profile_alias"` - `"rollback_document_chunk_generation"` - `"rollback_pgvector_ownership_conversion"` - `"run_build_job"` - `"run_pgvector_ownership_conversion"` - `"scalar_quantize"` - `"scalar_reconstruct"` - `"scroll"` - `"search"` - `"search_late_interaction"` - `"search_late_interaction_ann"` - `"search_mmap_hnsw_artifact"` - `"search_sparse"` - `"set_embedding_profile_lifecycle"` - `"set_payload"` - `"sparsevec"` - `"sparsevec_avg_final"` - `"sparsevec_cmp"` - `"sparsevec_cosine_distance"` - `"sparsevec_dims"` - `"sparsevec_enforce_typmod"` - `"sparsevec_eq"` - `"sparsevec_from_arrays"` - `"sparsevec_from_real_array"` - `"sparsevec_from_vector"` - `"sparsevec_ge"` - `"sparsevec_gt"` - `"sparsevec_in"` - `"sparsevec_indices"` - `"sparsevec_inner_product"` - `"sparsevec_l1_distance"` - `"sparsevec_l2_distance"` - `"sparsevec_le"` - `"sparsevec_lt"` - `"sparsevec_ne"` - `"sparsevec_negative_inner_product"` - `"sparsevec_out"` - `"sparsevec_sum_final"` - `"sparsevec_sum_transition"` - `"sparsevec_to_real_array"` - `"sparsevec_to_vector"` - `"sparsevec_typmod_in"` - `"sparsevec_typmod_out"` - `"sparsevec_values"` - `"stage_document_chunks"` - `"start_build_job"` - `"start_pgvector_ownership_conversion"` - `"telemetry"` - `"uint8vec"` - `"uint8vec_cmp"` - `"uint8vec_cosine_distance"` - `"uint8vec_dims"` - `"uint8vec_enforce_typmod"` - `"uint8vec_eq"` - `"uint8vec_from_integer_array"` - `"uint8vec_from_profile"` - `"uint8vec_from_smallint_array"` - `"uint8vec_from_vector"` - `"uint8vec_ge"` - `"uint8vec_gt"` - `"uint8vec_inner_product"` - `"uint8vec_l1_distance"` - `"uint8vec_l2_distance"` - `"uint8vec_le"` - `"uint8vec_lt"` - `"uint8vec_ne"` - `"uint8vec_negative_inner_product"` - `"uint8vec_sum_transition"` - `"uint8vec_to_smallint_array"` - `"uint8vec_to_vector"` - `"uint8vec_typmod_in"` - `"uint8vec_typmod_out"` - `"update_build_job"` - `"update_embedding_migration"` - `"upsert_points"` - `"vacuum_advice"` - `"validate_artifact_segment"` - `"validate_hnsw_graph_artifact"` - `"vector_avg_final"` - `"vector_cmp"` - `"vector_dims"` - `"vector_enforce_typmod"` - `"vector_eq"` - `"vector_from_double_array"` - `"vector_from_integer_array"` - `"vector_from_real_array"` - `"vector_ge"` - `"vector_gt"` - `"vector_in"` - `"vector_le"` - `"vector_lt"` - `"vector_ne"` - `"vector_out"` - `"vector_prefix"` - `"vector_sum_final"` - `"vector_sum_transition"` - `"vector_to_real_array"` - `"vector_typmod_in"` - `"vector_typmod_out"` - `"wake_build_jobs"` - `pgcontext._attach_fuzzy_index` - `pgcontext._attach_lexical_index` - `pgcontext._begin_late_interaction_registration` - `pgcontext._cancel_document_chunk_job` - `pgcontext._capture_build_point_delta` - `pgcontext._capture_late_interaction_tokens` - `pgcontext._checkpoint_document_chunk_job` - `pgcontext._claim_document_chunk_jobs` - `pgcontext._cleanup_late_interaction_registration` - `pgcontext._cleanup_semantic_rerank_requests` - `pgcontext._complete_document_chunk_publication` - `pgcontext._cosine_distance_fast` - `pgcontext._detach_fuzzy_index` - `pgcontext._detach_lexical_index` - `pgcontext._document_chunk_outbox_trigger` - `pgcontext._drain_chunking_profile_alias` - `pgcontext._drop_fuzzy_source` - `pgcontext._drop_lexical_source` - `pgcontext._enforce_build_job_terminal_state` - `pgcontext._enqueue_document_chunk_job` - `pgcontext._fail_document_chunk_job` - `pgcontext._finalize_semantic_rerank_request` - `pgcontext._finish_late_interaction_registration` - `pgcontext._heartbeat_document_chunk_job` - `pgcontext._initialize_collection_source_revision` - `pgcontext._insert_semantic_rerank_request` - `pgcontext._install_document_chunk_outbox_trigger` - `pgcontext._invalidate_document_chunk_aliases` - `pgcontext._l1_distance_fast` - `pgcontext._l2_distance_fast8` - `pgcontext._l2_distance_fast` - `pgcontext._late_interaction_ann_candidate_points` - `pgcontext._load_document_chunk_claim_source` - `pgcontext._load_document_chunk_lease_expiry` - `pgcontext._load_document_chunk_staging` - `pgcontext._lock_document_chunk_job_alias` - `pgcontext._lock_document_chunk_read_alias` - `pgcontext._lock_document_chunk_source` - `pgcontext._mapped_hnsw_sql_drop` - `pgcontext._negative_inner_product_fast` - `pgcontext._pin_generation` - `pgcontext._prepare_chunking_profile_alias` - `pgcontext._prepare_late_interaction_repair` - `pgcontext._promote_chunking_profile_alias` - `pgcontext._publish_generation` - `pgcontext._rebuild_document_chunk_job` - `pgcontext._refresh_collection_source_table` - `pgcontext._refresh_document_chunk_source` - `pgcontext._refresh_lexical_catalog_oids` - `pgcontext._refresh_payload_source_bindings` - `pgcontext._refresh_semantic_rerank_source` - `pgcontext._refresh_sparse_vector_source_binding` - `pgcontext._refresh_vector_source_binding` - `pgcontext._register_chunking_profile` - `pgcontext._register_document_source` - `pgcontext._register_fuzzy_source` - `pgcontext._register_lexical_source` - `pgcontext._register_lexical_tsquery` - `pgcontext._register_semantic_rerank_source` - `pgcontext._reject_build_job_progress_regression` - `pgcontext._reject_embedding_profile_mutation` - `pgcontext._release_document_chunk_claim` - `pgcontext._require_collection_owner` - `pgcontext._retry_document_chunk_job` - `pgcontext._rollback_chunking_profile_alias` - `pgcontext._rollback_document_chunk_generation` - `pgcontext._set_embedding_profile_lifecycle` - `pgcontext._stage_document_chunk_response` - `pgcontext._store_late_interaction_tokens` - `pgcontext._supersede_document_chunk_claim` - `pgcontext._unpin_generation` - `pgcontext.bitvec_out` - `pgcontext.bitvec_send` - `pgcontext.bitvec_typmod_input` - `pgcontext.bitvec_typmod_receive` - `pgcontext.current_vector_config_revision` - `pgcontext.hamming_distance` - `pgcontext.hnsw_handler` - `pgcontext.int8vec_out` - `pgcontext.int8vec_send` - `pgcontext.int8vec_typmod_input` - `pgcontext.int8vec_typmod_receive` - `pgcontext.ivfflat_handler` - `pgcontext.jaccard_distance` - `pgcontext.uint8vec_out` - `pgcontext.uint8vec_send` - `pgcontext.uint8vec_typmod_input` - `pgcontext.uint8vec_typmod_receive` ## Cast Identities - `(bit AS bitvec) WITH INOUT AS ASSIGNMENT;` - `(bit varying AS bitvec) WITH INOUT AS ASSIGNMENT;` - `(bitvec AS bit varying) WITH INOUT AS ASSIGNMENT;` - `(bitvec AS bit) WITH INOUT;` - `(bitvec AS bitvec)` - `(bitvec AS boolean[]) WITH FUNCTION pgcontext.bitvec_to_bool_array(bitvec) AS ASSIGNMENT;` - `(boolean[] AS bitvec) WITH FUNCTION pgcontext.bitvec_from_bool_array(boolean[]) AS ASSIGNMENT;` - `(double precision[] AS halfvec)` - `(double precision[] AS vector)` - `(halfvec AS halfvec)` - `(halfvec AS real[])` - `(halfvec AS vector)` - `(int8vec AS int8vec)` - `(int8vec AS smallint[])` - `(int8vec AS vector)` - `(integer[] AS halfvec)` - `(integer[] AS int8vec)` - `(integer[] AS uint8vec)` - `(integer[] AS vector)` - `(real[] AS halfvec)` - `(real[] AS sparsevec)` - `(real[] AS vector)` - `(smallint[] AS int8vec)` - `(smallint[] AS uint8vec)` - `(sparsevec AS real[])` - `(sparsevec AS sparsevec)` - `(sparsevec AS vector)` - `(uint8vec AS smallint[])` - `(uint8vec AS uint8vec)` - `(uint8vec AS vector)` - `(vector AS int8vec)` - `(vector AS real[])` - `(vector AS sparsevec)` - `(vector AS uint8vec)` - `(vector AS vector)` ## Typed Operator Registry Entries | Entry | Kind | Applies to | Lifecycle | |---|---|---|---| | `vector_ops` | operator class | btree, vector | Stable | | `halfvec_ops` | operator class | btree, halfvec | Experimental | | `sparsevec_ops` | operator class | btree, sparsevec | Experimental | | `bitvec_ops` | operator class | btree, bitvec | Experimental | | `int8vec_ops` | operator class | btree, int8vec | Experimental | | `uint8vec_ops` | operator class | btree, uint8vec | Experimental | | `vector_hnsw_ops` | operator class | pgcontext_hnsw, vector | Experimental | | `vector_hnsw_ip_ops` | operator class | pgcontext_hnsw, vector | Experimental | | `vector_hnsw_cosine_ops` | operator class | pgcontext_hnsw, vector | Experimental | | `vector_hnsw_l1_ops` | operator class | pgcontext_hnsw, vector | Experimental | | `halfvec_hnsw_ops` | operator class | pgcontext_hnsw, halfvec | Stable | | `halfvec_hnsw_ip_ops` | operator class | pgcontext_hnsw, halfvec | Stable | | `halfvec_hnsw_cosine_ops` | operator class | pgcontext_hnsw, halfvec | Stable | | `halfvec_hnsw_l1_ops` | operator class | pgcontext_hnsw, halfvec | Stable | | `sparsevec_hnsw_ops` | operator class | pgcontext_hnsw, sparsevec | Stable | | `sparsevec_hnsw_ip_ops` | operator class | pgcontext_hnsw, sparsevec | Stable | | `sparsevec_hnsw_cosine_ops` | operator class | pgcontext_hnsw, sparsevec | Stable | | `sparsevec_hnsw_l1_ops` | operator class | pgcontext_hnsw, sparsevec | Stable | | `bitvec_hnsw_hamming_ops` | operator class | pgcontext_hnsw, bitvec | Stable | | `bitvec_hnsw_jaccard_ops` | operator class | pgcontext_hnsw, bitvec | Stable | | `int8vec_hnsw_ops` | operator class | pgcontext_hnsw, int8vec | Experimental | | `int8vec_hnsw_ip_ops` | operator class | pgcontext_hnsw, int8vec | Experimental | | `int8vec_hnsw_cosine_ops` | operator class | pgcontext_hnsw, int8vec | Experimental | | `int8vec_hnsw_l1_ops` | operator class | pgcontext_hnsw, int8vec | Experimental | | `uint8vec_hnsw_ops` | operator class | pgcontext_hnsw, uint8vec | Experimental | | `uint8vec_hnsw_ip_ops` | operator class | pgcontext_hnsw, uint8vec | Experimental | | `uint8vec_hnsw_cosine_ops` | operator class | pgcontext_hnsw, uint8vec | Experimental | | `uint8vec_hnsw_l1_ops` | operator class | pgcontext_hnsw, uint8vec | Experimental | | `vector_ivfflat_ops` | operator class | pgcontext_ivfflat, vector | Experimental | | `vector_ivfflat_ip_ops` | operator class | pgcontext_ivfflat, vector | Experimental | | `vector_ivfflat_cosine_ops` | operator class | pgcontext_ivfflat, vector | Experimental | | `vector_ivfflat_l1_ops` | operator class | pgcontext_ivfflat, vector | Experimental | | `halfvec_ivfflat_ops` | operator class | pgcontext_ivfflat, halfvec | Experimental | | `halfvec_ivfflat_ip_ops` | operator class | pgcontext_ivfflat, halfvec | Experimental | | `halfvec_ivfflat_cosine_ops` | operator class | pgcontext_ivfflat, halfvec | Experimental | | `halfvec_ivfflat_l1_ops` | operator class | pgcontext_ivfflat, halfvec | Experimental | | `int8vec_ivfflat_ops` | operator class | pgcontext_ivfflat, int8vec | Experimental | | `int8vec_ivfflat_ip_ops` | operator class | pgcontext_ivfflat, int8vec | Experimental | | `int8vec_ivfflat_cosine_ops` | operator class | pgcontext_ivfflat, int8vec | Experimental | | `int8vec_ivfflat_l1_ops` | operator class | pgcontext_ivfflat, int8vec | Experimental | | `uint8vec_ivfflat_ops` | operator class | pgcontext_ivfflat, uint8vec | Experimental | | `uint8vec_ivfflat_ip_ops` | operator class | pgcontext_ivfflat, uint8vec | Experimental | | `uint8vec_ivfflat_cosine_ops` | operator class | pgcontext_ivfflat, uint8vec | Experimental | | `uint8vec_ivfflat_l1_ops` | operator class | pgcontext_ivfflat, uint8vec | Experimental | | `bitvec_ivfflat_hamming_ops` | operator class | pgcontext_ivfflat, bitvec | Experimental | | `bitvec_ivfflat_jaccard_ops` | operator class | pgcontext_ivfflat, bitvec | Experimental | | `vector_l2_ops` | operator class | pgcontext_hnsw, vector | Stable | | `vector_ip_ops` | operator class | pgcontext_hnsw, vector | Stable | | `vector_cosine_ops` | operator class | pgcontext_hnsw, vector | Stable | | `vector_l1_ops` | operator class | pgcontext_hnsw, vector | Stable | | `halfvec_l2_ops` | operator class | pgcontext_hnsw, halfvec | Stable | | `halfvec_ip_ops` | operator class | pgcontext_hnsw, halfvec | Stable | | `halfvec_cosine_ops` | operator class | pgcontext_hnsw, halfvec | Stable | | `halfvec_l1_ops` | operator class | pgcontext_hnsw, halfvec | Stable | | `sparsevec_l2_ops` | operator class | pgcontext_hnsw, sparsevec | Stable | | `sparsevec_ip_ops` | operator class | pgcontext_hnsw, sparsevec | Stable | | `sparsevec_cosine_ops` | operator class | pgcontext_hnsw, sparsevec | Stable | | `sparsevec_l1_ops` | operator class | pgcontext_hnsw, sparsevec | Stable | | `bit_hamming_ops` | operator class | pgcontext_hnsw, bitvec | Stable | | `bit_jaccard_ops` | operator class | pgcontext_hnsw, bitvec | Stable | | `vector_l2_ops` | operator class | pgcontext_ivfflat, vector | Stable | | `vector_ip_ops` | operator class | pgcontext_ivfflat, vector | Stable | | `vector_cosine_ops` | operator class | pgcontext_ivfflat, vector | Stable | | `vector_l1_ops` | operator class | pgcontext_ivfflat, vector | Stable | | `halfvec_l2_ops` | operator class | pgcontext_ivfflat, halfvec | Stable | | `halfvec_ip_ops` | operator class | pgcontext_ivfflat, halfvec | Stable | | `halfvec_cosine_ops` | operator class | pgcontext_ivfflat, halfvec | Stable | | `halfvec_l1_ops` | operator class | pgcontext_ivfflat, halfvec | Stable | | `bit_hamming_ops` | operator class | pgcontext_ivfflat, bitvec | Stable | | `bit_jaccard_ops` | operator class | pgcontext_ivfflat, bitvec | Stable | | `<->` | operator | vector, vector | Stable | | `<#>` | operator | vector, vector | Stable | | `<=>` | operator | vector, vector | Stable | | `<+>` | operator | vector, vector | Stable | | `<` | operator | vector, vector | Stable | | `<=` | operator | vector, vector | Stable | | `=` | operator | vector, vector | Stable | | `<>` | operator | vector, vector | Stable | | `>=` | operator | vector, vector | Stable | | `>` | operator | vector, vector | Stable | | `<->` | operator | halfvec, halfvec | Experimental | | `<#>` | operator | halfvec, halfvec | Experimental | | `<=>` | operator | halfvec, halfvec | Experimental | | `<+>` | operator | halfvec, halfvec | Experimental | | `<` | operator | halfvec, halfvec | Experimental | | `<=` | operator | halfvec, halfvec | Experimental | | `=` | operator | halfvec, halfvec | Experimental | | `<>` | operator | halfvec, halfvec | Experimental | | `>=` | operator | halfvec, halfvec | Experimental | | `>` | operator | halfvec, halfvec | Experimental | | `<->` | operator | sparsevec, sparsevec | Experimental | | `<#>` | operator | sparsevec, sparsevec | Experimental | | `<=>` | operator | sparsevec, sparsevec | Experimental | | `<+>` | operator | sparsevec, sparsevec | Experimental | | `<` | operator | sparsevec, sparsevec | Experimental | | `<=` | operator | sparsevec, sparsevec | Experimental | | `=` | operator | sparsevec, sparsevec | Experimental | | `<>` | operator | sparsevec, sparsevec | Experimental | | `>=` | operator | sparsevec, sparsevec | Experimental | | `>` | operator | sparsevec, sparsevec | Experimental | | `<` | operator | bitvec, bitvec | Experimental | | `<=` | operator | bitvec, bitvec | Experimental | | `=` | operator | bitvec, bitvec | Experimental | | `<>` | operator | bitvec, bitvec | Experimental | | `>=` | operator | bitvec, bitvec | Experimental | | `>` | operator | bitvec, bitvec | Experimental | | `<~>` | operator | bitvec, bitvec | Experimental | | `<%>` | operator | bitvec, bitvec | Experimental | | `<~>` | operator | bit, bit | Experimental | | `<%>` | operator | bit, bit | Experimental | | `<~>` | operator | bit varying, bit varying | Experimental | | `<%>` | operator | bit varying, bit varying | Experimental | | `<->` | operator | int8vec, int8vec | Experimental | | `<#>` | operator | int8vec, int8vec | Experimental | | `<=>` | operator | int8vec, int8vec | Experimental | | `<+>` | operator | int8vec, int8vec | Experimental | | `<` | operator | int8vec, int8vec | Experimental | | `<=` | operator | int8vec, int8vec | Experimental | | `=` | operator | int8vec, int8vec | Experimental | | `<>` | operator | int8vec, int8vec | Experimental | | `>=` | operator | int8vec, int8vec | Experimental | | `>` | operator | int8vec, int8vec | Experimental | | `<->` | operator | uint8vec, uint8vec | Experimental | | `<#>` | operator | uint8vec, uint8vec | Experimental | | `<=>` | operator | uint8vec, uint8vec | Experimental | | `<+>` | operator | uint8vec, uint8vec | Experimental | | `<` | operator | uint8vec, uint8vec | Experimental | | `<=` | operator | uint8vec, uint8vec | Experimental | | `=` | operator | uint8vec, uint8vec | Experimental | | `<>` | operator | uint8vec, uint8vec | Experimental | | `>=` | operator | uint8vec, uint8vec | Experimental | | `>` | operator | uint8vec, uint8vec | Experimental | ## Aggregate Identities - `pgcontext.avg(halfvec) (` - `pgcontext.avg(int8vec) (` - `pgcontext.avg(sparsevec) (` - `pgcontext.avg(uint8vec) (` - `pgcontext.avg(vector) (` - `pgcontext.bit_and(bitvec) (` - `pgcontext.bit_or(bitvec) (` - `pgcontext.sum(halfvec) (` - `pgcontext.sum(int8vec) (` - `pgcontext.sum(sparsevec) (` - `pgcontext.sum(uint8vec) (` - `pgcontext.sum(vector) (` ## Access Methods And Operator Classes - access method `pgcontext_hnsw` - access method `pgcontext_ivfflat` - operator class `pgcontext.bit_hamming_ops` - operator class `pgcontext.bit_jaccard_ops` - operator class `pgcontext.bitvec_hnsw_hamming_ops` - operator class `pgcontext.bitvec_hnsw_jaccard_ops` - operator class `pgcontext.bitvec_ivfflat_hamming_ops` - operator class `pgcontext.bitvec_ivfflat_jaccard_ops` - operator class `pgcontext.bitvec_ops` - operator class `pgcontext.halfvec_cosine_ops` - operator class `pgcontext.halfvec_hnsw_cosine_ops` - operator class `pgcontext.halfvec_hnsw_ip_ops` - operator class `pgcontext.halfvec_hnsw_l1_ops` - operator class `pgcontext.halfvec_hnsw_ops` - operator class `pgcontext.halfvec_ip_ops` - operator class `pgcontext.halfvec_ivfflat_cosine_ops` - operator class `pgcontext.halfvec_ivfflat_ip_ops` - operator class `pgcontext.halfvec_ivfflat_l1_ops` - operator class `pgcontext.halfvec_ivfflat_ops` - operator class `pgcontext.halfvec_l1_ops` - operator class `pgcontext.halfvec_l2_ops` - operator class `pgcontext.halfvec_ops` - operator class `pgcontext.int8vec_hnsw_cosine_ops` - operator class `pgcontext.int8vec_hnsw_ip_ops` - operator class `pgcontext.int8vec_hnsw_l1_ops` - operator class `pgcontext.int8vec_hnsw_ops` - operator class `pgcontext.int8vec_ivfflat_cosine_ops` - operator class `pgcontext.int8vec_ivfflat_ip_ops` - operator class `pgcontext.int8vec_ivfflat_l1_ops` - operator class `pgcontext.int8vec_ivfflat_ops` - operator class `pgcontext.int8vec_ops` - operator class `pgcontext.sparsevec_cosine_ops` - operator class `pgcontext.sparsevec_hnsw_cosine_ops` - operator class `pgcontext.sparsevec_hnsw_ip_ops` - operator class `pgcontext.sparsevec_hnsw_l1_ops` - operator class `pgcontext.sparsevec_hnsw_ops` - operator class `pgcontext.sparsevec_ip_ops` - operator class `pgcontext.sparsevec_l1_ops` - operator class `pgcontext.sparsevec_l2_ops` - operator class `pgcontext.sparsevec_ops` - operator class `pgcontext.uint8vec_hnsw_cosine_ops` - operator class `pgcontext.uint8vec_hnsw_ip_ops` - operator class `pgcontext.uint8vec_hnsw_l1_ops` - operator class `pgcontext.uint8vec_hnsw_ops` - operator class `pgcontext.uint8vec_ivfflat_cosine_ops` - operator class `pgcontext.uint8vec_ivfflat_ip_ops` - operator class `pgcontext.uint8vec_ivfflat_l1_ops` - operator class `pgcontext.uint8vec_ivfflat_ops` - operator class `pgcontext.uint8vec_ops` - operator class `pgcontext.vector_cosine_ops` - operator class `pgcontext.vector_hnsw_cosine_ops` - operator class `pgcontext.vector_hnsw_ip_ops` - operator class `pgcontext.vector_hnsw_l1_ops` - operator class `pgcontext.vector_hnsw_ops` - operator class `pgcontext.vector_ip_ops` - operator class `pgcontext.vector_ivfflat_cosine_ops` - operator class `pgcontext.vector_ivfflat_ip_ops` - operator class `pgcontext.vector_ivfflat_l1_ops` - operator class `pgcontext.vector_ivfflat_ops` - operator class `pgcontext.vector_l1_ops` - operator class `pgcontext.vector_l2_ops` - operator class `pgcontext.vector_ops` ## `pgcontext_hnsw` Index Reloptions | Option | Accepted shape | Lifecycle | |---|---|---| | `quantization` | `none`, `scalar`, `sq8`, `pq`, or `binary` | Candidate codec; exact source rerank is mandatory | | `scalar_min` | finite lower bound | Experimental | | `scalar_max` | finite upper bound greater than `scalar_min` | Experimental | | `scalar_levels` | integer from 2 through 256 | Experimental | | `pq_subvector_dimensions` | positive divisor of vector dimensions | Experimental | ## `pgcontext_ivfflat` Index Reloptions | Option | Accepted shape | Lifecycle | |---|---|---| | `lists` | integer from 1 through 32768 | Trained centroid-list count | | `quantization` | `none`, `sq8`, or `pq` | Candidate posting codec; exact source rerank is mandatory | | `pq_subvector_dimensions` | positive divisor of vector dimensions | Used when `quantization = pq` | ## HNSW GUCs | Setting | Default | Lifecycle | |---|---:|---| | `pgcontext.hnsw_m` | `16` | Experimental HNSW serving policy | | `pgcontext.hnsw_ef_construction` | `64` | Experimental HNSW build policy | | `pgcontext.hnsw_ef_search` | `32` | Experimental HNSW search policy | | `pgcontext.hnsw_candidate_budget` | `32` | Experimental filtered/iterative policy | | `pgcontext.hnsw_iterative_expansion_limit` | `10000` | Experimental bounded expansion policy | | `pgcontext.hnsw_recall_threshold` | `0.95` | Experimental recall-health policy | ## IVFFlat GUCs | Setting | Default | Lifecycle | |---|---:|---| | `pgcontext.ivfflat_probes` | `1` | Initial centroid-list count | | `pgcontext.ivfflat_max_probes` | `32768` | Maximum lists visited by iterative widening | | `pgcontext.ivfflat_candidate_budget` | `100000` | Hard posting/delta work ceiling | | `pgcontext.ivfflat_iterative_scan` | `off` | `off`, `strict_order`, or `relaxed_order` | | `pgcontext.ivfflat_build_parallel_workers` | `1` | Native PostgreSQL parallel assignment workers, maximum 16 | ## Lexical GUCs | Setting | Default | Lifecycle | |---|---:|---| | `pgcontext.lexical_candidate_budget` | `1000` | Stable bounded lexical/fuzzy index probe allowance, maximum 10000 |