{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "#/components/schemas/PartialVectordb", "title": "PartialVectordb", "type": "object", "properties": { "config": { "type": "object", "properties": { "dimensions": { "description": "the desired dimensionality for the vectors", "type": "integer" }, "distance_metric": { "description": "the distance metric to use for vector searches", "type": "string", "enum": [ "cosine", "euclidean" ] }, "pgvector": { "type": "object", "properties": { "database": { "description": "the database of the pgvector database", "type": "string", "default": "kong-pgvector" }, "host": { "description": "the host of the pgvector database", "type": "string", "default": "127.0.0.1" }, "password": { "description": "the password of the pgvector database", "type": "string", "x-encrypted": true, "x-referenceable": true }, "port": { "description": "the port of the pgvector database", "type": "integer", "default": 5432 }, "ssl": { "description": "whether to use ssl for the pgvector database", "type": "boolean", "default": false }, "ssl_cert": { "description": "the path of ssl cert to use for the pgvector database", "type": "string" }, "ssl_cert_key": { "description": "the path of ssl cert key to use for the pgvector database", "type": "string" }, "ssl_required": { "description": "whether ssl is required for the pgvector database", "type": "boolean", "default": false }, "ssl_verify": { "description": "whether to verify ssl for the pgvector database", "type": "boolean", "default": true }, "ssl_version": { "description": "the ssl version to use for the pgvector database", "type": "string", "default": "tlsv1_2", "enum": [ "any", "tlsv1_2", "tlsv1_3" ] }, "timeout": { "description": "the timeout of the pgvector database", "type": "number", "default": 5000 }, "user": { "description": "the user of the pgvector database", "type": "string", "default": "postgres", "x-referenceable": true } } }, "redis": { "type": "object", "properties": { "cloud_authentication": { "description": "Cloud auth related configs for connecting to a Cloud Provider's Redis instance.", "type": "object", "properties": { "auth_provider": { "description": "Auth providers to be used to authenticate to a Cloud Provider's Redis instance.", "type": "string", "enum": [ "aws", "azure", "gcp" ], "x-referenceable": true }, "aws_access_key_id": { "description": "AWS Access Key ID to be used for authentication when `auth_provider` is set to `aws`.", "type": "string", "x-encrypted": true, "x-referenceable": true }, "aws_assume_role_arn": { "description": "The ARN of the IAM role to assume for generating ElastiCache IAM authentication tokens.", "type": "string", "x-encrypted": true, "x-referenceable": true }, "aws_cache_name": { "description": "The name of the AWS Elasticache cluster when `auth_provider` is set to `aws`.", "type": "string", "x-referenceable": true }, "aws_is_serverless": { "description": "This flag specifies whether the cluster is serverless when auth_provider is set to `aws`.", "type": "boolean", "default": true }, "aws_region": { "description": "The region of the AWS ElastiCache cluster when `auth_provider` is set to `aws`.", "type": "string", "x-referenceable": true }, "aws_role_session_name": { "description": "The session name for the temporary credentials when assuming the IAM role.", "type": "string", "x-encrypted": true, "x-referenceable": true }, "aws_secret_access_key": { "description": "AWS Secret Access Key to be used for authentication when `auth_provider` is set to `aws`.", "type": "string", "x-encrypted": true, "x-referenceable": true }, "azure_client_id": { "description": "Azure Client ID to be used for authentication when `auth_provider` is set to `azure`.", "type": "string", "x-encrypted": true, "x-referenceable": true }, "azure_client_secret": { "description": "Azure Client Secret to be used for authentication when `auth_provider` is set to `azure`.", "type": "string", "x-encrypted": true, "x-referenceable": true }, "azure_tenant_id": { "description": "Azure Tenant ID to be used for authentication when `auth_provider` is set to `azure`.", "type": "string", "x-encrypted": true, "x-referenceable": true }, "gcp_service_account_json": { "description": "GCP Service Account JSON to be used for authentication when `auth_provider` is set to `gcp`.", "type": "string", "x-encrypted": true, "x-referenceable": true } } }, "cluster_max_redirections": { "description": "Maximum retry attempts for redirection.", "type": "integer", "default": 5 }, "cluster_nodes": { "description": "Cluster addresses to use for Redis connections when the `redis` strategy is defined. Defining this field implies using a Redis Cluster. The minimum length of the array is 1 element.", "type": "array", "items": { "properties": { "ip": { "description": "A string representing a host name, such as example.com.", "type": "string", "default": "127.0.0.1" }, "port": { "description": "An integer representing a port number between 0 and 65535, inclusive.", "type": "integer", "default": 6379, "maximum": 65535, "minimum": 0 } }, "type": "object" }, "minLength": 1 }, "connect_timeout": { "description": "An integer representing a timeout in milliseconds. Must be between 0 and 2^31-2.", "type": "integer", "default": 2000, "maximum": 2147483646, "minimum": 0 }, "connection_is_proxied": { "description": "If the connection to Redis is proxied (e.g. Envoy), set it `true`. Set the `host` and `port` to point to the proxy address.", "type": "boolean", "default": false }, "database": { "description": "Database to use for the Redis connection when using the `redis` strategy", "type": "integer", "default": 0 }, "host": { "description": "A string representing a host name, such as example.com.", "type": "string", "default": "127.0.0.1", "x-referenceable": true }, "keepalive_backlog": { "description": "Limits the total number of opened connections for a pool. If the connection pool is full, connection queues above the limit go into the backlog queue. If the backlog queue is full, subsequent connect operations fail and return `nil`. Queued operations (subject to set timeouts) resume once the number of connections in the pool is less than `keepalive_pool_size`. If latency is high or throughput is low, try increasing this value. Empirically, this value is larger than `keepalive_pool_size`.", "type": "integer", "maximum": 2147483646, "minimum": 0 }, "keepalive_pool_size": { "description": "The size limit for every cosocket connection pool associated with every remote server, per worker process. If neither `keepalive_pool_size` nor `keepalive_backlog` is specified, no pool is created. If `keepalive_pool_size` isn't specified but `keepalive_backlog` is specified, then the pool uses the default value. Try to increase (e.g. 512) this value if latency is high or throughput is low.", "type": "integer", "default": 256, "maximum": 2147483646, "minimum": 1 }, "password": { "description": "Password to use for Redis connections. If undefined, no AUTH commands are sent to Redis.", "type": "string", "x-encrypted": true, "x-referenceable": true }, "port": { "description": "An integer representing a port number between 0 and 65535, inclusive.", "type": "integer", "default": 6379, "maximum": 65535, "minimum": 0, "x-referenceable": true }, "read_timeout": { "description": "An integer representing a timeout in milliseconds. Must be between 0 and 2^31-2.", "type": "integer", "default": 2000, "maximum": 2147483646, "minimum": 0 }, "send_timeout": { "description": "An integer representing a timeout in milliseconds. Must be between 0 and 2^31-2.", "type": "integer", "default": 2000, "maximum": 2147483646, "minimum": 0 }, "sentinel_master": { "description": "Sentinel master to use for Redis connections. Defining this value implies using Redis Sentinel.", "type": "string" }, "sentinel_nodes": { "description": "Sentinel node addresses to use for Redis connections when the `redis` strategy is defined. Defining this field implies using a Redis Sentinel. The minimum length of the array is 1 element.", "type": "array", "items": { "properties": { "host": { "description": "A string representing a host name, such as example.com.", "type": "string", "default": "127.0.0.1" }, "port": { "description": "An integer representing a port number between 0 and 65535, inclusive.", "type": "integer", "default": 6379, "maximum": 65535, "minimum": 0 } }, "type": "object" }, "minLength": 1 }, "sentinel_password": { "description": "Sentinel password to authenticate with a Redis Sentinel instance. If undefined, no AUTH commands are sent to Redis Sentinels.", "type": "string", "x-encrypted": true, "x-referenceable": true }, "sentinel_role": { "description": "Sentinel role to use for Redis connections when the `redis` strategy is defined. Defining this value implies using Redis Sentinel.", "type": "string", "enum": [ "any", "master", "slave" ] }, "sentinel_username": { "description": "Sentinel username to authenticate with a Redis Sentinel instance. If undefined, ACL authentication won't be performed. This requires Redis v6.2.0+.", "type": "string", "x-referenceable": true }, "server_name": { "description": "A string representing an SNI (server name indication) value for TLS.", "type": "string", "x-referenceable": true }, "ssl": { "description": "If set to true, uses SSL to connect to Redis.", "type": "boolean", "default": false }, "ssl_verify": { "description": "If set to true, verifies the validity of the server SSL certificate. If setting this parameter, also configure `lua_ssl_trusted_certificate` in `kong.conf` to specify the CA (or server) certificate used by your Redis server. You may also need to configure `lua_ssl_verify_depth` accordingly.", "type": "boolean", "default": true }, "username": { "description": "Username to use for Redis connections. If undefined, ACL authentication won't be performed. This requires Redis v6.0.0+. To be compatible with Redis v5.x.y, you can set it to `default`.", "type": "string", "x-referenceable": true } } }, "strategy": { "description": "which vector database driver to use", "type": "string", "enum": [ "pgvector", "redis" ] }, "threshold": { "description": "the default similarity threshold for accepting semantic search results (float). Higher threshold means more results are considered similar.", "type": "number" } }, "required": [ "dimensions", "distance_metric", "strategy" ] }, "created_at": { "description": "Unix epoch when the resource was created.", "type": "integer", "nullable": true }, "id": { "description": "A string representing a UUID (universally unique identifier).", "type": "string", "nullable": true }, "name": { "description": "A unique string representing a UTF-8 encoded name.", "type": "string", "nullable": true }, "tags": { "description": "A set of strings representing tags.", "type": "array", "items": { "description": "A string representing a tag.", "type": "string" }, "nullable": true }, "type": { "type": "string", "const": "vectordb", "x-terraform-transform-const": true }, "updated_at": { "description": "Unix epoch when the resource was last updated.", "type": "integer", "nullable": true } }, "example": { "config": { "dimensions": 1536, "distance_metric": "cosine", "pgvector": { "database": "kong-pgvector", "host": "127.0.0.1", "password": "password", "port": 5432, "user": "postgres" }, "strategy": "pgvector" }, "type": "vectordb" }, "additionalProperties": false, "required": [ "type", "config" ] }