Local models v7

AIDB supports two kinds of local models — both run directly on your Postgres host without requiring an external API:

  • Built-in models — AIDB bundles a default variant of each supported model type and registers them automatically. No configuration is needed to start using them.
  • Custom local models — If you need a different model variant, a fine-tuned model, or a specific local path, you can register a custom version using aidb.create_model().

Built-in models

The following models are available in every AIDB installation without any configuration:

Model nameProviderUse
bertbert_localText embeddings
clipclip_localMultimodal embeddings (text and image)
t5t5_localText-to-text generation
llamallama_instruct_localText-to-text generation
dummydummyTesting and development (returns zeros)

Use them directly by name in any AIDB SQL function or pipeline step configuration:

-- Text embedding with the built-in BERT model
SELECT aidb.encode_text('bert', 'The quick brown fox');

-- Image embedding with the built-in CLIP model
SELECT aidb.encode_image('clip', pg_read_binary_file('/tmp/photo.jpg')::BYTEA);

-- Text generation with the built-in T5 model
SELECT aidb.decode_text('t5', 'Translate to French: Hello, world.');

Custom local models

Use aidb.create_model() to register a custom variant when you need a different model version, a fine-tuned model, or a specific local path:

SELECT aidb.create_model(
    name     => 'my_model',
    provider => '<provider>',
    config   => <config_helper>(...)
);
ParameterTypeDescription
nameTEXTA unique name for this model. Used to reference it in pipelines and SQL functions.
providerTEXTThe model provider. Determines which inference engine AIDB uses.
configJSONBProvider-specific configuration, built with a config helper function.

BERT

Use aidb.bert_config() to specify the HuggingFace model identifier, an optional revision, and an optional local cache directory:

SELECT aidb.create_model(
    'my_bert',
    'bert_local',
    config => aidb.bert_config('sentence-transformers/all-MiniLM-L6-v2')
);
ParameterTypeDefaultDescription
modelTEXTRequiredModel name or path (HuggingFace identifier).
revisionTEXTNULLModel revision or branch.
cache_dirTEXTNULLLocal directory for caching model files.

CLIP

Use aidb.clip_config() to configure a CLIP-based multimodal model for joint text and image embeddings:

SELECT aidb.create_model(
    'my_clip',
    'clip_local',
    config => aidb.clip_config('openai/clip-vit-base-patch32')
);
ParameterTypeDefaultDescription
modelTEXTRequiredModel name or path (HuggingFace identifier).
revisionTEXTNULLModel revision or branch.
cache_dirTEXTNULLLocal directory for caching model files.

T5

Use aidb.t5_config() to configure a T5 text-to-text model. T5 models support tasks like translation, summarization, and question answering depending on the variant:

SELECT aidb.create_model(
    'my_t5',
    't5_local',
    config => aidb.t5_config('google/flan-t5-base')
);
ParameterTypeDefaultDescription
modelTEXTRequiredModel name or path.
model_pathTEXTNULLExplicit local path to model weights (overrides model).
cache_dirTEXTNULLLocal directory for caching model files.

Llama

Use aidb.llama_config() to configure a Llama-family language model for text generation. Llama models support temperature, top-p sampling, context length, and other generation parameters:

SELECT aidb.create_model(
    'my_llama',
    'llama_instruct_local.',
    config => aidb.llama_config(
        'meta-llama/Llama-3.2-3B-Instruct',
        temperature => 0.5
    )
);
ParameterTypeDefaultDescription
modelTEXTRequiredModel name or path.
cache_dirTEXTNULLLocal directory for caching model files.
model_pathTEXTNULLExplicit local path to model weights (overrides model).
temperatureDOUBLE PRECISIONNULLSampling temperature.
top_pDOUBLE PRECISIONNULLNucleus sampling threshold.
seedBIGINTNULLRandom seed for reproducible outputs.
Note

Local model files are downloaded from HuggingFace and cached on first use. The Postgres process must have network access and write access to the cache directory. For air-gapped environments, pre-download the model files and use model_path or cache_dir to point to the local copy.

Using a registered model

Once registered, a model is referenced by its name in any AIDB function. Custom and built-in models are interchangeable:

-- Use a custom BERT model for embedding
SELECT aidb.encode_text('my_bert', 'Hello world');

-- Use a custom BERT model in a pipeline step
SELECT aidb.create_pipeline(
    'my_pipeline',
    ...
    step_1_operation => 'Embed',
    step_1_options   => aidb.knowledge_base_config('my_bert', 'Text'),
    ...
);

See the Pipelines API reference for full parameter details on all config helper functions.

For a list of HuggingFace model variants that have been tested and verified to work with AIDB's local providers, see Support matrix.