External model connections#
External models are API-based models hosted outside your Postgres
instance. AIDB connects to them by registering a model with
aidb.create_model() , supplying the provider name, a configuration
object, and credentials such as an API key, if required.
Once registered, an external model is used exactly like a built-in local model — by name in any AIDB SQL function or pipeline step.
OpenAI-compatible endpoints#
AIDB supports any embedding or chat/completions service that implements the OpenAI API. This includes OpenAI itself, self-hosted servers like Ollama , and any other compliant endpoint.
Embeddings#
Use the openai_embeddings provider with aidb.embeddings_config()
. Override the url parameter to redirect requests to any
OpenAI-compatible server:
- - OpenAI
SELECT aidb.create_model(
my_openai_embedder,
openai_embeddings,
config => aidb.embeddings_config(
model => text-embedding-3-small,
api_key => sk-...,
url => https://api.openai.com/v1
)
);
- - Local Ollama server
SELECT aidb.create_model(
my_ollama_embedder,
openai_embeddings,
config => aidb.embeddings_config(
model => llama3.2,
url => http://llama.local:11434/v1/embeddings
)
);
Parameter |
Type |
Default |
Description |
|---|---|---|---|
model |
TEXT |
Required |
Model identifier as expected by the API. |
api_key |
TEXT |
NULL |
API key for authentication. |
url |
TEXT |
NULL |
API endpoint URL. Defaults to OpenAI's endpoint. |
basic_auth |
TEXT |
NULL |
Basic auth credentials (user:password). |
max_concurrent_requests |
INTEGER |
NULL |
Maximum concurrent requests to the endpoint. |
max_batch_size |
INTEGER |
NULL |
Maximum number of inputs per batch request. |
input_type |
TEXT |
NULL |
Input type hint for encoding (provider-specific). |
input_type_query |
TEXT |
NULL |
Input type hint for query encoding (provider-specific). |
is_hcp_model |
BOOLEAN |
NULL |
Set to true if referencing a model running on HCP. |
Chat completions#
Use the openai_completions provider with
aidb.completions_config() . The url parameter works the same way
— omit it for OpenAI, or override it for any other compliant server:
SELECT aidb.create_model(
my_openai_llm,
openai_completions,
config => aidb.completions_config(
model => gpt-4o,
api_key => sk-...,
temperature => 0.2
)
);
Parameter |
Type |
Default |
Description |
|---|---|---|---|
model |
TEXT |
Required |
Model identifier. |
api_key |
TEXT |
NULL |
API key for authentication. |
url |
TEXT |
NULL |
API endpoint URL. Defaults to OpenAI's endpoint. |
basic_auth |
TEXT |
NULL |
Basic auth credentials (user:password). |
temperature |
DOUBLE PRECISION |
NULL |
Sampling temperature. |
top_p |
DOUBLE PRECISION |
NULL |
Nucleus sampling threshold. |
seed |
BIGINT |
NULL |
Random seed for reproducible outputs. |
system_prompt |
TEXT |
NULL |
Default system prompt prepended to every request. |
max_tokens |
JSONB |
NULL |
Max tokens config (from aidb.max_tokens_config()). |
thinking |
BOOLEAN |
NULL |
Enable extended reasoning (supported models only). |
max_concurrent_requests |
INTEGER |
NULL |
Maximum concurrent requests to the endpoint. |
extra_args |
JSONB |
NULL |
Additional provider-specific arguments. |
is_hcp_model |
BOOLEAN |
NULL |
Set to true if referencing a model running on HCP. |
!!!Note When using pgvector indexing, be aware that
pgvector limits indexed vectors to 2000 dimensions . If
the model you choose produces more dimensions, use
aidb.vector_index_disabled_config() in your pipeline step and manage
the index manually.
NVIDIA NIM#
AIDB supports NVIDIA NIM microservices hosted on build.nvidia.com as well as NIM instances running in your own environment.
Text generation (NIM completions)#
Use the nim_completions provider with the model identifier and your
NIM API key:
SELECT aidb.create_model(
my_nim_llm,
nim_completions,
{"model": "meta/llama-3.3-70b-instruct"}::JSONB,
{"api_key": "<NIM API KEY>"}::JSONB
);
To use a NIM instance running in your own environment, add a url key
to the config pointing at your NIM endpoint.
After registering, run the model with aidb.decode_text() :
SELECT aidb.decode_text(my_nim_llm, Tell me a short, one sentence story);
__OUTPUT__
decode_text
- ---------------------------------------------------------------------------------
As the clock struck midnight, a single tear fell from the porcelain dolls eye.
(1 row)
Multimodal embeddings (NIM CLIP)#
Use the nim_clip provider with aidb.nim_clip_config() for joint
text and image embeddings:
SELECT aidb.create_model(
my_nim_clip,
nim_clip,
config => aidb.nim_clip_config(
api_key => nvapi-...,
model => nvidia/nvclip
)
);
aidb.nim_clip_config() parameters:
Parameter |
Type |
Default |
Description |
|---|---|---|---|
api_key |
TEXT |
NULL |
API key for NIM authentication. |
model |
TEXT |
NULL |
NIM CLIP model identifier. |
url |
TEXT |
NULL |
NIM endpoint URL override. |
basic_auth |
TEXT |
NULL |
Basic auth credentials. |
is_hcp_model |
BOOLEAN |
NULL |
Set to true if the model is running on HCP. |
OCR (NIM OCR)#
Use the nim_ocr provider with aidb.nim_ocr_config() to extract
text from images:
SELECT aidb.create_model(
my_nim_ocr,
nim_paddle_ocr.,
config => aidb.nim_ocr_config(api_key => nvapi-...)
);
aidb.nim_ocr_config() parameters:
Parameter |
Type |
Default |
Description |
|---|---|---|---|
api_key |
TEXT |
NULL |
API key for NIM authentication. |
model |
TEXT |
NULL |
NIM OCR model identifier. |
url |
TEXT |
NULL |
NIM endpoint URL override. |
basic_auth |
TEXT |
NULL |
Basic auth credentials. |
is_hcp_model |
BOOLEAN |
NULL |
Set to true if the model is running on HCP. |
Reranking (NIM reranking)#
Use the nim_reranking provider with aidb.nim_reranking_config()
to re-score search results by relevance. See Text reranking for usage
with aidb.rerank_text() :
SELECT aidb.create_model(
my_reranker,
nim_reranking,
config => aidb.nim_reranking_config(
api_key => nvapi-...,
model => nvidia/nv-rerankqa-mistral-4b-v3
)
);
aidb.nim_reranking_config() parameters:
Parameter |
Type |
Default |
Description |
|---|---|---|---|
api_key |
TEXT |
NULL |
API key for NIM authentication. |
model |
TEXT |
NULL |
NIM reranking model identifier. |
url |
TEXT |
NULL |
NIM endpoint URL override. |
basic_auth |
TEXT |
NULL |
Basic auth credentials. |
is_hcp_model |
BOOLEAN |
NULL |
Set to true if the model is running on HCP. |
To get a NIM API key, create an account at build.nvidia.com , select a model, and generate a key from the model’s page.
Google Gemini#
Use the gemini provider with aidb.gemini_config() . Pass your
Google API key as the first argument:
SELECT aidb.create_model(
my_gemini,
gemini,
config => aidb.gemini_config(
AIza...,
model => gemini-2.0-flash
)
);
aidb.gemini_config() parameters:
Parameter |
Type |
Default |
Description |
|---|---|---|---|
api_key |
TEXT |
Required |
Google API key. |
model |
TEXT |
NULL |
Gemini model identifier (for example, gemini-2.0-flash). |
url |
TEXT |
NULL |
API endpoint URL override. |
max_concurrent_requests |
INTEGER |
NULL |
Maximum concurrent requests to the API. |
thinking_budget |
INTEGER |
NULL |
Extended thinking token budget (Gemini 2.x models only). |
OpenRouter#
OpenRouter provides a unified API gateway to 200+ models from multiple providers. AIDB supports both chat completions and embeddings via OpenRouter.
Chat completions#
SELECT aidb.create_model(
my_or_chat,
openrouter_chat,
config => aidb.openrouter_chat_config(
anthropic/claude-3-5-haiku,
api_key => sk-or-...
)
);
aidb.openrouter_chat_config() parameters:
Parameter |
Type |
Default |
Description |
|---|---|---|---|
model |
TEXT |
Required |
OpenRouter model identifier. |
api_key |
TEXT |
NULL |
OpenRouter API key. |
url |
TEXT |
NULL |
API endpoint URL override. |
max_concurrent_requests |
INTEGER |
NULL |
Maximum concurrent requests. |
max_tokens |
JSONB |
NULL |
Max tokens config (from aidb.max_tokens_config()). |
Embeddings#
SELECT aidb.create_model(
my_or_embedder,
openrouter_embeddings,
config => aidb.openrouter_embeddings_config(
mistral/mistral-embed,
api_key => sk-or-...
)
);
aidb.openrouter_embeddings_config() parameters:
Parameter |
Type |
Default |
Description |
|---|---|---|---|
model |
TEXT |
Required |
OpenRouter embeddings model identifier. |
api_key |
TEXT |
NULL |
OpenRouter API key. |
url |
TEXT |
NULL |
API endpoint URL override. |
max_concurrent_requests |
INTEGER |
NULL |
Maximum concurrent requests. |
max_batch_size |
INTEGER |
NULL |
Maximum inputs per batch request. |
See the Pipelines API reference for full parameter details on all config helper functions.