gems/gitlab-active-context/doc/getting_started.md
See glossary for what a unit primitive is.
Consider creating separate unit primitives (e.g., semantic_search_code, semantic_search_issue, semantic_search_documentation) when:
Use a single unit primitive (e.g., semantic_search) when:
Keep in mind that splitting or adding primitives increases implementation effort. See documentation.
Follow the Cloud Connector guidance for adding a new feature.
Add an initializer with the following options:
enabled: true|false. Defaults to falseindexing_enabled: true|false. Defaults to falsere_enqueue_indexing_workers: true|false. Defaults to falselogger: Logger. Defaults to Logger.new($stdout)queue_classes: Array of queue classes that include the ActiveContext::Concerns::Queue concern. Defaults to []For example:
ActiveContext.configure do |config|
config.enabled = true
config.indexing_enabled = true
config.logger = ::Gitlab::Elasticsearch::Logger.build
config.queue_classes = [::Ai::ActiveContext::Queues::Code]
end
See Registering a queue for details on how to add new queue classes.
Create a Ai::ActiveContext::Connection record in the database with the following fields:
name: Useful nameadapter_class: One of
ActiveContext::Databases::Elasticsearch::AdapterActiveContext::Databases::Opensearch::AdapterActiveContext::Databases::Postgresql::Adapteroptions: Connection options
url, client_request_timeout, retry_on_failure, log, debugurl, aws, aws_region, aws_access_key, aws_secret_access_key, client_request_timeout, retry_on_failure, log, debughost, port, user, password, databaseAi::ActiveContext::Connection.create!(
name: "elastic",
adapter_class: "ActiveContext::Databases::Elasticsearch::Adapter",
options: { use_advanced_search_config: true }
)
Ai::ActiveContext::Connection.create!(
name: "opensearch",
adapter_class: "ActiveContext::Databases::Opensearch::Adapter",
options: { use_advanced_search_config: true }
)
Ai::ActiveContext::Connection.create!(
name: "postgresql",
adapter_class: "ActiveContext::Databases::Postgresql::Adapter",
options: {
host: "localhost",
port: 5432,
user: "postgres",
password: "password",
database: "postgres"
}
)
To make a connection active and deactivate the existing active connection if it is set:
connection.activate!