diff --git a/docs/config.html b/docs/config.html index fd0ef2f46..6a8adef9e 100644 --- a/docs/config.html +++ b/docs/config.html @@ -602,6 +602,11 @@

Configuration

Deployment environment name (e.g., ‘development’, ‘staging’, ‘production’). Used in telemetry events. + + solr + + Configuration for Solr vector search operations. +

ConversationHistoryConfiguration

@@ -1406,6 +1411,39 @@

ServiceConfiguration

+

SolrConfiguration

+

Solr configuration for vector search queries.

+

Controls whether to use offline or online mode when building document +URLs from vector search results, and enables/disables Solr vector IO +functionality.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
enabledbooleanWhen True, enables Solr vector IO functionality for vector search +queries. When False, disables Solr vector search processing.
offlinebooleanWhen True, use parent_id for chunk source URLs. When False, use +reference_url for chunk source URLs.

SplunkConfiguration

Splunk HEC (HTTP Event Collector) configuration.

Splunk HEC allows sending events directly to Splunk over HTTP/HTTPS. diff --git a/docs/config.json b/docs/config.json index a392b3890..9cbee64a7 100644 --- a/docs/config.json +++ b/docs/config.json @@ -466,6 +466,19 @@ "description": "Deployment environment name (e.g., 'development', 'staging', 'production'). Used in telemetry events.", "title": "Deployment environment", "type": "string" + }, + "solr": { + "anyOf": [ + { + "$ref": "#/components/schemas/SolrConfiguration" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Configuration for Solr vector search operations.", + "title": "Solr configuration" } }, "required": [ @@ -1169,6 +1182,26 @@ "title": "ServiceConfiguration", "type": "object" }, + "SolrConfiguration": { + "additionalProperties": false, + "description": "Solr configuration for vector search queries.\n\nControls whether to use offline or online mode when building document URLs\nfrom vector search results, and enables/disables Solr vector IO functionality.", + "properties": { + "enabled": { + "default": false, + "description": "When True, enables Solr vector IO functionality for vector search queries. When False, disables Solr vector search processing.", + "title": "Solr enabled", + "type": "boolean" + }, + "offline": { + "default": true, + "description": "When True, use parent_id for chunk source URLs. When False, use reference_url for chunk source URLs.", + "title": "Offline mode", + "type": "boolean" + } + }, + "title": "SolrConfiguration", + "type": "object" + }, "SplunkConfiguration": { "additionalProperties": false, "description": "Splunk HEC (HTTP Event Collector) configuration.\n\nSplunk HEC allows sending events directly to Splunk over HTTP/HTTPS.\nThis configuration is used to send telemetry events for inference\nrequests to the corporate Splunk deployment.\n\nUseful resources:\n\n - [Splunk HEC Docs](https://docs.splunk.com/Documentation/SplunkCloud)\n - [About HEC](https://docs.splunk.com/Documentation/Splunk/latest/Data)", diff --git a/docs/config.md b/docs/config.md index 7aaba0e39..fd53c8478 100644 --- a/docs/config.md +++ b/docs/config.md @@ -170,6 +170,7 @@ Global service configuration. | azure_entra_id | | | | splunk | | Splunk HEC configuration for sending telemetry events. | | deployment_environment | string | Deployment environment name (e.g., 'development', 'staging', 'production'). Used in telemetry events. | +| solr | | Configuration for Solr vector search operations. | ## ConversationHistoryConfiguration @@ -517,6 +518,21 @@ the service can handle requests concurrently. | cors | | Cross-Origin Resource Sharing configuration for cross-domain requests | +## SolrConfiguration + + +Solr configuration for vector search queries. + +Controls whether to use offline or online mode when building document URLs +from vector search results, and enables/disables Solr vector IO functionality. + + +| Field | Type | Description | +|-------|------|-------------| +| enabled | boolean | When True, enables Solr vector IO functionality for vector search queries. When False, disables Solr vector search processing. | +| offline | boolean | When True, use parent_id for chunk source URLs. When False, use reference_url for chunk source URLs. | + + ## SplunkConfiguration diff --git a/docs/config.png b/docs/config.png index 503a4cb81..04ab7f2b7 100644 Binary files a/docs/config.png and b/docs/config.png differ diff --git a/docs/config.puml b/docs/config.puml index ad6693501..651a3146d 100644 --- a/docs/config.puml +++ b/docs/config.puml @@ -71,6 +71,7 @@ class "Configuration" as src.models.config.Configuration { name : str quota_handlers service + solr : Optional[SolrConfiguration] splunk : Optional[SplunkConfiguration] user_data_collection dump(filename: str | Path) -> None @@ -201,9 +202,15 @@ class "ServiceConfiguration" as src.models.config.ServiceConfiguration { cors host : str port + root_path : str tls_config workers check_service_configuration() -> Self + validate_root_path(value: str) -> str +} +class "SolrConfiguration" as src.models.config.SolrConfiguration { + enabled : bool + offline : bool } class "SplunkConfiguration" as src.models.config.SplunkConfiguration { enabled : bool @@ -254,6 +261,7 @@ src.models.config.QuotaSchedulerConfiguration --|> src.models.config.Configurati src.models.config.RHIdentityConfiguration --|> src.models.config.ConfigurationBase src.models.config.SQLiteDatabaseConfiguration --|> src.models.config.ConfigurationBase src.models.config.ServiceConfiguration --|> src.models.config.ConfigurationBase +src.models.config.SolrConfiguration --|> src.models.config.ConfigurationBase src.models.config.SplunkConfiguration --|> src.models.config.ConfigurationBase src.models.config.TLSConfiguration --|> src.models.config.ConfigurationBase src.models.config.UserDataCollection --|> src.models.config.ConfigurationBase diff --git a/docs/config.svg b/docs/config.svg index 0013960ee..f6dfe7c91 100644 --- a/docs/config.svg +++ b/docs/config.svg @@ -1,707 +1,726 @@ - + - - - - A2AStateConfiguration - - config - postgres : Optional[PostgreSQLDatabaseConfiguration] - sqlite : Optional[SQLiteDatabaseConfiguration] - storage_type - - check_a2a_state_configuration() -> Self + + + + A2AStateConfiguration + + config + postgres : Optional[PostgreSQLDatabaseConfiguration] + sqlite : Optional[SQLiteDatabaseConfiguration] + storage_type + + check_a2a_state_configuration() -> Self - - - - APIKeyTokenConfiguration - - api_key - + + + + APIKeyTokenConfiguration + + api_key + - - - - AccessRule - - actions : list[Action] - role : str - + + + + AccessRule + + actions : list[Action] + role : str + - - - - Action - - name - + + + + Action + + name + - - - - AuthenticationConfiguration - - api_key_config : Optional[APIKeyTokenConfiguration] - api_key_configuration - jwk_config : Optional[JwkConfiguration] - jwk_configuration - k8s_ca_cert_path : Optional[FilePath] - k8s_cluster_api : Optional[AnyHttpUrl] - module : str - rh_identity_config : Optional[RHIdentityConfiguration] - rh_identity_configuration - skip_for_health_probes : bool - skip_tls_verification : bool - - check_authentication_model() -> Self + + + + AuthenticationConfiguration + + api_key_config : Optional[APIKeyTokenConfiguration] + api_key_configuration + jwk_config : Optional[JwkConfiguration] + jwk_configuration + k8s_ca_cert_path : Optional[FilePath] + k8s_cluster_api : Optional[AnyHttpUrl] + module : str + rh_identity_config : Optional[RHIdentityConfiguration] + rh_identity_configuration + skip_for_health_probes : bool + skip_tls_verification : bool + + check_authentication_model() -> Self - - - - AuthorizationConfiguration - - access_rules : list[AccessRule] - + + + + AuthorizationConfiguration + + access_rules : list[AccessRule] + - - - - AzureEntraIdConfiguration - - client_id - client_secret - scope : str - tenant_id - + + + + AzureEntraIdConfiguration + + client_id + client_secret + scope : str + tenant_id + - - - - ByokRag - - db_path - embedding_dimension - embedding_model : str - rag_id : str - rag_type : str - vector_db_id : str - + + + + ByokRag + + db_path + embedding_dimension + embedding_model : str + rag_id : str + rag_type : str + vector_db_id : str + - - - - CORSConfiguration - - allow_credentials : bool - allow_headers : list[str] - allow_methods : list[str] - allow_origins : list[str] - - check_cors_configuration() -> Self + + + + CORSConfiguration + + allow_credentials : bool + allow_headers : list[str] + allow_methods : list[str] + allow_origins : list[str] + + check_cors_configuration() -> Self - - - - Configuration - - a2a_state - authentication - authorization : Optional[AuthorizationConfiguration] - azure_entra_id : Optional[AzureEntraIdConfiguration] - byok_rag : list[ByokRag] - conversation_cache - customization : Optional[Customization] - database - deployment_environment : str - inference - llama_stack - mcp_servers : list[ModelContextProtocolServer] - name : str - quota_handlers - service - splunk : Optional[SplunkConfiguration] - user_data_collection - - dump(filename: str | Path) -> None - validate_mcp_auth_headers() -> Self + + + + Configuration + + a2a_state + authentication + authorization : Optional[AuthorizationConfiguration] + azure_entra_id : Optional[AzureEntraIdConfiguration] + byok_rag : list[ByokRag] + conversation_cache + customization : Optional[Customization] + database + deployment_environment : str + inference + llama_stack + mcp_servers : list[ModelContextProtocolServer] + name : str + quota_handlers + service + solr : Optional[SolrConfiguration] + splunk : Optional[SplunkConfiguration] + user_data_collection + + dump(filename: str | Path) -> None + validate_mcp_auth_headers() -> Self - - - - ConfigurationBase - - model_config - + + + + ConfigurationBase + + model_config + - - - - ConversationHistoryConfiguration - - memory : Optional[InMemoryCacheConfig] - postgres : Optional[PostgreSQLDatabaseConfiguration] - sqlite : Optional[SQLiteDatabaseConfiguration] - type : Optional[Literal['noop', 'memory', 'sqlite', 'postgres']] - - check_cache_configuration() -> Self + + + + ConversationHistoryConfiguration + + memory : Optional[InMemoryCacheConfig] + postgres : Optional[PostgreSQLDatabaseConfiguration] + sqlite : Optional[SQLiteDatabaseConfiguration] + type : Optional[Literal['noop', 'memory', 'sqlite', 'postgres']] + + check_cache_configuration() -> Self - - - - CustomProfile - - path : str - prompts : dict[str, str] - - get_prompts() -> dict[str, str] + + + + CustomProfile + + path : str + prompts : dict[str, str] + + get_prompts() -> dict[str, str] - - - - Customization - - agent_card_config : Optional[dict[str, Any]] - agent_card_path : Optional[FilePath] - custom_profile : Optional[CustomProfile] - disable_query_system_prompt : bool - profile_path : Optional[str] - system_prompt : Optional[str] - system_prompt_path : Optional[FilePath] - - check_customization_model() -> Self + + + + Customization + + agent_card_config : Optional[dict[str, Any]] + agent_card_path : Optional[FilePath] + custom_profile : Optional[CustomProfile] + disable_query_system_prompt : bool + profile_path : Optional[str] + system_prompt : Optional[str] + system_prompt_path : Optional[FilePath] + + check_customization_model() -> Self - - - - DatabaseConfiguration - - config - db_type - postgres : Optional[PostgreSQLDatabaseConfiguration] - sqlite : Optional[SQLiteDatabaseConfiguration] - - check_database_configuration() -> Self + + + + DatabaseConfiguration + + config + db_type + postgres : Optional[PostgreSQLDatabaseConfiguration] + sqlite : Optional[SQLiteDatabaseConfiguration] + + check_database_configuration() -> Self - - - - InMemoryCacheConfig - - max_entries - + + + + InMemoryCacheConfig + + max_entries + - - - - InferenceConfiguration - - default_model : Optional[str] - default_provider : Optional[str] - - check_default_model_and_provider() -> Self + + + + InferenceConfiguration + + default_model : Optional[str] + default_provider : Optional[str] + + check_default_model_and_provider() -> Self - - - - JsonPathOperator - - name - + + + + JsonPathOperator + + name + - - - - JwkConfiguration - - jwt_configuration - url - + + + + JwkConfiguration + + jwt_configuration + url + - - - - JwtConfiguration - - role_rules : list[JwtRoleRule] - user_id_claim : str - username_claim : str - + + + + JwtConfiguration + + role_rules : list[JwtRoleRule] + user_id_claim : str + username_claim : str + - - - - JwtRoleRule - - compiled_regex - jsonpath : str - negate : bool - operator - roles : list[str] - value : Any - - check_jsonpath() -> Self - check_regex_pattern() -> Self - check_roles() -> Self + + + + JwtRoleRule + + compiled_regex + jsonpath : str + negate : bool + operator + roles : list[str] + value : Any + + check_jsonpath() -> Self + check_regex_pattern() -> Self + check_roles() -> Self - - - - LlamaStackConfiguration - - api_key : Optional[SecretStr] - library_client_config_path : Optional[str] - timeout - url : Optional[AnyHttpUrl] - use_as_library_client : Optional[bool] - - check_llama_stack_model() -> Self + + + + LlamaStackConfiguration + + api_key : Optional[SecretStr] + library_client_config_path : Optional[str] + timeout + url : Optional[AnyHttpUrl] + use_as_library_client : Optional[bool] + + check_llama_stack_model() -> Self - - - - ModelContextProtocolServer - - authorization_headers : dict[str, str] - name : str - provider_id : str - resolved_authorization_headers - timeout : Optional[PositiveInt] - url : str - - resolve_auth_headers() -> Self + + + + ModelContextProtocolServer + + authorization_headers : dict[str, str] + name : str + provider_id : str + resolved_authorization_headers + timeout : Optional[PositiveInt] + url : str + + resolve_auth_headers() -> Self - - - - PostgreSQLDatabaseConfiguration - - ca_cert_path : Optional[FilePath] - db : str - gss_encmode : str - host : str - namespace : Optional[str] - password - port - ssl_mode : str - user : str - - check_postgres_configuration() -> Self + + + + PostgreSQLDatabaseConfiguration + + ca_cert_path : Optional[FilePath] + db : str + gss_encmode : str + host : str + namespace : Optional[str] + password + port + ssl_mode : str + user : str + + check_postgres_configuration() -> Self - - - - QuotaHandlersConfiguration - - enable_token_history : bool - limiters : list[QuotaLimiterConfiguration] - postgres : Optional[PostgreSQLDatabaseConfiguration] - scheduler - sqlite : Optional[SQLiteDatabaseConfiguration] - + + + + QuotaHandlersConfiguration + + enable_token_history : bool + limiters : list[QuotaLimiterConfiguration] + postgres : Optional[PostgreSQLDatabaseConfiguration] + scheduler + sqlite : Optional[SQLiteDatabaseConfiguration] + - - - - QuotaLimiterConfiguration - - initial_quota - name : str - period : str - quota_increase - type : Literal['user_limiter', 'cluster_limiter'] - + + + + QuotaLimiterConfiguration + + initial_quota + name : str + period : str + quota_increase + type : Literal['user_limiter', 'cluster_limiter'] + - - - - QuotaSchedulerConfiguration - - database_reconnection_count - database_reconnection_delay - period - + + + + QuotaSchedulerConfiguration + + database_reconnection_count + database_reconnection_delay + period + - - - - RHIdentityConfiguration - - required_entitlements : Optional[list[str]] - + + + + RHIdentityConfiguration + + required_entitlements : Optional[list[str]] + - - - - SQLiteDatabaseConfiguration - - db_path : str - + + + + SQLiteDatabaseConfiguration + + db_path : str + - - - - ServiceConfiguration - - access_log : bool - auth_enabled : bool - base_url : Optional[str] - color_log : bool - cors - host : str - port - tls_config - workers - - check_service_configuration() -> Self + + + + ServiceConfiguration + + access_log : bool + auth_enabled : bool + base_url : Optional[str] + color_log : bool + cors + host : str + port + root_path : str + tls_config + workers + + check_service_configuration() -> Self + validate_root_path(value: str) -> str + + + + + + + SolrConfiguration + + enabled : bool + offline : bool + - - - - SplunkConfiguration - - enabled : bool - index : Optional[str] - source : str - timeout - token_path : Optional[FilePath] - url : Optional[str] - verify_ssl : bool - - check_splunk_configuration() -> Self + + + + SplunkConfiguration + + enabled : bool + index : Optional[str] + source : str + timeout + token_path : Optional[FilePath] + url : Optional[str] + verify_ssl : bool + + check_splunk_configuration() -> Self - - - - TLSConfiguration - - tls_certificate_path : Optional[FilePath] - tls_key_password : Optional[FilePath] - tls_key_path : Optional[FilePath] - - check_tls_configuration() -> Self + + + + TLSConfiguration + + tls_certificate_path : Optional[FilePath] + tls_key_password : Optional[FilePath] + tls_key_path : Optional[FilePath] + + check_tls_configuration() -> Self - - - - UserDataCollection - - feedback_enabled : bool - feedback_storage : Optional[str] - transcripts_enabled : bool - transcripts_storage : Optional[str] - - check_storage_location_is_set_when_needed() -> Self + + + + UserDataCollection + + feedback_enabled : bool + feedback_storage : Optional[str] + transcripts_enabled : bool + transcripts_storage : Optional[str] + + check_storage_location_is_set_when_needed() -> Self - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + + - - + + - - + + - - + + - - - a2a_state + + + a2a_state - - - authentication + + + authentication - - - cors + + + cors - - - conversation_cache + + + conversation_cache - - - custom_profile + + + custom_profile - - - database + + + database - - - inference + + + inference - - - operator + + + operator - - - jwt_configuration + + + jwt_configuration - - - llama_stack + + + llama_stack - - - quota_handlers + + + quota_handlers - - - scheduler + + + scheduler - - - sqlite + + + sqlite - - - service + + + service - - - tls_config + + + tls_config - - - user_data_collection + + + user_data_collection - + diff --git a/docs/openapi.json b/docs/openapi.json index d49f10ffe..24411c4b5 100644 --- a/docs/openapi.json +++ b/docs/openapi.json @@ -1487,26 +1487,6 @@ } } }, - "413": { - "description": "Prompt is too long", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PromptTooLongResponse" - }, - "examples": { - "prompt too long": { - "value": { - "detail": { - "cause": "The prompt exceeds the maximum allowed length.", - "response": "Prompt is too long" - } - } - } - } - } - } - }, "422": { "description": "Request validation failed", "content": { @@ -1785,26 +1765,6 @@ } } }, - "413": { - "description": "Prompt is too long", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PromptTooLongResponse" - }, - "examples": { - "prompt too long": { - "value": { - "detail": { - "cause": "The prompt exceeds the maximum allowed length.", - "response": "Prompt is too long" - } - } - } - } - } - } - }, "422": { "description": "Request validation failed", "content": { @@ -5618,6 +5578,18 @@ "title": "Deployment environment", "description": "Deployment environment name (e.g., 'development', 'staging', 'production'). Used in telemetry events.", "default": "development" + }, + "solr": { + "anyOf": [ + { + "$ref": "#/components/schemas/SolrConfiguration" + }, + { + "type": "null" + } + ], + "title": "Solr configuration", + "description": "Configuration for Solr vector search operations." } }, "additionalProperties": false, @@ -7593,33 +7565,6 @@ "title": "PostgreSQLDatabaseConfiguration", "description": "PostgreSQL database configuration.\n\nPostgreSQL database is used by Lightspeed Core Stack service for storing\ninformation about conversation IDs. It can also be leveraged to store\nconversation history and information about quota usage.\n\nUseful resources:\n\n- [Psycopg: connection classes](https://www.psycopg.org/psycopg3/docs/api/connections.html)\n- [PostgreSQL connection strings](https://www.connectionstrings.com/postgresql/)\n- [How to Use PostgreSQL in Python](https://www.freecodecamp.org/news/postgresql-in-python/)" }, - "PromptTooLongResponse": { - "properties": { - "status_code": { - "type": "integer", - "title": "Status Code" - }, - "detail": { - "$ref": "#/components/schemas/DetailModel" - } - }, - "type": "object", - "required": [ - "status_code", - "detail" - ], - "title": "PromptTooLongResponse", - "description": "413 Payload Too Large - Prompt is too long.", - "examples": [ - { - "detail": { - "cause": "The prompt exceeds the maximum allowed length.", - "response": "Prompt is too long" - }, - "label": "prompt too long" - } - ] - }, "ProviderHealthStatus": { "properties": { "provider_id": { @@ -7974,6 +7919,27 @@ "knowledge_base", "vector_db_1" ] + }, + "solr": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Solr", + "description": "Solr-specific query parameters including filter queries", + "examples": [ + { + "fq": [ + "product:*openshift*", + "product_version:*4.16*" + ] + } + ] } }, "additionalProperties": false, @@ -9058,6 +9024,26 @@ } ] }, + "SolrConfiguration": { + "properties": { + "enabled": { + "type": "boolean", + "title": "Solr enabled", + "description": "When True, enables Solr vector IO functionality for vector search queries. When False, disables Solr vector search processing.", + "default": false + }, + "offline": { + "type": "boolean", + "title": "Offline mode", + "description": "When True, use parent_id for chunk source URLs. When False, use reference_url for chunk source URLs.", + "default": true + } + }, + "additionalProperties": false, + "type": "object", + "title": "SolrConfiguration", + "description": "Solr configuration for vector search queries.\n\nControls whether to use offline or online mode when building document URLs\nfrom vector search results, and enables/disables Solr vector IO functionality." + }, "SplunkConfiguration": { "properties": { "enabled": { diff --git a/docs/openapi.md b/docs/openapi.md index fa452ad1c..91d22df55 100644 --- a/docs/openapi.md +++ b/docs/openapi.md @@ -1273,23 +1273,6 @@ Examples "response": "Model not found" } } -``` - | -| 413 | Prompt is too long | [PromptTooLongResponse](#prompttoolongresponse) - -Examples - - - - - -```json -{ - "detail": { - "cause": "The prompt exceeds the maximum allowed length.", - "response": "Prompt is too long" - } -} ``` | | 422 | Request validation failed | [UnprocessableEntityResponse](#unprocessableentityresponse) @@ -1601,23 +1584,6 @@ Examples "response": "Model not found" } } -``` - | -| 413 | Prompt is too long | [PromptTooLongResponse](#prompttoolongresponse) - -Examples - - - - - -```json -{ - "detail": { - "cause": "The prompt exceeds the maximum allowed length.", - "response": "Prompt is too long" - } -} ``` | | 422 | Request validation failed | [UnprocessableEntityResponse](#unprocessableentityresponse) @@ -4290,6 +4256,7 @@ Global service configuration. | azure_entra_id | | | | splunk | | Splunk HEC configuration for sending telemetry events. | | deployment_environment | string | Deployment environment name (e.g., 'development', 'staging', 'production'). Used in telemetry events. | +| solr | | Configuration for Solr vector search operations. | ## ConfigurationResponse @@ -5096,18 +5063,6 @@ Useful resources: | ca_cert_path | | Path to CA certificate | -## PromptTooLongResponse - - -413 Payload Too Large - Prompt is too long. - - -| Field | Type | Description | -|-------|------|-------------| -| status_code | integer | | -| detail | | | - - ## ProviderHealthStatus @@ -5187,6 +5142,7 @@ Example: | generate_topic_summary | | Whether to generate topic summary for new conversations | | media_type | | Media type for the response format | | vector_store_ids | | Optional list of specific vector store IDs to query for RAG. If not provided, all available vector stores will be queried. | +| solr | | Solr-specific query parameters including filter queries | ## QueryResponse @@ -5614,6 +5570,21 @@ Model representing a response to shields request. | shields | array | List of shields available | +## SolrConfiguration + + +Solr configuration for vector search queries. + +Controls whether to use offline or online mode when building document URLs +from vector search results, and enables/disables Solr vector IO functionality. + + +| Field | Type | Description | +|-------|------|-------------| +| enabled | boolean | When True, enables Solr vector IO functionality for vector search queries. When False, disables Solr vector search processing. | +| offline | boolean | When True, use parent_id for chunk source URLs. When False, use reference_url for chunk source URLs. | + + ## SplunkConfiguration