Skip to content

Commit 3d19ae4

Browse files
committed
[DOCS] Documents that ELSER is the default service for semantic_text.
1 parent 21329f3 commit 3d19ae4

File tree

2 files changed

+30
-51
lines changed

2 files changed

+30
-51
lines changed

docs/reference/mapping/types/semantic-text.asciidoc

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,25 +13,45 @@ Long passages are <<auto-text-chunking, automatically chunked>> to smaller secti
1313
The `semantic_text` field type specifies an inference endpoint identifier that will be used to generate embeddings.
1414
You can create the inference endpoint by using the <<put-inference-api>>.
1515
This field type and the <<query-dsl-semantic-query,`semantic` query>> type make it simpler to perform semantic search on your data.
16+
If you don't specify an inference endpoint, the <<infer-service-elser,ELSER serive>> is used by default.
1617

1718
Using `semantic_text`, you won't need to specify how to generate embeddings for your data, or how to index it.
1819
The {infer} endpoint automatically determines the embedding generation, indexing, and query to use.
1920

21+
If you use the ELSER service, you can set up `semantic_text` with the following API request:
22+
2023
[source,console]
2124
------------------------------------------------------------
2225
PUT my-index-000001
26+
{
27+
"mappings": {
28+
"properties": {
29+
"inference_field": {
30+
"type": "semantic_text"
31+
}
32+
}
33+
}
34+
}
35+
------------------------------------------------------------
36+
37+
If you use a service other than ELSER, you must create an {infer} endpoint using the <<put-inference-api>> and reference it when setting up `semantic_text` as the following example demonstrates:
38+
39+
[source,console]
40+
------------------------------------------------------------
41+
PUT my-index-000002
2342
{
2443
"mappings": {
2544
"properties": {
2645
"inference_field": {
2746
"type": "semantic_text",
28-
"inference_id": "my-elser-endpoint"
47+
"inference_id": "my-openai-endpoint" <1>
2948
}
3049
}
3150
}
3251
}
3352
------------------------------------------------------------
3453
// TEST[skip:Requires inference endpoint]
54+
<1> The `inference_id` of the {infer} endpoint you created previously.
3555

3656

3757
The recommended way to use semantic_text is by having dedicated {infer} endpoints for ingestion and search.
@@ -40,7 +60,7 @@ After creating dedicated {infer} endpoints for both, you can reference them usin
4060

4161
[source,console]
4262
------------------------------------------------------------
43-
PUT my-index-000002
63+
PUT my-index-000003
4464
{
4565
"mappings": {
4666
"properties": {

docs/reference/search/search-your-data/semantic-search-semantic-text.asciidoc

Lines changed: 8 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -21,45 +21,9 @@ This tutorial uses the <<inference-example-elser,`elser` service>> for demonstra
2121
[[semantic-text-requirements]]
2222
==== Requirements
2323

24-
To use the `semantic_text` field type, you must have an {infer} endpoint deployed in
25-
your cluster using the <<put-inference-api>>.
24+
To use the `semantic_text` field type with an {infer} service other than ELSER, you must have an {infer} endpoint deployed in your cluster using the <<put-inference-api>>.
25+
If you use ELSER, the {infer} endpoint will be created automatically, when you set up the index with the `semantic_text` field.
2626

27-
[discrete]
28-
[[semantic-text-infer-endpoint]]
29-
==== Create the {infer} endpoint
30-
31-
Create an inference endpoint by using the <<put-inference-api>>:
32-
33-
[source,console]
34-
------------------------------------------------------------
35-
PUT _inference/sparse_embedding/my-elser-endpoint <1>
36-
{
37-
"service": "elser", <2>
38-
"service_settings": {
39-
"adaptive_allocations": { <3>
40-
"enabled": true,
41-
"min_number_of_allocations": 3,
42-
"max_number_of_allocations": 10
43-
},
44-
"num_threads": 1
45-
}
46-
}
47-
------------------------------------------------------------
48-
// TEST[skip:TBD]
49-
<1> The task type is `sparse_embedding` in the path as the `elser` service will
50-
be used and ELSER creates sparse vectors. The `inference_id` is
51-
`my-elser-endpoint`.
52-
<2> The `elser` service is used in this example.
53-
<3> This setting enables and configures adaptive allocations.
54-
Adaptive allocations make it possible for ELSER to automatically scale up or down resources based on the current load on the process.
55-
56-
[NOTE]
57-
====
58-
You might see a 502 bad gateway error in the response when using the {kib} Console.
59-
This error usually just reflects a timeout, while the model downloads in the background.
60-
You can check the download progress in the {ml-app} UI.
61-
If using the Python client, you can set the `timeout` parameter to a higher value.
62-
====
6327

6428
[discrete]
6529
[[semantic-text-index-mapping]]
@@ -75,8 +39,7 @@ PUT semantic-embeddings
7539
"mappings": {
7640
"properties": {
7741
"content": { <1>
78-
"type": "semantic_text", <2>
79-
"inference_id": "my-elser-endpoint" <3>
42+
"type": "semantic_text" <2>
8043
}
8144
}
8245
}
@@ -85,18 +48,14 @@ PUT semantic-embeddings
8548
// TEST[skip:TBD]
8649
<1> The name of the field to contain the generated embeddings.
8750
<2> The field to contain the embeddings is a `semantic_text` field.
88-
<3> The `inference_id` is the inference endpoint you created in the previous step.
89-
It will be used to generate the embeddings based on the input text.
90-
Every time you ingest data into the related `semantic_text` field, this endpoint will be used for creating the vector representation of the text.
51+
As there is no `inference_id` provided, the <<infer-service-elser,ELSER serive>> will be used by default.
52+
If you use a different {infer} service, you must create an {infer} endpoint first and then reference it in the `semantic_text` field mapping.
9153

9254
[NOTE]
9355
====
94-
If you're using web crawlers or connectors to generate indices, you have to
95-
<<indices-put-mapping,update the index mappings>> for these indices to
96-
include the `semantic_text` field. Once the mapping is updated, you'll need to run
97-
a full web crawl or a full connector sync. This ensures that all existing
98-
documents are reprocessed and updated with the new semantic embeddings,
99-
enabling semantic search on the updated data.
56+
If you're using web crawlers or connectors to generate indices, you have to <<indices-put-mapping,update the index mappings>> for these indices to include the `semantic_text` field.
57+
Once the mapping is updated, you'll need to run a full web crawl or a full connector sync.
58+
This ensures that all existing documents are reprocessed and updated with the new semantic embeddings, enabling semantic search on the updated data.
10059
====
10160

10261

0 commit comments

Comments
 (0)