Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[8.17](backport #4754) Obs AI Assistant supports other models than ELSER when field type semantic_text is used #4789

Merged
merged 2 commits into from
Jan 27, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 42 additions & 15 deletions docs/en/observability/observability-ai-assistant.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ Search connectors are only needed when importing external data into the Knowledg

{ref}/es-connectors.html[Connectors] allow you to index content from external sources thereby making it available for the AI Assistant. This can greatly improve the relevance of the AI Assistant’s responses. Data can be integrated from sources such as GitHub, Confluence, Google Drive, Jira, AWS S3, Microsoft Teams, Slack, and more.

UI affordances for creating and managing search connectors are available in the Search Solution in {kib}.
UI affordances for creating and managing search connectors are available in the Search Solution in {kib}.
You can also use the {es} {ref}/connector-apis.html[Connector APIs] to create and manage search connectors.

The infrastructure for deploying connectors can be managed by Elastic or self-managed. Managed connectors require an {enterprise-search-ref}/server.html[Enterprise Search] server connected to the Elastic Stack. Self-managed connectors are run on your own infrastructure and don't require the Enterprise Search service.
Expand All @@ -171,28 +171,55 @@ If your {kib} Space doesn't include the Search solution you will have to create
+
For example, if you create a {ref}/es-connectors-github.html[GitHub native connector] you have to set a `name`, attach it to a new or existing `index`, add your `personal access token` and include the `list of repositories` to synchronize.
+
Learn more about configuring and {ref}/es-connectors-usage.html[using connectors] in the Enterprise Search documentation.
+
. Create a pipeline and process the data with ELSER.
+
To create the embeddings needed by the AI Assistant (weights and tokens into a sparse vector field), you have to create an *ML Inference Pipeline*:
+
.. Open the previously created connector and select the *Pipelines* tab.
.. Select *Copy and customize* button at the `Unlock your custom pipelines` box.
.. Select *Add Inference Pipeline* button at the `Machine Learning Inference Pipelines` box.
.. Select *ELSER (Elastic Learned Sparse EncodeR)* ML model to add the necessary embeddings to the data.
.. Select the fields that need to be evaluated as part of the inference pipeline.
.. Test and save the inference pipeline and the overall pipeline.
Learn more about configuring and {ref}/es-connectors-usage.html[using connectors] in the Elasticsearch documentation.

After creating your connector, create the embeddings needed by the AI Assistant. You can do this using either:

* <<obs-ai-search-connectors-ml-embeddings, a machine learning (ML) pipeline>>: requires the ELSER ML model.
* <<obs-ai-search-connectors-semantic-text, a `semantic_text` field type>>: can use any available ML model (ELSER, E5, or a custom model).

[discrete]
[[obs-ai-search-connectors-ml-embeddings]]
==== Use machine learning pipelines to create AI Assistant embeddings

To create the embeddings needed by the AI Assistant (weights and tokens into a sparse vector field) using an *ML Inference Pipeline*:

. Open the previously created connector, and select the *Pipelines* tab.
. Select *Copy and customize* under `Unlock your custom pipelines`.
. Select *Add Inference Pipeline* under `Machine Learning Inference Pipelines`.
. Select the *ELSER (Elastic Learned Sparse EncodeR)* ML model to add the necessary embeddings to the data.
. Select the fields that need to be evaluated as part of the inference pipeline.
. Test and save the inference pipeline and the overall pipeline.

After creating the pipeline, complete the following steps:

. Sync the data.
+
Once the pipeline is set up, perform a *Full Content Sync* of the connector. The inference pipeline will process the data as follows:
+
* As data comes in, ELSER is applied to the data, and embeddings (weights and tokens into a sparse vector field) are added to capture semantic meaning and context of the data.
* When you look at the documents that are ingested, you can see how the weights and token are added to the `predicted_value` field in the documents.
* As data comes in, ELSER is applied to the data, and embeddings (weights and tokens into a {ref}/query-dsl-sparse-vector-query.html[sparse vector field]) are added to capture semantic meaning and context of the data.
* When you look at the ingested documents, you can see the embeddings are added to the `predicted_value` field in the documents.
. Check if AI Assistant can use the index (optional).
+
Ask something to the AI Assistant related with the indexed data.

[discrete]
[[obs-ai-search-connectors-semantic-text]]
==== Use a `semantic_text` field type to create AI Assistant embeddings

To create the embeddings needed by the AI Assistant using a {ref}/semantic-text.html[`semantic_text`] field type:

. Open the previously created connector, and select the *Mappings* tab.
. Select *Add field*.
. Under *Field type*, select *Semantic text*.
. Under *Reference field*, select the field you want to use for model inference.
. Under *Select an inference endpoint*, select the model you want to use to add the embeddings to the data.
. Add the field to your mapping by selecting *Add field*.
. Sync the data by selecting *Full Content* from the *Sync* menu.

The AI Assistant will now query the connector you've set up using the model you've selected.
Check that the AI Assistant is using the index by asking it something related to the indexed data.

[discrete]
[[obs-ai-interact]]
== Interact with the AI Assistant
Expand Down
Loading