diff --git a/content/commands/ft.aggregate.md b/content/commands/ft.aggregate.md index d31185826e..ebd13fcb36 100644 --- a/content/commands/ft.aggregate.md +++ b/content/commands/ft.aggregate.md @@ -260,7 +260,7 @@ groups the results in the pipeline based on one or more properties. Each group s reduces the matching results in each group into a single record, using a reduction function. For example, `COUNT` counts the number of records in the group. The reducers can have their own property names using the `AS {name}` optional argument. If a name is not given, the resulting name will be the name of the reduce function and the group properties. For example, if a name is not given to `COUNT_DISTINCT` by property `@foo`, the resulting name will be `count_distinct(@foo)`. -See [Supported GROUPBY reducers]({{< relref "develop/interact/search-and-query/advanced-concepts/aggregations#supported-groupby-reducers" >}}) for more details. +See [Supported GROUPBY reducers]({{< relref "develop/ai/search-and-query/advanced-concepts/aggregations#supported-groupby-reducers" >}}) for more details.
@@ -292,7 +292,7 @@ applies a 1-to-1 transformation on one or more properties and either stores the `expr` is an expression that can be used to perform arithmetic operations on numeric properties, or functions that can be applied on properties depending on their types (see below), or any combination thereof. For example, `APPLY "sqrt(@foo)/log(@bar) + 5" AS baz` evaluates this expression dynamically for each record in the pipeline and store the result as a new property called `baz`, which can be referenced by further `APPLY`/`SORTBY`/`GROUPBY`/`REDUCE` operations down the pipeline. -See [APPLY expressions]({{< relref "develop/interact/search-and-query/advanced-concepts/aggregations/#apply-expressions" >}}) for details. +See [APPLY expressions]({{< relref "develop/ai/search-and-query/advanced-concepts/aggregations/#apply-expressions" >}}) for details.
@@ -316,7 +316,7 @@ filters the results using predicate expressions relating to values in each resul WITHCURSOR {COUNT} {read_size} [MAXIDLE {idle_time}] Scan part of the results with a quicker alternative than `LIMIT`. -See [Cursor API]({{< relref "develop/interact/search-and-query/advanced-concepts/aggregations#cursor-api" >}}) for more details. +See [Cursor API]({{< relref "develop/ai/search-and-query/advanced-concepts/aggregations#cursor-api" >}}) for more details.
@@ -336,7 +336,7 @@ You can reference parameters in the `query` by a `$`, followed by the parameter
SCORER {scorer} -uses a [built-in]({{< relref "/develop/interact/search-and-query/advanced-concepts/scoring" >}}) or a [user-provided]({{< relref "/develop/interact/search-and-query/administration/extensions" >}}) scoring function. +uses a [built-in]({{< relref "/develop/ai/search-and-query/advanced-concepts/scoring" >}}) or a [user-provided]({{< relref "/develop/ai/search-and-query/administration/extensions" >}}) scoring function.
@@ -495,6 +495,6 @@ Next, count GitHub events by user (actor), to produce the most active users. ## Related topics -- [Aggregations]({{< relref "/develop/interact/search-and-query/advanced-concepts/aggregations" >}}) -- [RediSearch]({{< relref "/develop/interact/search-and-query" >}}) +- [Aggregations]({{< relref "/develop/ai/search-and-query/advanced-concepts/aggregations" >}}) +- [RediSearch]({{< relref "/develop/ai/search-and-query" >}}) diff --git a/content/commands/ft.aliasadd.md b/content/commands/ft.aliasadd.md index 2bd5fa460b..f03c8b83ae 100644 --- a/content/commands/ft.aliasadd.md +++ b/content/commands/ft.aliasadd.md @@ -80,4 +80,4 @@ Attempting to add the same alias returns a message that the alias already exists ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) \ No newline at end of file +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) \ No newline at end of file diff --git a/content/commands/ft.aliasdel.md b/content/commands/ft.aliasdel.md index 9989302a70..937e4db0ff 100644 --- a/content/commands/ft.aliasdel.md +++ b/content/commands/ft.aliasdel.md @@ -66,4 +66,4 @@ OK ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) \ No newline at end of file +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) \ No newline at end of file diff --git a/content/commands/ft.aliasupdate.md b/content/commands/ft.aliasupdate.md index 3d877f7705..d9b4aad62d 100644 --- a/content/commands/ft.aliasupdate.md +++ b/content/commands/ft.aliasupdate.md @@ -68,4 +68,4 @@ OK ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) \ No newline at end of file +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) \ No newline at end of file diff --git a/content/commands/ft.alter.md b/content/commands/ft.alter.md index 6b2c25010c..af5fa960a2 100644 --- a/content/commands/ft.alter.md +++ b/content/commands/ft.alter.md @@ -102,7 +102,7 @@ OK ## Related topics -- [RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) +- [RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) diff --git a/content/commands/ft.config-get.md b/content/commands/ft.config-get.md index 362d2f9e65..1647f9134f 100644 --- a/content/commands/ft.config-get.md +++ b/content/commands/ft.config-get.md @@ -146,4 +146,4 @@ FT.CONFIG GET returns an array reply of the configuration name and value. ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) \ No newline at end of file +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) \ No newline at end of file diff --git a/content/commands/ft.config-help.md b/content/commands/ft.config-help.md index 5a22c6ce4f..f5cda7651e 100644 --- a/content/commands/ft.config-help.md +++ b/content/commands/ft.config-help.md @@ -71,4 +71,4 @@ FT.CONFIG HELP returns an array reply of the configuration name and value. ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) \ No newline at end of file +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) \ No newline at end of file diff --git a/content/commands/ft.config-set.md b/content/commands/ft.config-set.md index c6336b683f..3b636225f4 100644 --- a/content/commands/ft.config-set.md +++ b/content/commands/ft.config-set.md @@ -40,7 +40,7 @@ Set the value of a RediSearch configuration parameter. Values set using `FT.CONFIG SET` are not persisted after server restart. -RediSearch configuration parameters are detailed in [Configuration parameters]({{< relref "/develop/interact/search-and-query/administration/configuration" >}}). +RediSearch configuration parameters are detailed in [Configuration parameters]({{< relref "/develop/ai/search-and-query/administration/configuration" >}}). {{% alert title="Note" color="warning" %}} As detailed in the link above, not all RediSearch configuration parameters can be set at runtime. @@ -83,4 +83,4 @@ OK ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) diff --git a/content/commands/ft.create.md b/content/commands/ft.create.md index 9a367d7dbd..f7a4480cd6 100644 --- a/content/commands/ft.create.md +++ b/content/commands/ft.create.md @@ -222,13 +222,13 @@ after the SCHEMA keyword, declares which fields to index: - `TEXT` - Allows full-text search queries against the value in this attribute. - - `TAG` - Allows exact-match queries, such as categories or primary keys, against the value in this attribute. For more information, see [Tag Fields]({{< relref "/develop/interact/search-and-query/advanced-concepts/tags" >}}). + - `TAG` - Allows exact-match queries, such as categories or primary keys, against the value in this attribute. For more information, see [Tag Fields]({{< relref "/develop/ai/search-and-query/advanced-concepts/tags" >}}). - - `NUMERIC` - Allows numeric range queries against the value in this attribute. See [query syntax docs]({{< relref "/develop/interact/search-and-query/query/" >}}) for details on how to use numeric ranges. + - `NUMERIC` - Allows numeric range queries against the value in this attribute. See [query syntax docs]({{< relref "/develop/ai/search-and-query/query/" >}}) for details on how to use numeric ranges. - `GEO` - Allows radius range queries against the value (point) in this attribute. The value of the attribute must be a string containing a longitude (first) and latitude separated by a comma. - - `VECTOR` - Allows vector queries against the value in this attribute. This requires [query dialect 2]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects#dialect-2" >}}) or above (introduced in [RediSearch v2.4](https://github.com/RediSearch/RediSearch/releases/tag/v2.4.3)). For more information, see [Vector Fields]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors" >}}). + - `VECTOR` - Allows vector queries against the value in this attribute. This requires [query dialect 2]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects#dialect-2" >}}) or above (introduced in [RediSearch v2.4](https://github.com/RediSearch/RediSearch/releases/tag/v2.4.3)). For more information, see [Vector Fields]({{< relref "/develop/ai/search-and-query/vectors" >}}). - `GEOSHAPE`- Allows polygon queries against the value in this attribute. The value of the attribute must follow a [WKT notation](https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry) list of 2D points representing the polygon edges `POLYGON((x1 y1, x2 y2, ...)` separated by a comma. A `GEOSHAPE` field type can be followed by one of the following coordinate systems: - `SPHERICAL` for Geographic longitude and latitude coordinates @@ -240,7 +240,7 @@ after the SCHEMA keyword, declares which fields to index: Field options are: - - `SORTABLE` - `NUMERIC`, `TAG`, `TEXT`, or `GEO` attributes can have an optional **SORTABLE** argument. As the user [sorts the results by the value of this attribute]({{< relref "/develop/interact/search-and-query/advanced-concepts/sorting" >}}), the results are available with very low latency. Note that his adds memory overhead, so consider not declaring it on large text attributes. You can sort an attribute without the `SORTABLE` option, but the latency is not as good as with `SORTABLE`. + - `SORTABLE` - `NUMERIC`, `TAG`, `TEXT`, or `GEO` attributes can have an optional **SORTABLE** argument. As the user [sorts the results by the value of this attribute]({{< relref "/develop/ai/search-and-query/advanced-concepts/sorting" >}}), the results are available with very low latency. Note that his adds memory overhead, so consider not declaring it on large text attributes. You can sort an attribute without the `SORTABLE` option, but the latency is not as good as with `SORTABLE`. - `UNF` - By default, for hashes (not with JSON) `SORTABLE` applies a normalization to the indexed value (characters set to lowercase, removal of diacritics). When using the unnormalized form (UNF), you can disable the normalization and keep the original form of the value. With JSON, `UNF` is implicit with `SORTABLE` (normalization is disabled). @@ -255,7 +255,7 @@ after the SCHEMA keyword, declares which fields to index: - `dm:pt` - Double metaphone for Portuguese - `dm:es` - Double metaphone for Spanish - For more information, see [Phonetic Matching]({{< relref "/develop/interact/search-and-query/advanced-concepts/phonetic_matching" >}}). + For more information, see [Phonetic Matching]({{< relref "/develop/ai/search-and-query/advanced-concepts/phonetic_matching" >}}). - `WEIGHT {weight}` for `TEXT` attributes, declares the importance of this attribute when calculating result accuracy. This is a multiplication factor, and defaults to 1 if not specified. @@ -306,7 +306,7 @@ A stemmer is used for the supplied language during indexing. If an unsupported l Indonesian, Irish, Italian, Lithuanian, Nepali, Norwegian, Portuguese, Romanian, Russian, Spanish, Swedish, Tamil, Turkish, and Chinese. -When adding Chinese language documents, set `LANGUAGE chinese` for the indexer to properly tokenize the terms. If you use the default language, then search terms are extracted based on punctuation characters and whitespace. The Chinese language tokenizer makes use of a segmentation algorithm (via [Friso](https://github.com/lionsoul2014/friso)), which segments text and checks it against a predefined dictionary. See [Stemming]({{< relref "/develop/interact/search-and-query/advanced-concepts/stemming" >}}) for more information. +When adding Chinese language documents, set `LANGUAGE chinese` for the indexer to properly tokenize the terms. If you use the default language, then search terms are extracted based on punctuation characters and whitespace. The Chinese language tokenizer makes use of a segmentation algorithm (via [Friso](https://github.com/lionsoul2014/friso)), which segments text and checks it against a predefined dictionary. See [Stemming]({{< relref "/develop/ai/search-and-query/advanced-concepts/stemming" >}}) for more information.
@@ -469,9 +469,9 @@ The following example uses data similar to the hash examples above but uses JSON ## Related topics -- [RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) +- [RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) - [RedisJSON]({{< relref "/develop/data-types/json/" >}}) - [Friso](https://github.com/lionsoul2014/friso) -- [Stemming]({{< relref "/develop/interact/search-and-query/advanced-concepts/stemming" >}}) -- [Phonetic Matching]({{< relref "/develop/interact/search-and-query/advanced-concepts/phonetic_matching" >}}) +- [Stemming]({{< relref "/develop/ai/search-and-query/advanced-concepts/stemming" >}}) +- [Phonetic Matching]({{< relref "/develop/ai/search-and-query/advanced-concepts/phonetic_matching" >}}) - [RSCoordinator](https://github.com/RedisLabsModules/RSCoordinator) diff --git a/content/commands/ft.cursor-del.md b/content/commands/ft.cursor-del.md index 00206978f6..43b416fe35 100644 --- a/content/commands/ft.cursor-del.md +++ b/content/commands/ft.cursor-del.md @@ -80,4 +80,4 @@ Check that the cursor is deleted. ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) \ No newline at end of file +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) \ No newline at end of file diff --git a/content/commands/ft.cursor-read.md b/content/commands/ft.cursor-read.md index f603685efa..9bd8921132 100644 --- a/content/commands/ft.cursor-read.md +++ b/content/commands/ft.cursor-read.md @@ -42,7 +42,7 @@ Read next results from an existing cursor [Examples](#examples) -See [Cursor API]({{< relref "develop/interact/search-and-query/advanced-concepts/aggregations#cursor-api" >}}) for more details. +See [Cursor API]({{< relref "develop/ai/search-and-query/advanced-concepts/aggregations#cursor-api" >}}) for more details. ## Required arguments @@ -84,4 +84,4 @@ FT.CURSOR READ returns an array reply where each row is an array reply and repre ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) diff --git a/content/commands/ft.dictadd.md b/content/commands/ft.dictadd.md index d22931081b..24fece3178 100644 --- a/content/commands/ft.dictadd.md +++ b/content/commands/ft.dictadd.md @@ -73,4 +73,4 @@ FT.DICTADD returns an integer reply, the number of new terms that were added. ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) \ No newline at end of file +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) \ No newline at end of file diff --git a/content/commands/ft.dictdel.md b/content/commands/ft.dictdel.md index 0f1b3ac522..8eac485159 100644 --- a/content/commands/ft.dictdel.md +++ b/content/commands/ft.dictdel.md @@ -73,4 +73,4 @@ FT.DICTDEL returns an integer reply, the number of new terms that were deleted. ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) diff --git a/content/commands/ft.dictdump.md b/content/commands/ft.dictdump.md index b96d77d284..07ff3ec1a4 100644 --- a/content/commands/ft.dictdump.md +++ b/content/commands/ft.dictdump.md @@ -68,6 +68,6 @@ FT.DICTDUMP returns an array, where each element is term (string). ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) diff --git a/content/commands/ft.dropindex.md b/content/commands/ft.dropindex.md index 44769bfd89..5c3362eae9 100644 --- a/content/commands/ft.dropindex.md +++ b/content/commands/ft.dropindex.md @@ -87,4 +87,4 @@ OK ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) diff --git a/content/commands/ft.explain.md b/content/commands/ft.explain.md index 924e7e323f..997cdeb055 100644 --- a/content/commands/ft.explain.md +++ b/content/commands/ft.explain.md @@ -109,5 +109,5 @@ INTERSECT { ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) diff --git a/content/commands/ft.explaincli.md b/content/commands/ft.explaincli.md index 0501eaef88..47c8f62ae3 100644 --- a/content/commands/ft.explaincli.md +++ b/content/commands/ft.explaincli.md @@ -122,5 +122,5 @@ $ redis-cli ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) diff --git a/content/commands/ft.info.md b/content/commands/ft.info.md index 009e2c53c4..ab1bb06898 100644 --- a/content/commands/ft.info.md +++ b/content/commands/ft.info.md @@ -360,4 +360,4 @@ The next two GC-related fields are relevant in scenarios where simultaneous chan ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) diff --git a/content/commands/ft.profile.md b/content/commands/ft.profile.md index c2ca68a1a2..552eff5e91 100644 --- a/content/commands/ft.profile.md +++ b/content/commands/ft.profile.md @@ -405,5 +405,5 @@ Here's an example of running the `FT.PROFILE` command for a vector query. ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) diff --git a/content/commands/ft.search.md b/content/commands/ft.search.md index 4d6fbcb5c5..4961a64fc5 100644 --- a/content/commands/ft.search.md +++ b/content/commands/ft.search.md @@ -334,7 +334,7 @@ is index name. You must first create the index using [`FT.CREATE`]({{< relref "c
query -is text query to search. If it's more than a single word, put it in quotes. Refer to [Query syntax]({{< relref "/develop/interact/search-and-query/query/" >}}) for more details. +is text query to search. If it's more than a single word, put it in quotes. Refer to [Query syntax]({{< relref "/develop/ai/search-and-query/query/" >}}) for more details.
## Optional arguments @@ -381,14 +381,14 @@ returns the value of the sorting key, right after the id and score and/or payloa limits results to those having numeric values ranging between `min` and `max`, if numeric_attribute is defined as a numeric attribute in [`FT.CREATE`]({{< relref "commands/ft.create/" >}}). `min` and `max` follow [`ZRANGE`]({{< relref "/commands/zrange" >}}) syntax, and can be `-inf`, `+inf`, and use `(` for exclusive ranges. Multiple numeric filters for different attributes are supported in one query. -**Deprecated since v2.10**: [Query dialect 2]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects#dialect-2" >}}) explains the query syntax for numeric fields that replaces this argument. +**Deprecated since v2.10**: [Query dialect 2]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects#dialect-2" >}}) explains the query syntax for numeric fields that replaces this argument.
GEOFILTER {geo_attribute} {lon} {lat} {radius} m|km|mi|ft filter the results to a given `radius` from `lon` and `lat`. Radius is given as a number and units. See [`GEORADIUS`]({{< relref "/commands/georadius" >}}) for more details. -**Deprecated since v2.6**: [Query dialect 3]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects#dialect-3" >}}) explains the query syntax for geospatial fields that replaces this argument. +**Deprecated since v2.6**: [Query dialect 3]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects#dialect-3" >}}) explains the query syntax for geospatial fields that replaces this argument.
@@ -414,13 +414,13 @@ limits the attributes returned from the document. `num` is the number of attribu
SUMMARIZE ... -returns only the sections of the attribute that contain the matched text. See [Highlighting]({{< relref "/develop/interact/search-and-query/advanced-concepts/highlight" >}}) for more information. +returns only the sections of the attribute that contain the matched text. See [Highlighting]({{< relref "/develop/ai/search-and-query/advanced-concepts/highlight" >}}) for more information.
HIGHLIGHT ... -formats occurrences of matched text. See [Highlighting]({{< relref "/develop/interact/search-and-query/advanced-concepts/highlight" >}}) for more information. +formats occurrences of matched text. See [Highlighting]({{< relref "/develop/ai/search-and-query/advanced-concepts/highlight" >}}) for more information.
@@ -451,13 +451,13 @@ use a stemmer for the supplied language during search for query expansion. If qu
EXPANDER {expander} -uses a custom query expander instead of the stemmer. See [Extensions]({{< relref "/develop/interact/search-and-query/administration/extensions" >}}). +uses a custom query expander instead of the stemmer. See [Extensions]({{< relref "/develop/ai/search-and-query/administration/extensions" >}}).
SCORER {scorer} -uses a [built-in]({{< relref "/develop/interact/search-and-query/advanced-concepts/scoring" >}}) or a [user-provided]({{< relref "/develop/interact/search-and-query/administration/extensions" >}}) scoring function. +uses a [built-in]({{< relref "/develop/ai/search-and-query/advanced-concepts/scoring" >}}) or a [user-provided]({{< relref "/develop/ai/search-and-query/administration/extensions" >}}) scoring function.
@@ -469,7 +469,7 @@ returns a textual description of how the scores were calculated. Using this opti
PAYLOAD {payload} -adds an arbitrary, binary safe payload that is exposed to custom scoring functions. See [Extensions]({{< relref "/develop/interact/search-and-query/administration/extensions" >}}). +adds an arbitrary, binary safe payload that is exposed to custom scoring functions. See [Extensions]({{< relref "/develop/ai/search-and-query/administration/extensions" >}}).
@@ -508,14 +508,14 @@ overrides the timeout parameter of the module. defines one or more value parameters. Each parameter has a name and a value. You can reference parameters in the `query` by a `$`, followed by the parameter name, for example, `$user`. Each such reference in the search query to a parameter name is substituted by the corresponding parameter value. For example, with parameter definition `PARAMS 4 lon 29.69465 lat 34.95126`, the expression `@loc:[$lon $lat 10 km]` is evaluated to `@loc:[29.69465 34.95126 10 km]`. You cannot reference parameters in the query string where concrete values are not allowed, such as in field names, for example, `@loc`. To use `PARAMS`, set -[`DIALECT`]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects#dialect-2" >}}) +[`DIALECT`]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects#dialect-2" >}}) to `2` or greater than `2` (this requires [RediSearch v2.4](https://github.com/RediSearch/RediSearch/releases/tag/v2.4.3) or above).
DIALECT {dialect_version} -selects the dialect version under which to execute the query. If not specified, the query will execute under the default dialect version set during module initial loading or via [`FT.CONFIG SET`]({{< relref "commands/ft.config-set/" >}}) command. See [Query dialects]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects" >}}) for more information. +selects the dialect version under which to execute the query. If not specified, the query will execute under the default dialect version set during module initial loading or via [`FT.CONFIG SET`]({{< relref "commands/ft.config-set/" >}}) command. See [Query dialects]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects" >}}) for more information.
## Return @@ -858,7 +858,7 @@ Query with `CONTAINS` operator: ## Related topics -- [Extensions]({{< relref "/develop/interact/search-and-query/administration/extensions" >}}) -- [Highlighting]({{< relref "/develop/interact/search-and-query/advanced-concepts/highlight" >}}) -- [Query syntax]({{< relref "/develop/interact/search-and-query/query/" >}}) -- [RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) +- [Extensions]({{< relref "/develop/ai/search-and-query/administration/extensions" >}}) +- [Highlighting]({{< relref "/develop/ai/search-and-query/advanced-concepts/highlight" >}}) +- [Query syntax]({{< relref "/develop/ai/search-and-query/query/" >}}) +- [RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) diff --git a/content/commands/ft.spellcheck.md b/content/commands/ft.spellcheck.md index 77d1e3368b..f4fbb759e4 100644 --- a/content/commands/ft.spellcheck.md +++ b/content/commands/ft.spellcheck.md @@ -85,7 +85,7 @@ is index with the indexed terms. is search query.
-See [Spellchecking]({{< relref "/develop/interact/search-and-query/advanced-concepts/spellcheck" >}}) for more details. +See [Spellchecking]({{< relref "/develop/ai/search-and-query/advanced-concepts/spellcheck" >}}) for more details. ## Optional arguments @@ -138,5 +138,5 @@ The score is calculated by dividing the number of documents in which the suggest ## Related topics -- [Spellchecking]({{< relref "/develop/interact/search-and-query/advanced-concepts/spellcheck" >}}) -- [RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) \ No newline at end of file +- [Spellchecking]({{< relref "/develop/ai/search-and-query/advanced-concepts/spellcheck" >}}) +- [RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) \ No newline at end of file diff --git a/content/commands/ft.sugadd.md b/content/commands/ft.sugadd.md index 8aacb6a174..fa60274413 100644 --- a/content/commands/ft.sugadd.md +++ b/content/commands/ft.sugadd.md @@ -106,4 +106,4 @@ FT.SUGADD returns an integer reply, which is the current size of the suggestion ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) \ No newline at end of file +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) \ No newline at end of file diff --git a/content/commands/ft.sugdel.md b/content/commands/ft.sugdel.md index 581e57a4bf..0288dc0541 100644 --- a/content/commands/ft.sugdel.md +++ b/content/commands/ft.sugdel.md @@ -75,4 +75,4 @@ FT.SUGDEL returns an integer reply, 1 if the string was found and deleted, 0 oth ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) \ No newline at end of file +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) \ No newline at end of file diff --git a/content/commands/ft.sugget.md b/content/commands/ft.sugget.md index 90d7f48fde..12d37ba881 100644 --- a/content/commands/ft.sugget.md +++ b/content/commands/ft.sugget.md @@ -116,4 +116,4 @@ FT.SUGGET returns an array reply, which is a list of the top suggestions matchin ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) diff --git a/content/commands/ft.suglen.md b/content/commands/ft.suglen.md index d91ad22aa5..b583f17bed 100644 --- a/content/commands/ft.suglen.md +++ b/content/commands/ft.suglen.md @@ -64,4 +64,4 @@ FT.SUGLEN returns an integer reply, which is the current size of the suggestion ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) \ No newline at end of file +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) \ No newline at end of file diff --git a/content/commands/ft.syndump.md b/content/commands/ft.syndump.md index e86af817e8..84aeed93ed 100644 --- a/content/commands/ft.syndump.md +++ b/content/commands/ft.syndump.md @@ -72,4 +72,4 @@ FT.SYNDUMP returns an array reply, with a pair of `term` and an array of synonym ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) \ No newline at end of file +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) \ No newline at end of file diff --git a/content/commands/ft.synupdate.md b/content/commands/ft.synupdate.md index bd59f7bfa8..ccc347a1c7 100644 --- a/content/commands/ft.synupdate.md +++ b/content/commands/ft.synupdate.md @@ -94,4 +94,4 @@ OK ## Related topics -[RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) \ No newline at end of file +[RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) \ No newline at end of file diff --git a/content/commands/ft.tagvals.md b/content/commands/ft.tagvals.md index 43f7768146..1a58aa11ce 100644 --- a/content/commands/ft.tagvals.md +++ b/content/commands/ft.tagvals.md @@ -62,7 +62,7 @@ Use FT.TAGVALS if your tag indexes things like cities, categories, and so on. ## Limitations -FT.TAGVALS provides no paging or sorting, and the tags are not alphabetically sorted. FT.TAGVALS only operates on [tag fields]({{< relref "/develop/interact/search-and-query/advanced-concepts/tags" >}}). +FT.TAGVALS provides no paging or sorting, and the tags are not alphabetically sorted. FT.TAGVALS only operates on [tag fields]({{< relref "/develop/ai/search-and-query/advanced-concepts/tags" >}}). The returned strings are lowercase with whitespaces removed, but otherwise unchanged. ## Return @@ -87,5 +87,5 @@ FT.TAGVALS returns an array reply of all distinct tags in the tag index. ## Related topics -- [Tag fields]({{< relref "/develop/interact/search-and-query/advanced-concepts/tags" >}}) -- [RediSearch]({{< relref "/develop/interact/search-and-query/" >}}) +- [Tag fields]({{< relref "/develop/ai/search-and-query/advanced-concepts/tags" >}}) +- [RediSearch]({{< relref "/develop/ai/search-and-query/" >}}) diff --git a/content/commands/json.arrappend.md b/content/commands/json.arrappend.md index 31491822a9..17ae548ccf 100644 --- a/content/commands/json.arrappend.md +++ b/content/commands/json.arrappend.md @@ -105,4 +105,4 @@ redis> JSON.GET item:1 ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.arrindex.md b/content/commands/json.arrindex.md index cba5ad9482..aba172517a 100644 --- a/content/commands/json.arrindex.md +++ b/content/commands/json.arrindex.md @@ -156,5 +156,5 @@ redis> JSON.ARRINDEX item:1 $..colors '"silver"' ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.arrinsert.md b/content/commands/json.arrinsert.md index 09e2f36d59..82d1bafb15 100644 --- a/content/commands/json.arrinsert.md +++ b/content/commands/json.arrinsert.md @@ -131,4 +131,4 @@ redis> JSON.GET item:1 $.colors ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.arrlen.md b/content/commands/json.arrlen.md index 7a10a19bda..6129b00dc1 100644 --- a/content/commands/json.arrlen.md +++ b/content/commands/json.arrlen.md @@ -104,4 +104,4 @@ redis> JSON.GET item:2 '$..max_level' ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.arrpop.md b/content/commands/json.arrpop.md index 62e5d507c8..40431b799c 100644 --- a/content/commands/json.arrpop.md +++ b/content/commands/json.arrpop.md @@ -125,4 +125,4 @@ redis> JSON.GET key $.[1].max_level ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.arrtrim.md b/content/commands/json.arrtrim.md index a60f4a2a8c..e4e3fc6356 100644 --- a/content/commands/json.arrtrim.md +++ b/content/commands/json.arrtrim.md @@ -132,5 +132,5 @@ redis> JSON.GET key $.[1].max_level ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.clear.md b/content/commands/json.clear.md index a1f9eccd2a..f0cf2ef467 100644 --- a/content/commands/json.clear.md +++ b/content/commands/json.clear.md @@ -98,5 +98,5 @@ redis> JSON.GET doc $ ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.debug-help.md b/content/commands/json.debug-help.md index c99ceade4f..f191df79d7 100644 --- a/content/commands/json.debug-help.md +++ b/content/commands/json.debug-help.md @@ -35,4 +35,4 @@ JSON.DEBUG HELP returns an array with helpful messages. ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.debug-memory.md b/content/commands/json.debug-memory.md index 534fdbb222..a2b2becfe5 100644 --- a/content/commands/json.debug-memory.md +++ b/content/commands/json.debug-memory.md @@ -87,4 +87,4 @@ redis> JSON.DEBUG MEMORY item:2 ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.del.md b/content/commands/json.del.md index a96c9bfa14..f585fddc6e 100644 --- a/content/commands/json.del.md +++ b/content/commands/json.del.md @@ -97,7 +97,7 @@ redis> JSON.GET doc $ ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.get.md b/content/commands/json.get.md index 5a2e2aaa13..c6728fdf0e 100644 --- a/content/commands/json.get.md +++ b/content/commands/json.get.md @@ -146,4 +146,4 @@ redis> JSON.GET doc ..a $..b ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.merge.md b/content/commands/json.merge.md index 8a5227ebd7..bb10477109 100644 --- a/content/commands/json.merge.md +++ b/content/commands/json.merge.md @@ -156,5 +156,5 @@ redis> JSON.GET doc ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.mget.md b/content/commands/json.mget.md index 73d31eb02f..924aeec1ad 100644 --- a/content/commands/json.mget.md +++ b/content/commands/json.mget.md @@ -96,4 +96,4 @@ redis> JSON.MGET doc1 doc2 $..a ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.mset.md b/content/commands/json.mset.md index efa52fc891..6e20bb6609 100644 --- a/content/commands/json.mset.md +++ b/content/commands/json.mset.md @@ -103,4 +103,4 @@ redis> JSON.GET doc3 ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.numincrby.md b/content/commands/json.numincrby.md index 763e5a31e5..1f046211e6 100644 --- a/content/commands/json.numincrby.md +++ b/content/commands/json.numincrby.md @@ -95,4 +95,4 @@ redis> JSON.NUMINCRBY doc $..a 2 ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.nummultby.md b/content/commands/json.nummultby.md index d87b5b1d1c..1bffcc79f7 100644 --- a/content/commands/json.nummultby.md +++ b/content/commands/json.nummultby.md @@ -81,4 +81,4 @@ redis> JSON.NUMMULTBY doc $..a 2 ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.objkeys.md b/content/commands/json.objkeys.md index 79ac3505ec..9b9dc93720 100644 --- a/content/commands/json.objkeys.md +++ b/content/commands/json.objkeys.md @@ -76,4 +76,4 @@ redis> JSON.OBJKEYS doc $..a ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.objlen.md b/content/commands/json.objlen.md index 25d9928cc4..9401d7b1aa 100644 --- a/content/commands/json.objlen.md +++ b/content/commands/json.objlen.md @@ -74,4 +74,4 @@ redis> JSON.OBJLEN doc $..a ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.resp.md b/content/commands/json.resp.md index fde8fb68cb..71087a1972 100644 --- a/content/commands/json.resp.md +++ b/content/commands/json.resp.md @@ -116,4 +116,4 @@ redis> JSON.RESP item:2 ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.set.md b/content/commands/json.set.md index 21db196717..aef20bde94 100644 --- a/content/commands/json.set.md +++ b/content/commands/json.set.md @@ -172,4 +172,4 @@ redis> JSON.SET nonexistentkey $.x 5 ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.strappend.md b/content/commands/json.strappend.md index c482339774..24fbc3e851 100644 --- a/content/commands/json.strappend.md +++ b/content/commands/json.strappend.md @@ -87,5 +87,5 @@ redis> JSON.GET doc $ ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.strlen.md b/content/commands/json.strlen.md index 79ed213b45..eafc70e614 100644 --- a/content/commands/json.strlen.md +++ b/content/commands/json.strlen.md @@ -74,4 +74,4 @@ redis> JSON.STRLEN doc $..a ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.toggle.md b/content/commands/json.toggle.md index 440d7d5dd6..82118b4e66 100644 --- a/content/commands/json.toggle.md +++ b/content/commands/json.toggle.md @@ -104,5 +104,5 @@ redis> JSON.GET doc $ ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/commands/json.type.md b/content/commands/json.type.md index 6e8d6060af..afeaa6a84f 100644 --- a/content/commands/json.type.md +++ b/content/commands/json.type.md @@ -78,4 +78,4 @@ redis> JSON.TYPE doc $..dummy ## Related topics * [RedisJSON]({{< relref "/develop/data-types/json/" >}}) -* [Index and search JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}) +* [Index and search JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}) diff --git a/content/develop/_index.md b/content/develop/_index.md index 63e84b79d3..24122b3d04 100644 --- a/content/develop/_index.md +++ b/content/develop/_index.md @@ -39,6 +39,6 @@ or analyze and manage your database with our -| {{< image filename="images/icon_logo/icon-developers-32-midnight.png" >}}
[**Quick start**]({{< relref "/develop/get-started" >}}) | {{< image filename="images/icon_logo/icon-data-structures-32-midnight.png" >}}
[**Data types**]({{< relref "/develop/data-types" >}}) | {{< image filename="images/icon_logo/icon-text-search-32-midnight.png" >}}
[**Query engine**]({{< relref "/develop/interact/search-and-query" >}}) | +| {{< image filename="images/icon_logo/icon-developers-32-midnight.png" >}}
[**Quick start**]({{< relref "/develop/get-started" >}}) | {{< image filename="images/icon_logo/icon-data-structures-32-midnight.png" >}}
[**Data types**]({{< relref "/develop/data-types" >}}) | {{< image filename="images/icon_logo/icon-text-search-32-midnight.png" >}}
[**Query engine**]({{< relref "/develop/ai/search-and-query" >}}) | |---|---|---| -| [Vector database]({{< relref "/develop/get-started/vector-database" >}})
[Document store]({{< relref "/develop/get-started/document-database" >}})
[Data structure store]({{< relref "/develop/get-started/data-store" >}})
[RAG with Redis]({{< relref "/develop/get-started/rag" >}})
[GenAI]({{< relref "/develop/get-started/redis-in-ai" >}}) | [String]({{< relref "/develop/data-types/strings" >}})
[JSON]({{< relref "/develop/data-types/json" >}})
[Hash]({{< relref "/develop/data-types/hashes" >}})
[Vector set]({{< relref "/develop/data-types/vector-sets" >}})
[Probabilistic types]({{< relref "/develop/data-types/probabilistic" >}}) | [Get started]({{< relref "/develop/interact/search-and-query" >}})
[Schema field types]({{< relref "/develop/interact/search-and-query/basic-constructs/field-and-type-options" >}})
[Indexing]({{< relref "/develop/interact/search-and-query/indexing" >}})
[Querying]({{< relref "/develop/interact/search-and-query/query" >}})
[Use cases]({{< relref "/develop/interact/search-and-query/query-use-cases" >}}) +| [Vector database]({{< relref "/develop/get-started/vector-database" >}})
[Document store]({{< relref "/develop/get-started/document-database" >}})
[Data structure store]({{< relref "/develop/get-started/data-store" >}})
[RAG with Redis]({{< relref "/develop/get-started/rag" >}})
[GenAI]({{< relref "/develop/get-started/redis-in-ai" >}}) | [String]({{< relref "/develop/data-types/strings" >}})
[JSON]({{< relref "/develop/data-types/json" >}})
[Hash]({{< relref "/develop/data-types/hashes" >}})
[Vector set]({{< relref "/develop/data-types/vector-sets" >}})
[Probabilistic types]({{< relref "/develop/data-types/probabilistic" >}}) | [Get started]({{< relref "/develop/ai/search-and-query" >}})
[Schema field types]({{< relref "/develop/ai/search-and-query/indexing/field-and-type-options" >}})
[Indexing]({{< relref "/develop/ai/search-and-query/indexing" >}})
[Querying]({{< relref "/develop/ai/search-and-query/query" >}}) diff --git a/content/develop/ai/_index.md b/content/develop/ai/_index.md index 36e519789a..486c764ae2 100644 --- a/content/develop/ai/_index.md +++ b/content/develop/ai/_index.md @@ -1,17 +1,17 @@ --- -Title: Redis for AI documentation +Title: Redis for AI and search alwaysopen: false categories: - docs - operate - rs - rc -description: An overview of Redis for AI documentation -linkTitle: Redis for AI +description: An overview of Redis for AI and search documentation +linkTitle: Redis for AI and search weight: 40 hideListLinks: true --- -Redis stores and indexes vector embeddings that semantically represent unstructured data including text passages, images, videos, or audio. Store vectors and the associated metadata within [hashes]({{< relref "/develop/data-types/hashes" >}}) or [JSON]({{< relref "/develop/data-types/json" >}}) documents for [indexing]({{< relref "/develop/interact/search-and-query/indexing" >}}) and [querying]({{< relref "/develop/interact/search-and-query/query" >}}). +Redis stores and indexes vector embeddings that semantically represent unstructured data including text passages, images, videos, or audio. Store vectors and the associated metadata within [hashes]({{< relref "/develop/data-types/hashes" >}}) or [JSON]({{< relref "/develop/data-types/json" >}}) documents for [indexing]({{< relref "/develop/ai/search-and-query/indexing" >}}) and [querying]({{< relref "/develop/ai/search-and-query/query" >}}). | Vector | RAG | RedisVL | | :-- | :-- | :-- | @@ -30,10 +30,10 @@ This page is organized into a few sections depending on what you're trying to do ## How to's -1. [**Create a vector index**]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#create-a-vector-index" >}}): Redis maintains a secondary index over your data with a defined schema (including vector fields and metadata). Redis supports [`FLAT`]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#flat-index" >}}) and [`HNSW`]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#hnsw-index" >}}) vector index types. -1. [**Store and update vectors**]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#store-and-update-vectors" >}}): Redis stores vectors and metadata in hashes or JSON objects. -1. [**Search with vectors**]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#search-with-vectors" >}}): Redis supports several advanced querying strategies with vector fields including k-nearest neighbor ([KNN]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#knn-vector-search" >}})), [vector range queries]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#vector-range-queries" >}}), and [metadata filters]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#filters" >}}). -1. [**Configure vector queries at runtime**]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#runtime-query-parameters" >}}). Select the best filter mode to optimize query execution. +1. [**Create a vector index**]({{< relref "develop/ai/search-and-query/vectors#create-a-vector-index" >}}): Redis maintains a secondary index over your data with a defined schema (including vector fields and metadata). Redis supports [`FLAT`]({{< relref "develop/ai/search-and-query/vectors#flat-index" >}}) and [`HNSW`]({{< relref "develop/ai/search-and-query/vectors#hnsw-index" >}}) vector index types. +1. [**Store and update vectors**]({{< relref "develop/ai/search-and-query/vectors#store-and-update-vectors" >}}): Redis stores vectors and metadata in hashes or JSON objects. +1. [**Search with vectors**]({{< relref "develop/ai/search-and-query/vectors#search-with-vectors" >}}): Redis supports several advanced querying strategies with vector fields including k-nearest neighbor ([KNN]({{< relref "develop/ai/search-and-query/vectors#knn-vector-search" >}})), [vector range queries]({{< relref "develop/ai/search-and-query/vectors#vector-range-queries" >}}), and [metadata filters]({{< relref "develop/ai/search-and-query/vectors#filters" >}}). +1. [**Configure vector queries at runtime**]({{< relref "develop/ai/search-and-query/vectors#runtime-query-parameters" >}}). Select the best filter mode to optimize query execution. #### Learn how to index and query vector embeddings * [redis-py (Python)]({{< relref "/develop/clients/redis-py/vecsearch" >}}) @@ -48,7 +48,7 @@ Learn to perform vector search and use gateways and semantic caching in your AI/ | Search | LLM memory | Semantic caching | Semantic routing | AI Gateways | | :-- | :-- | :-- | :-- | :-- | -| {{AI Redis icon.}}[Vector search guide]({{< relref "/develop/interact/search-and-query/query/vector-search" >}}) | {{LLM memory icon.}}[Store memory for LLMs](https://redis.io/blog/level-up-rag-apps-with-redis-vector-library/) | {{AI Redis icon.}}[Semantic caching for faster, smarter LLM apps](https://redis.io/blog/what-is-semantic-caching) | {{Semantic routing icon.}}[Semantic routing chooses the best tool](https://redis.io/blog/level-up-rag-apps-with-redis-vector-library/) | {{AI Redis icon.}}[Deploy an enhanced gateway with Redis](https://redis.io/blog/ai-gateways-what-are-they-how-can-you-deploy-an-enhanced-gateway-with-redis/) | +| {{AI Redis icon.}}[Vector search guide]({{< relref "/develop/ai/search-and-query/query/vector-search" >}}) | {{LLM memory icon.}}[Store memory for LLMs](https://redis.io/blog/level-up-rag-apps-with-redis-vector-library/) | {{AI Redis icon.}}[Semantic caching for faster, smarter LLM apps](https://redis.io/blog/what-is-semantic-caching) | {{Semantic routing icon.}}[Semantic routing chooses the best tool](https://redis.io/blog/level-up-rag-apps-with-redis-vector-library/) | {{AI Redis icon.}}[Deploy an enhanced gateway with Redis](https://redis.io/blog/ai-gateways-what-are-they-how-can-you-deploy-an-enhanced-gateway-with-redis/) | ## Quickstarts diff --git a/content/develop/ai/ai-videos.md b/content/develop/ai/ai-videos.md index fd43cbe460..103a5f903a 100644 --- a/content/develop/ai/ai-videos.md +++ b/content/develop/ai/ai-videos.md @@ -1,12 +1,12 @@ --- -Title: Redis AI video collection +Title: Redis video tutorial collection alwaysopen: false categories: - docs - develop - ai description: Watch video tutorials and demos showcasing Redis in AI applications, from vector search to RAG implementations. -linkTitle: AI videos +linkTitle: Video tutorials weight: 60 --- @@ -37,7 +37,7 @@ Explore our collection of video tutorials and demonstrations showcasing how Redi Ready to start building AI applications with Redis? Check out our: - [Quickstart guides]({{< relref "/develop/get-started" >}}) -- [Vector search documentation]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors" >}}) +- [Vector search documentation]({{< relref "/develop/ai/search-and-query/vectors" >}}) - [AI ecosystem integrations]({{< relref "/develop/ai/ecosystem-integrations" >}}) - [Notebook collection]({{< relref "/develop/ai/notebook-collection" >}}) - [Vector set data type]({{< relref "/develop/data-types/vector-sets" >}}) diff --git a/content/develop/ai/langcache.md b/content/develop/ai/langcache.md new file mode 100644 index 0000000000..5c6e88927c --- /dev/null +++ b/content/develop/ai/langcache.md @@ -0,0 +1,96 @@ +--- +Title: Redis LangCache +alwaysopen: false +categories: +- docs +- develop +- ai +description: Redis LangCache provides semantic caching-as-a-service to reduce LLM costs and improve response times for AI applications. +linkTitle: LangCache +weight: 30 +--- + +Redis LangCache is a fully-managed semantic caching service that reduces large language model (LLM) costs and improves response times for AI applications. + +## How LangCache works + +LangCache uses semantic caching to store and reuse previous LLM responses for similar queries. Instead of calling the LLM for every request, LangCache: + +- **Checks for similar cached responses** when a new query arrives +- **Returns cached results instantly** if a semantically similar response exists +- **Stores new responses** for future reuse when no cache match is found + +## Key benefits + +### Cost reduction +LangCache significantly reduces LLM costs by eliminating redundant API calls. Since up to 90% of LLM requests are repetitive, caching frequently-requested responses provides substantial cost savings. + +### Improved performance +Cached responses are retrieved from memory, providing response times up to 15 times faster than LLM API calls. This improvement is particularly beneficial for retrieval-augmented generation (RAG) applications. + +### Simple deployment +LangCache is available as a managed service through a REST API. The service includes: + +- Automated embedding generation +- Configurable cache controls +- Simple billing structure +- No database management required + +### Advanced cache management +The service provides comprehensive cache management features: + +- Data access and privacy controls +- Configurable eviction protocols +- Usage monitoring and analytics +- Cache hit rate tracking + +## Use cases + +### AI assistants and chatbots +Optimize conversational AI applications by caching common responses and reducing latency for frequently asked questions. + +### RAG applications +Improve retrieval-augmented generation performance by caching responses to similar queries, reducing both cost and response time. + +### AI agents +Enhance multi-step reasoning chains and agent workflows by caching intermediate results and common reasoning patterns. + +### AI gateways +Integrate LangCache into centralized AI gateway services to manage and control LLM costs across multiple applications. + +## Getting started + +LangCache is currently available through a private preview program. The service is accessible via REST API and supports any programming language. + +### Prerequisites + +To use LangCache, you need: + +- An AI application that makes LLM API calls +- A use case involving repetitive or similar queries +- Willingness to provide feedback during the preview phase + +### Access + +LangCache is offered as a fully-managed cloud service. During the private preview: + +- Participation is free +- Usage limits may apply +- Dedicated support is provided +- Regular feedback sessions are conducted + +## Data security and privacy + +LangCache stores your data on your Redis servers. Redis does not access your data or use it to train AI models. The service maintains enterprise-grade security and privacy standards. + +## Support + +Private preview participants receive: + +- Dedicated onboarding resources +- Documentation and tutorials +- Email and chat support +- Regular check-ins with the product team +- Exclusive roadmap updates + +For more information about joining the private preview, visit the [Redis LangCache website](https://redis.io/langcache/). diff --git a/content/develop/ai/notebook-collection.md b/content/develop/ai/notebook-collection.md index 6bf9f7a8d2..fdda12ad1a 100644 --- a/content/develop/ai/notebook-collection.md +++ b/content/develop/ai/notebook-collection.md @@ -1,5 +1,5 @@ --- -Title: Redis AI notebooks collection +Title: Notebooks collection alwaysopen: false categories: - docs @@ -9,7 +9,7 @@ categories: - rc - rs description: This collection showcases how Redis can be integrated into AI workflows to enhance performance, reduce latency, and enable real-time AI applications. Each notebook comes with complete code examples, explanations, and integration guides. -linkTitle: AI notebooks collection +linkTitle: Notebooks collection weight: 40 --- diff --git a/content/develop/interact/search-and-query/_index.md b/content/develop/ai/search-and-query/_index.md similarity index 87% rename from content/develop/interact/search-and-query/_index.md rename to content/develop/ai/search-and-query/_index.md index 46ad3e86db..4d2db51268 100644 --- a/content/develop/interact/search-and-query/_index.md +++ b/content/develop/ai/search-and-query/_index.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query categories: - docs - develop @@ -26,7 +28,7 @@ The Redis Query Engine offers an enhanced Redis experience via the following sea - Geospatial queries - Aggregations -You can find a complete list of features in the [reference documentation]({{< relref "/develop/interact/search-and-query/advanced-concepts/" >}}). +You can find a complete list of features in the [reference documentation]({{< relref "/develop/ai/search-and-query/advanced-concepts/" >}}). The Redis Query Engine features allow you to use Redis as a: @@ -38,8 +40,8 @@ The Redis Query Engine features allow you to use Redis as a: Here are the next steps to get you started: 1. Follow our [quick start guide]({{< relref "/develop/get-started/document-database" >}}) to get some initial hands-on experience. -1. Learn how to [create an index]({{< relref "/develop/interact/search-and-query/indexing/" >}}). -1. Learn how to [query your data]({{< relref "/develop/interact/search-and-query/query/" >}}). +1. Learn how to [create an index]({{< relref "/develop/ai/search-and-query/indexing/" >}}). +1. Learn how to [query your data]({{< relref "/develop/ai/search-and-query/query/" >}}). 1. [Install Redis Insight]({{< relref "/operate/redisinsight" >}}), connect it to your Redis database, and then use [Redis Copilot]({{< relref "/develop/tools/insight" >}}#redis-copilot) to help you learn how to execute complex queries against your own data using simple, plain language prompts. diff --git a/content/develop/interact/search-and-query/administration/_index.md b/content/develop/ai/search-and-query/administration/_index.md similarity index 74% rename from content/develop/interact/search-and-query/administration/_index.md rename to content/develop/ai/search-and-query/administration/_index.md index 31669e1c6c..9fa18c6f85 100644 --- a/content/develop/interact/search-and-query/administration/_index.md +++ b/content/develop/ai/search-and-query/administration/_index.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/administration/_index categories: - docs - develop diff --git a/content/develop/interact/search-and-query/administration/configuration.md b/content/develop/ai/search-and-query/administration/configuration.md similarity index 96% rename from content/develop/interact/search-and-query/administration/configuration.md rename to content/develop/ai/search-and-query/administration/configuration.md index 93cb069fb6..9b25aed3b2 100644 --- a/content/develop/interact/search-and-query/administration/configuration.md +++ b/content/develop/ai/search-and-query/administration/configuration.md @@ -1,5 +1,5 @@ --- -aliases: /develop/interact/search-and-query/basic-constructs/configuration-parameters +aliases: /develop/ai/search-and-query/basic-constructs/configuration-parameters categories: - docs - develop @@ -114,7 +114,7 @@ Default: `0` ### search-cursor-max-idle -The maximum idle time (in ms) that can be set to the [cursor api]({{< relref "/develop/interact/search-and-query/advanced-concepts/aggregations#cursor-api" >}}). +The maximum idle time (in ms) that can be set to the [cursor api]({{< relref "/develop/ai/search-and-query/advanced-concepts/aggregations#cursor-api" >}}). Type: integer @@ -141,9 +141,9 @@ Default: `1` ### search-default-dialect The default -[DIALECT]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects" >}}) +[DIALECT]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects" >}}) to be used by [`FT.CREATE`]({{< relref "/commands/ft.create/" >}}), [`FT.AGGREGATE`]({{< relref "/commands/ft.aggregate/" >}}), [`FT.EXPLAIN`]({{< relref "/commands/ft.explain/" >}}), [`FT.EXPLAINCLI`]({{< relref "/commands/ft.explaincli/" >}}), and [`FT.SPELLCHECK`]({{< relref "/commands/ft.spellcheck/" >}}). -See [Query dialects]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects" >}}) +See [Query dialects]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects" >}}) for more information. Default: `1` @@ -151,7 +151,7 @@ Default: `1` ### search-ext-load If present, Redis will try to load an extension dynamic library from the specified file path. -See [Extensions]({{< relref "/develop/interact/search-and-query/administration/extensions" >}}) for details. +See [Extensions]({{< relref "/develop/ai/search-and-query/administration/extensions" >}}) for details. Type: string @@ -209,7 +209,7 @@ Default: `0` ### search-friso-ini -If present, load the custom Chinese dictionary from the specified path. See [Using custom dictionaries]({{< relref "/develop/interact/search-and-query/advanced-concepts/chinese#using-custom-dictionaries" >}}) for more details. +If present, load the custom Chinese dictionary from the specified path. See [Using custom dictionaries]({{< relref "/develop/ai/search-and-query/advanced-concepts/chinese#using-custom-dictionaries" >}}) for more details. Type: string @@ -254,7 +254,7 @@ The maximum number of cursors that can be opened, per shard, at any given time. {{% alert title="Notes" color="info" %}} * Caution should be used in modifying this parameter. Every open cursor results in additional memory usage. * Cursor usage should be regulated first by use of [`FT.CURSOR DEL`]({{< relref "/commands/ft.cursor-del/" >}}) and/or [`MAXIDLE`]({{< relref "/commands/ft.aggregate/" >}}) prior to modifying `INDEX_CURSOR_LIMIT` -* See [Cursor API]({{< relref "/develop/interact/search-and-query/advanced-concepts/aggregations#cursor-api" >}}) for more details. +* See [Cursor API]({{< relref "/develop/ai/search-and-query/advanced-concepts/aggregations#cursor-api" >}}) for more details. {{% /alert %}} Type: integer @@ -511,7 +511,7 @@ search-upgrade-index idx PREFIX 1 tt LANGUAGE french LANGUAGE_FIELD MyLang SCORE Added in v2.4.8. The maximum memory resize (in bytes) for vector indexes. -The maximum memory resize (in bytes) for vector indexes. This value will override default memory limits if you need to allow for a large [`BLOCK_SIZE`]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors/#creation-attributes-per-algorithm" >}}). +The maximum memory resize (in bytes) for vector indexes. This value will override default memory limits if you need to allow for a large [`BLOCK_SIZE`]({{< relref "/develop/ai/search-and-query/vectors/#creation-attributes-per-algorithm" >}}). Type: integer diff --git a/content/develop/interact/search-and-query/administration/design.md b/content/develop/ai/search-and-query/administration/design.md similarity index 99% rename from content/develop/interact/search-and-query/administration/design.md rename to content/develop/ai/search-and-query/administration/design.md index 09ae618240..9fd2b4768a 100644 --- a/content/develop/interact/search-and-query/administration/design.md +++ b/content/develop/ai/search-and-query/administration/design.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/administration/design categories: - docs - develop diff --git a/content/develop/interact/search-and-query/administration/extensions.md b/content/develop/ai/search-and-query/administration/extensions.md similarity index 99% rename from content/develop/interact/search-and-query/administration/extensions.md rename to content/develop/ai/search-and-query/administration/extensions.md index b744f13287..30ec1c8f0a 100644 --- a/content/develop/interact/search-and-query/administration/extensions.md +++ b/content/develop/ai/search-and-query/administration/extensions.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/administration/extensions categories: - docs - develop diff --git a/content/develop/interact/search-and-query/administration/gc.md b/content/develop/ai/search-and-query/administration/gc.md similarity index 98% rename from content/develop/interact/search-and-query/administration/gc.md rename to content/develop/ai/search-and-query/administration/gc.md index e175d6dc79..a994011ea3 100644 --- a/content/develop/interact/search-and-query/administration/gc.md +++ b/content/develop/ai/search-and-query/administration/gc.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/administration/gc categories: - docs - develop diff --git a/content/develop/interact/search-and-query/administration/indexing.md b/content/develop/ai/search-and-query/administration/indexing.md similarity index 98% rename from content/develop/interact/search-and-query/administration/indexing.md rename to content/develop/ai/search-and-query/administration/indexing.md index 2ed8c07db3..1bee2b208b 100644 --- a/content/develop/interact/search-and-query/administration/indexing.md +++ b/content/develop/ai/search-and-query/administration/indexing.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/administration/indexing categories: - docs - develop diff --git a/content/develop/interact/search-and-query/administration/overview.md b/content/develop/ai/search-and-query/administration/overview.md similarity index 98% rename from content/develop/interact/search-and-query/administration/overview.md rename to content/develop/ai/search-and-query/administration/overview.md index fde6ac9ee8..b5fa5e8f61 100644 --- a/content/develop/interact/search-and-query/administration/overview.md +++ b/content/develop/ai/search-and-query/administration/overview.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/administration/overview categories: - docs - develop @@ -131,7 +133,7 @@ Optionally, you can choose not to save any one of those attributes besides the I ### Numeric index -Numeric properties are indexed in a special data structure that enables filtering by numeric ranges in an efficient way. One could view a numeric value as a term operating just like an inverted index. For example, all the products with the price $100 are in a specific list, which is intersected with the rest of the query. See [query execution engine]({{< relref "develop/interact/search-and-query/administration/design#query-execution-engine" >}}) for more information. +Numeric properties are indexed in a special data structure that enables filtering by numeric ranges in an efficient way. One could view a numeric value as a term operating just like an inverted index. For example, all the products with the price $100 are in a specific list, which is intersected with the rest of the query. See [query execution engine]({{< relref "develop/ai/search-and-query/administration/design#query-execution-engine" >}}) for more information. However, in order to filter by a range of prices, you would have to intersect the query with all the distinct prices within that range, or perform a union query. If the range has many values in it, this becomes highly inefficient. @@ -169,7 +171,7 @@ Simple syntax is supported for complex queries that can be combined together to * Selection of specific fields using the syntax `@field:hello world`. * Numeric Range matches on numeric fields with the syntax `@field:[{min} {max}]`. * Geo radius matches on geo fields with the syntax `@field:[{lon} {lat} {radius} {m|km|mi|ft}]` -* Tag field filters with the syntax `@field:{tag | tag | ...}`. See the [full documentation on tag fields]({{< relref "/develop/interact/search-and-query/query/#tag-filters" >}}). +* Tag field filters with the syntax `@field:{tag | tag | ...}`. See the [full documentation on tag fields]({{< relref "/develop/ai/search-and-query/query/#tag-filters" >}}). * Optional terms or clauses: `foo ~bar` means bar is optional but documents with bar in them will rank higher. ### Complex query examples @@ -225,7 +227,7 @@ And negative clauses can also be added to filter out plasma and CRT TVs: Redis comes with a few very basic scoring functions to evaluate document relevance. They are all based on document scores and term frequency. This is regardless of the ability to use sortable fields (see below). Scoring functions are specified by adding the `SCORER {scorer_name}` argument to a search request. -If you prefer a custom scoring function, it is possible to add more functions using the [extension API]({{< relref "/develop/interact/search-and-query/administration/extensions" >}}). +If you prefer a custom scoring function, it is possible to add more functions using the [extension API]({{< relref "/develop/ai/search-and-query/administration/extensions" >}}). These are the pre-bundled scoring functions available in Redis: @@ -293,7 +295,7 @@ However, searching for fuzzy prefixes (especially very short ones) will traverse The autocomplete engine supports Unicode, allowing for fuzzy matches in non-latin languages as well. -See the [autocomplete page]({{< relref "/develop/interact/search-and-query/advanced-concepts/autocomplete" >}}) for more information and examples. +See the [autocomplete page]({{< relref "/develop/ai/search-and-query/advanced-concepts/autocomplete" >}}) for more information and examples. ## Search engine internals diff --git a/content/develop/interact/search-and-query/advanced-concepts/_index.md b/content/develop/ai/search-and-query/advanced-concepts/_index.md similarity index 63% rename from content/develop/interact/search-and-query/advanced-concepts/_index.md rename to content/develop/ai/search-and-query/advanced-concepts/_index.md index d0f89aeecb..166217b290 100644 --- a/content/develop/interact/search-and-query/advanced-concepts/_index.md +++ b/content/develop/ai/search-and-query/advanced-concepts/_index.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/advanced-concepts/_index categories: - docs - develop @@ -11,8 +13,8 @@ categories: - clients description: Details about query syntax, aggregation, scoring, and other search and query options -linkTitle: Advanced concepts -title: Advanced concepts +linkTitle: Search concepts +title: Search concepts weight: 7 --- @@ -32,23 +34,23 @@ Redis Open Source supports the following Redis Query Engine features. This artic * Multi-field queries * Query on [JSON]({{< relref "/develop/data-types/json/" >}}) documents -* [Aggregation]({{< relref "/develop/interact/search-and-query/advanced-concepts/aggregations" >}}) +* [Aggregation]({{< relref "/develop/ai/search-and-query/advanced-concepts/aggregations" >}}) * Boolean queries with AND, OR, and NOT operators between subqueries * Optional query clauses * Retrieval of full document contents or only their IDs * Exact phrase search and slop-based search * Numeric filters and ranges * Geo-filtering using Redis [geo commands]({{< relref "/commands/" >}}?group=geo) -* [Vector search]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors" >}}) +* [Vector search]({{< relref "/develop/ai/search-and-query/vectors" >}}) ## Full-text search features -* [Prefix-based searches]({{< relref "/develop/interact/search-and-query/query/#prefix-matching" >}}) +* [Prefix-based searches]({{< relref "/develop/ai/search-and-query/query/#prefix-matching" >}}) * Field weights -* [Auto-complete]({{< relref "develop/interact/search-and-query/administration/overview#auto-complete" >}}) and fuzzy prefix suggestions -* [Stemming]({{< relref "/develop/interact/search-and-query/advanced-concepts/stemming" >}})-based query expansion for [many languages]({{< relref "develop/interact/search-and-query/advanced-concepts/stemming#supported-languages" >}}) using [Snowball](http://snowballstem.org/) -* Support for custom functions for query expansion and scoring (see [Extensions]({{< relref "/develop/interact/search-and-query/administration/extensions" >}})) +* [Auto-complete]({{< relref "develop/ai/search-and-query/administration/overview#auto-complete" >}}) and fuzzy prefix suggestions +* [Stemming]({{< relref "/develop/ai/search-and-query/advanced-concepts/stemming" >}})-based query expansion for [many languages]({{< relref "develop/ai/search-and-query/advanced-concepts/stemming#supported-languages" >}}) using [Snowball](http://snowballstem.org/) +* Support for custom functions for query expansion and scoring (see [Extensions]({{< relref "/develop/ai/search-and-query/administration/extensions" >}})) * Unicode support (UTF-8 input required) * Document ranking diff --git a/content/develop/interact/search-and-query/advanced-concepts/aggregations.md b/content/develop/ai/search-and-query/advanced-concepts/aggregations.md similarity index 99% rename from content/develop/interact/search-and-query/advanced-concepts/aggregations.md rename to content/develop/ai/search-and-query/advanced-concepts/aggregations.md index ec5f7741aa..3813995e7a 100644 --- a/content/develop/interact/search-and-query/advanced-concepts/aggregations.md +++ b/content/develop/ai/search-and-query/advanced-concepts/aggregations.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/advanced-concepts/aggregations categories: - docs - develop diff --git a/content/develop/interact/search-and-query/advanced-concepts/autocomplete.md b/content/develop/ai/search-and-query/advanced-concepts/autocomplete.md similarity index 98% rename from content/develop/interact/search-and-query/advanced-concepts/autocomplete.md rename to content/develop/ai/search-and-query/advanced-concepts/autocomplete.md index 543a319696..6a02182d64 100644 --- a/content/develop/interact/search-and-query/advanced-concepts/autocomplete.md +++ b/content/develop/ai/search-and-query/advanced-concepts/autocomplete.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/advanced-concepts/autocomplete categories: - docs - develop diff --git a/content/develop/interact/search-and-query/advanced-concepts/chinese.md b/content/develop/ai/search-and-query/advanced-concepts/chinese.md similarity index 97% rename from content/develop/interact/search-and-query/advanced-concepts/chinese.md rename to content/develop/ai/search-and-query/advanced-concepts/chinese.md index 774206a96e..f30045a886 100644 --- a/content/develop/interact/search-and-query/advanced-concepts/chinese.md +++ b/content/develop/ai/search-and-query/advanced-concepts/chinese.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/advanced-concepts/chinese categories: - docs - develop diff --git a/content/develop/interact/search-and-query/advanced-concepts/dialects.md b/content/develop/ai/search-and-query/advanced-concepts/dialects.md similarity index 92% rename from content/develop/interact/search-and-query/advanced-concepts/dialects.md rename to content/develop/ai/search-and-query/advanced-concepts/dialects.md index 4891096cb5..3ec8727b97 100644 --- a/content/develop/interact/search-and-query/advanced-concepts/dialects.md +++ b/content/develop/ai/search-and-query/advanced-concepts/dialects.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/advanced-concepts/dialects categories: - docs - develop @@ -29,7 +31,7 @@ This dialect is also the default dialect. See below for information about changi ## `DIALECT 2` Dialect version 2 was introduced in the [2.4](https://github.com/RediSearch/RediSearch/releases/tag/v2.4.3) release to address query parser inconsistencies found in previous versions of Redis. Dialect version 1 remains the default dialect. To use dialect version 2, append `DIALECT 2` to your query command. -Support for vector search also was introduced in the 2.4 release and requires `DIALECT 2`. See [here]({{< relref "/develop/interact/search-and-query/query/vector-search" >}}) for more details. +Support for vector search also was introduced in the 2.4 release and requires `DIALECT 2`. See [here]({{< relref "/develop/ai/search-and-query/query/vector-search" >}}) for more details. `FT.SEARCH ... DIALECT 2` It was determined that under certain conditions some query parsing rules did not behave as originally intended. @@ -129,7 +131,7 @@ The Dialect version 2 enhancements also introduce simplified syntax for logical ## `DIALECT 3` (Deprecated) -Dialect version 3 was introduced in the [2.6](https://github.com/RediSearch/RediSearch/releases/tag/v2.6.3) release. This version introduced support for multi-value indexing and querying of attributes for any attribute type ( [TEXT]({{< relref "develop/interact/search-and-query/indexing/#index-json-arrays-as-text" >}}), [TAG]({{< relref "develop/interact/search-and-query/indexing/#index-json-arrays-as-tag" >}}), [NUMERIC]({{< relref "develop/interact/search-and-query/indexing/#index-json-arrays-as-numeric" >}}), [GEO]({{< relref "develop/interact/search-and-query/indexing/#index-json-arrays-as-geo" >}}) and [VECTOR]({{< relref "develop/interact/search-and-query/indexing/#index-json-arrays-as-vector" >}})) defined by a [JSONPath]({{< relref "/develop/data-types/json/path" >}}) leading to an array or multiple scalar values. Support for [GEOSHAPE]({{< relref "/develop/interact/search-and-query/query/geo-spatial" >}}) queries was also introduced in this dialect. +Dialect version 3 was introduced in the [2.6](https://github.com/RediSearch/RediSearch/releases/tag/v2.6.3) release. This version introduced support for multi-value indexing and querying of attributes for any attribute type ( [TEXT]({{< relref "develop/ai/search-and-query/indexing/#index-json-arrays-as-text" >}}), [TAG]({{< relref "develop/ai/search-and-query/indexing/#index-json-arrays-as-tag" >}}), [NUMERIC]({{< relref "develop/ai/search-and-query/indexing/#index-json-arrays-as-numeric" >}}), [GEO]({{< relref "develop/ai/search-and-query/indexing/#index-json-arrays-as-geo" >}}) and [VECTOR]({{< relref "develop/ai/search-and-query/indexing/#index-json-arrays-as-vector" >}})) defined by a [JSONPath]({{< relref "/develop/data-types/json/path" >}}) leading to an array or multiple scalar values. Support for [GEOSHAPE]({{< relref "/develop/ai/search-and-query/query/geo-spatial" >}}) queries was also introduced in this dialect. The primary difference between dialects version 2 and version 3 is that JSON is returned rather than scalars for multi-value attributes. Apart from specifying `DIALECT 3` at the end of a [`FT.SEARCH`]({{< relref "commands/ft.search/" >}}) command, there are no other syntactic changes. Dialect version 1 remains the default dialect. To use dialect version 3, append `DIALECT 3` to your query command. diff --git a/content/develop/interact/search-and-query/advanced-concepts/escaping.md b/content/develop/ai/search-and-query/advanced-concepts/escaping.md similarity index 77% rename from content/develop/interact/search-and-query/advanced-concepts/escaping.md rename to content/develop/ai/search-and-query/advanced-concepts/escaping.md index d8d07235a2..a0e4d28311 100644 --- a/content/develop/interact/search-and-query/advanced-concepts/escaping.md +++ b/content/develop/ai/search-and-query/advanced-concepts/escaping.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/advanced-concepts/escaping categories: - docs - develop @@ -27,8 +29,8 @@ During a search, the query system also tokenizes the query text and then simply compares the tokens from the query against the tokens stored for each document. Finding a match like this is much more efficient than pattern-matching on the whole text and also lets you use -[stemming]({{< relref "/develop/interact/search-and-query/advanced-concepts/stemming" >}}) and -[stop words]({{< relref "/develop/interact/search-and-query/advanced-concepts/stopwords" >}}) +[stemming]({{< relref "/develop/ai/search-and-query/advanced-concepts/stemming" >}}) and +[stop words]({{< relref "/develop/ai/search-and-query/advanced-concepts/stopwords" >}}) to improve the search even further. See this article about [Tokenization](https://queryunderstanding.com/tokenization-c8cdd6aef7ff) for a general introduction to the concepts. @@ -37,7 +39,7 @@ Redis uses a very simple tokenizer for documents and a slightly more sophisticat The sections below describe the rules for tokenizing text fields and queries. Note that -[Tag fields]({{< relref "/develop/interact/search-and-query/advanced-concepts/tags" >}}) +[Tag fields]({{< relref "/develop/ai/search-and-query/advanced-concepts/tags" >}}) are essentially text fields but they use a simpler form of tokenization, as described separately in the [Tokenization rules for tag fields](#tokenization-rules-for-tag-fields) section. @@ -58,9 +60,9 @@ separately in the ## Tokenization rules for tag fields -[Tag fields]({{< relref "/develop/interact/search-and-query/advanced-concepts/tags" >}}) interpret +[Tag fields]({{< relref "/develop/ai/search-and-query/advanced-concepts/tags" >}}) interpret a text field as a list of *tags* delimited by a -[separator]({{< relref "/develop/interact/search-and-query/advanced-concepts/tags#creating-a-tag-field" >}}) +[separator]({{< relref "/develop/ai/search-and-query/advanced-concepts/tags#creating-a-tag-field" >}}) character (which is a comma "," by default). The tokenizer simply splits the text wherever it finds the separator and so most punctuation marks and whitespace are valid characters within each tag token. The only @@ -68,12 +70,12 @@ changes that the tokenizer makes to the tags are: - Trimming whitespace at the start and end of the tag. Other whitespace in the tag text is left intact. - Converting Latin alphabet characters to lowercase. You can override this by adding the - [`CASESENSITIVE`]({{< relref "/develop/interact/search-and-query/basic-constructs/field-and-type-options#tag-fields" >}}) option in the indexing schema for the tag field. + [`CASESENSITIVE`]({{< relref "/develop/ai/search-and-query/indexing/field-and-type-options#tag-fields" >}}) option in the indexing schema for the tag field. This means that when you define a tag field, you don't need to escape any characters, except in the unusual case where you want leading or trailing spaces to be part of the tag text. However, you do need to escape certain characters in a *query* against a tag field. See the -[Query syntax]({{< relref "/develop/interact/search-and-query/advanced-concepts/query_syntax#tag-filters" >}}) and -[Exact match]({{< relref "/develop/interact/search-and-query/query/exact-match" >}}) pages for more information about escaping -and how to use [DIALECT 2]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects#dialect-2" >}}), which is required for +[Query syntax]({{< relref "/develop/ai/search-and-query/advanced-concepts/query_syntax#tag-filters" >}}) and +[Exact match]({{< relref "/develop/ai/search-and-query/query/exact-match" >}}) pages for more information about escaping +and how to use [DIALECT 2]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects#dialect-2" >}}), which is required for exact match queries involving tags. diff --git a/content/develop/interact/search-and-query/advanced-concepts/geo.md b/content/develop/ai/search-and-query/advanced-concepts/geo.md similarity index 92% rename from content/develop/interact/search-and-query/advanced-concepts/geo.md rename to content/develop/ai/search-and-query/advanced-concepts/geo.md index a5e2193d7b..4a31410017 100644 --- a/content/develop/interact/search-and-query/advanced-concepts/geo.md +++ b/content/develop/ai/search-and-query/advanced-concepts/geo.md @@ -1,4 +1,7 @@ --- +aliases: +- /develop/interact/search-and-query/advanced-concepts/geo +- /develop/ai/search-and-query/indexing/geo categories: - docs - develop @@ -52,7 +55,7 @@ or for games, simulations, and other artificial scenarios. ## Storing geospatial data Redis supports two different -[schema types]({{< relref "/develop/interact/search-and-query/basic-constructs/field-and-type-options" >}}) +[schema types]({{< relref "/develop/ai/search-and-query/indexing/field-and-type-options" >}}) for geospatial data: - [`GEO`](#geo): This uses a simple format where individual geospatial @@ -108,9 +111,9 @@ For example, the query below finds products within a 100 mile radius of Colorado FT.SEARCH productidx '@location:[-104.800644 38.846127 100 mi]' ``` -See [Geospatial queries]({{< relref "/develop/interact/search-and-query/query/geo-spatial" >}}) +See [Geospatial queries]({{< relref "/develop/ai/search-and-query/query/geo-spatial" >}}) for more information about the available query options and see -[Geospatial indexing]({{< relref "/develop/interact/search-and-query/indexing/geoindex" >}}) +[Geospatial indexing]({{< relref "/develop/ai/search-and-query/indexing/geoindex" >}}) for examples of indexing `GEO` fields. ## `GEOSHAPE` @@ -186,9 +189,9 @@ There are four query operations that you can use with `GEOSHAPE` fields: shape. See -[Geospatial queries]({{< relref "/develop/interact/search-and-query/query/geo-spatial" >}}) +[Geospatial queries]({{< relref "/develop/ai/search-and-query/query/geo-spatial" >}}) for more information about these query types and see -[Geospatial indexing]({{< relref "/develop/interact/search-and-query/indexing/geoindex" >}}) +[Geospatial indexing]({{< relref "/develop/ai/search-and-query/indexing/geoindex" >}}) for examples of indexing `GEOSHAPE` fields. ## Limitations of geographical coordinates diff --git a/content/develop/interact/search-and-query/advanced-concepts/highlight.md b/content/develop/ai/search-and-query/advanced-concepts/highlight.md similarity index 98% rename from content/develop/interact/search-and-query/advanced-concepts/highlight.md rename to content/develop/ai/search-and-query/advanced-concepts/highlight.md index 9340bf6111..d1a8408a8d 100644 --- a/content/develop/interact/search-and-query/advanced-concepts/highlight.md +++ b/content/develop/ai/search-and-query/advanced-concepts/highlight.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/advanced-concepts/highlight categories: - docs - develop diff --git a/content/develop/interact/search-and-query/advanced-concepts/phonetic_matching.md b/content/develop/ai/search-and-query/advanced-concepts/phonetic_matching.md similarity index 90% rename from content/develop/interact/search-and-query/advanced-concepts/phonetic_matching.md rename to content/develop/ai/search-and-query/advanced-concepts/phonetic_matching.md index 8678063b07..a9375d3a7c 100644 --- a/content/develop/interact/search-and-query/advanced-concepts/phonetic_matching.md +++ b/content/develop/ai/search-and-query/advanced-concepts/phonetic_matching.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/advanced-concepts/phonetic_matching categories: - docs - develop @@ -21,7 +23,7 @@ Phonetic matching is based on the use of a phonetic algorithm. A phonetic algori As of v1.4, Redis Query Engine, which is included in Redis Open Source, provides phonetic matching of text fields specified with the `PHONETIC` attribute. This causes the terms in such fields to be indexed both by their textual value as well as their phonetic approximation. -Performing a search on `PHONETIC` fields will, by default, also return results for phonetically similar terms. This behavior can be controlled with the [`$phonetic` query attribute]({{< relref "/develop/interact/search-and-query/query/#query-attributes" >}}). +Performing a search on `PHONETIC` fields will, by default, also return results for phonetically similar terms. This behavior can be controlled with the [`$phonetic` query attribute]({{< relref "/develop/ai/search-and-query/query/#query-attributes" >}}). ## Phonetic algorithms support diff --git a/content/develop/interact/search-and-query/advanced-concepts/query_syntax.md b/content/develop/ai/search-and-query/advanced-concepts/query_syntax.md similarity index 94% rename from content/develop/interact/search-and-query/advanced-concepts/query_syntax.md rename to content/develop/ai/search-and-query/advanced-concepts/query_syntax.md index 95f8e6bebe..17189011f7 100644 --- a/content/develop/interact/search-and-query/advanced-concepts/query_syntax.md +++ b/content/develop/ai/search-and-query/advanced-concepts/query_syntax.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/advanced-concepts/query_syntax categories: - docs - develop @@ -26,7 +28,7 @@ Any breaking changes to the syntax are introduced in a new dialect, while RediSearch continues to support older dialects. This means you can always choose the correct dialect to support the query you are using. See -[Query dialects]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects" >}}) +[Query dialects]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects" >}}) for full details of the dialects and the RediSearch versions that introduced them. {{< /note >}} @@ -62,7 +64,7 @@ You can use simple syntax for complex queries using these rules: * Georadius matches on geo fields with the syntax `@field:[{lon} {lat} {radius} {m|km|mi|ft}]`. * As of 2.6, range queries on vector fields with the syntax `@field:[VECTOR_RANGE {radius} $query_vec]`, where `query_vec` is given as a query parameter. * As of v2.4, k-nearest neighbors (KNN) queries on vector fields with or without pre-filtering with the syntax `{filter_query}=>[KNN {num} @field $query_vec]`. -* Tag field filters with the syntax `@field:{tag | tag | ...}`. See the full documentation on [tags]({{< relref "/develop/interact/search-and-query/advanced-concepts/tags" >}}). +* Tag field filters with the syntax `@field:{tag | tag | ...}`. See the full documentation on [tags]({{< relref "/develop/ai/search-and-query/advanced-concepts/tags" >}}). * Optional terms or clauses: `foo ~bar` means bar is optional but documents containing `bar` will rank higher. * Fuzzy matching on terms: `%hello%` means all terms with Levenshtein distance of 1 from it. Use multiple pairs of '%' brackets, up to three deep, to increase the Levenshtein distance. * An expression in a query can be wrapped in parentheses to disambiguate, for example, `(hello|hella) (world|werld)`. @@ -126,8 +128,8 @@ If a field in the schema is defined as NUMERIC, it is possible to use the FILTER ## Tag filters As of v0.91, you can use a special field type called a -[_tag field_]({{< relref "/develop/interact/search-and-query/advanced-concepts/tags" >}}), with simpler -[tokenization]({{< relref "/develop/interact/search-and-query/advanced-concepts/escaping#tokenization-rules-for-tag-fields" >}}) +[_tag field_]({{< relref "/develop/ai/search-and-query/advanced-concepts/tags" >}}), with simpler +[tokenization]({{< relref "/develop/ai/search-and-query/advanced-concepts/escaping#tokenization-rules-for-tag-fields" >}}) and encoding in the index. You can't access the values in these fields using a general fieldless search. Instead, you use special syntax: ``` @@ -143,7 +145,7 @@ Example: Tags can have multiple words or include other punctuation marks other than the field's separator (`,` by default). The following characters in tags should be escaped with a backslash (`\`): `$`, `{`, `}`, `\`, and `|`. {{% alert title="Note" color="warning" %}} -Before RediSearch 2.4, it was also recommended to escape spaces. The reason was that, if a multiword tag included stopwords, a syntax error was returned. So tags, like "to be or not to be" needed be escaped as "to\ be\ or\ not\ to\ be". For good measure, you also could escape all spaces within tags. Starting with RediSearch 2.4, using [`DIALECT 2`]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects#dialect-2" >}}) or greater you can use spaces in a `tag` query, even with stopwords. +Before RediSearch 2.4, it was also recommended to escape spaces. The reason was that, if a multiword tag included stopwords, a syntax error was returned. So tags, like "to be or not to be" needed be escaped as "to\ be\ or\ not\ to\ be". For good measure, you also could escape all spaces within tags. Starting with RediSearch 2.4, using [`DIALECT 2`]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects#dialect-2" >}}) or greater you can use spaces in a `tag` query, even with stopwords. {{% /alert %}} Notice that multiple tags in the same clause create a union of documents containing either tags. To create an intersection of documents containing all tags, you should repeat the tag filter several times. For example: @@ -182,7 +184,7 @@ Finally, there's new [`FT.SEARCH`]({{< relref "commands/ft.search/" >}}) syntax Here's an example using two stacked polygons that represent a box contained within a house. -{{< image filename="develop/interact/search-and-query/img/polygons.png" >}} +{{< image filename="develop/ai/search-and-query/img/polygons.png" >}} First, create an index using a `FLAT` `GEOSHAPE`, representing a 2D X Y coordinate system. @@ -281,7 +283,7 @@ The general syntax for hybrid query is `{some filter query}=>[ KNN {num|$num} @v `@vector_field:[VECTOR_RANGE 0.5 $query_vec]` -As of v2.4, the KNN vector search can be used at most once in a query, while, as of v2.6, the vector range filter can be used multiple times in a query. For more information on vector similarity syntax, see [Querying vector fields]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors" >}}), and [Vector search examples]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#vector-search-examples" >}}) sections. +As of v2.4, the KNN vector search can be used at most once in a query, while, as of v2.6, the vector range filter can be used multiple times in a query. For more information on vector similarity syntax, see [Querying vector fields]({{< relref "/develop/ai/search-and-query/vectors" >}}), and [Vector search examples]({{< relref "develop/ai/search-and-query/vectors#vector-search-examples" >}}) sections. ## Prefix matching @@ -388,7 +390,7 @@ The supported attributes are: As of v2.6.1, the query attributes syntax supports these additional attributes: * **$yield_distance_as**: specifies the distance field name, used for later sorting and/or returning, for clauses that yield some distance metric. It is currently supported for vector queries only (both KNN and range). -* **vector query params**: pass optional parameters for [vector queries]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#querying-vector-fields" >}}) in key-value format. +* **vector query params**: pass optional parameters for [vector queries]({{< relref "develop/ai/search-and-query/vectors#querying-vector-fields" >}}) in key-value format. ## A few query examples @@ -478,4 +480,4 @@ As of v2.6.1, the query attributes syntax supports these additional attributes: The query parser is built using the Lemon Parser Generator and a Ragel based lexer. You can see the `DIALECT 2` grammar definition [at this git repo](https://github.com/RediSearch/RediSearch/blob/master/src/query_parser/v2/parser.y). -You can also see the [search-default-dialect]({{< relref "/develop/interact/search-and-query/administration/configuration#search-default-dialect" >}}) configuration parameter. +You can also see the [search-default-dialect]({{< relref "/develop/ai/search-and-query/administration/configuration#search-default-dialect" >}}) configuration parameter. diff --git a/content/develop/interact/search-and-query/advanced-concepts/scoring.md b/content/develop/ai/search-and-query/advanced-concepts/scoring.md similarity index 93% rename from content/develop/interact/search-and-query/advanced-concepts/scoring.md rename to content/develop/ai/search-and-query/advanced-concepts/scoring.md index 45b3ac2082..c09bb64e80 100644 --- a/content/develop/interact/search-and-query/advanced-concepts/scoring.md +++ b/content/develop/ai/search-and-query/advanced-concepts/scoring.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/advanced-concepts/scoring categories: - docs - develop @@ -17,9 +19,9 @@ weight: 8 When searching, documents are scored based on their relevance to the query. The score is a floating point number between 0.0 and 1.0, where 1.0 is the highest score. The score is returned as part of the search results and can be used to sort the results. -Redis Open Source comes with a few very basic scoring functions to evaluate document relevance. They are all based on document scores and term frequency. This is regardless of the ability to use [sortable fields]({{< relref "/develop/interact/search-and-query/advanced-concepts/sorting" >}}). Scoring functions are specified by adding the `SCORER {scorer_name}` argument to a search query. +Redis Open Source comes with a few very basic scoring functions to evaluate document relevance. They are all based on document scores and term frequency. This is regardless of the ability to use [sortable fields]({{< relref "/develop/ai/search-and-query/advanced-concepts/sorting" >}}). Scoring functions are specified by adding the `SCORER {scorer_name}` argument to a search query. -If you prefer a custom scoring function, it is possible to add more functions using the [extension API]({{< relref "/develop/interact/search-and-query/administration/extensions" >}}). +If you prefer a custom scoring function, it is possible to add more functions using the [extension API]({{< relref "/develop/ai/search-and-query/administration/extensions" >}}). The following is a list of the pre-bundled scoring functions available in Redis and a short explanation about how they work. Each function is mentioned by registered name, which can be passed as a `SCORER` argument in [`FT.SEARCH`]({{< relref "/commands/ft.search/" >}}). diff --git a/content/develop/interact/search-and-query/advanced-concepts/sorting.md b/content/develop/ai/search-and-query/advanced-concepts/sorting.md similarity index 97% rename from content/develop/interact/search-and-query/advanced-concepts/sorting.md rename to content/develop/ai/search-and-query/advanced-concepts/sorting.md index 56e6dd45f2..39ad016d30 100644 --- a/content/develop/interact/search-and-query/advanced-concepts/sorting.md +++ b/content/develop/ai/search-and-query/advanced-concepts/sorting.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/advanced-concepts/sorting categories: - docs - develop diff --git a/content/develop/interact/search-and-query/advanced-concepts/spellcheck.md b/content/develop/ai/search-and-query/advanced-concepts/spellcheck.md similarity index 96% rename from content/develop/interact/search-and-query/advanced-concepts/spellcheck.md rename to content/develop/ai/search-and-query/advanced-concepts/spellcheck.md index f3e86e196a..ff7e7ab177 100644 --- a/content/develop/interact/search-and-query/advanced-concepts/spellcheck.md +++ b/content/develop/ai/search-and-query/advanced-concepts/spellcheck.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/advanced-concepts/spellcheck categories: - docs - develop diff --git a/content/develop/interact/search-and-query/advanced-concepts/stemming.md b/content/develop/ai/search-and-query/advanced-concepts/stemming.md similarity index 98% rename from content/develop/interact/search-and-query/advanced-concepts/stemming.md rename to content/develop/ai/search-and-query/advanced-concepts/stemming.md index 3815d400a0..8d7edaa2a6 100644 --- a/content/develop/interact/search-and-query/advanced-concepts/stemming.md +++ b/content/develop/ai/search-and-query/advanced-concepts/stemming.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/advanced-concepts/stemming categories: - docs - develop diff --git a/content/develop/interact/search-and-query/advanced-concepts/stopwords.md b/content/develop/ai/search-and-query/advanced-concepts/stopwords.md similarity index 96% rename from content/develop/interact/search-and-query/advanced-concepts/stopwords.md rename to content/develop/ai/search-and-query/advanced-concepts/stopwords.md index c93bdb4c60..78e292c840 100644 --- a/content/develop/interact/search-and-query/advanced-concepts/stopwords.md +++ b/content/develop/ai/search-and-query/advanced-concepts/stopwords.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/advanced-concepts/stopwords categories: - docs - develop diff --git a/content/develop/interact/search-and-query/advanced-concepts/synonyms.md b/content/develop/ai/search-and-query/advanced-concepts/synonyms.md similarity index 97% rename from content/develop/interact/search-and-query/advanced-concepts/synonyms.md rename to content/develop/ai/search-and-query/advanced-concepts/synonyms.md index b7324ea501..b29e608238 100644 --- a/content/develop/interact/search-and-query/advanced-concepts/synonyms.md +++ b/content/develop/ai/search-and-query/advanced-concepts/synonyms.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/advanced-concepts/synonyms categories: - docs - develop diff --git a/content/develop/interact/search-and-query/advanced-concepts/tags.md b/content/develop/ai/search-and-query/advanced-concepts/tags.md similarity index 89% rename from content/develop/interact/search-and-query/advanced-concepts/tags.md rename to content/develop/ai/search-and-query/advanced-concepts/tags.md index 08da7f11cc..17e7cedc22 100644 --- a/content/develop/interact/search-and-query/advanced-concepts/tags.md +++ b/content/develop/ai/search-and-query/advanced-concepts/tags.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/advanced-concepts/tags categories: - docs - develop @@ -19,14 +21,14 @@ Tag fields are similar to full-text fields but they interpret the text as a simp list of *tags* delimited by a [separator](#creating-a-tag-field) character (which is a comma "," by default). This limitation means that tag fields can use simpler -[tokenization]({{< relref "/develop/interact/search-and-query/advanced-concepts/escaping" >}}) +[tokenization]({{< relref "/develop/ai/search-and-query/advanced-concepts/escaping" >}}) and encoding in the index, which is more efficient than full-text indexing. The values in tag fields cannot be accessed by general field-less search and can be used only with a special syntax. The main differences between tag and full-text fields are: -1. [Tokenization]({{< relref "/develop/interact/search-and-query/advanced-concepts/escaping#tokenization-rules-for-tag-fields" >}}) +1. [Tokenization]({{< relref "/develop/ai/search-and-query/advanced-concepts/escaping#tokenization-rules-for-tag-fields" >}}) is very simple for tags. 1. Stemming is not performed on tag indexes. @@ -132,7 +134,7 @@ A tag field can contain any punctuation characters except for the field separato You can use punctuation without escaping when you *define* a tag field, but you typically need to escape certain characters when you *query* the field because the query syntax itself uses the same characters. -(See [Query syntax]({{< relref "/develop/interact/search-and-query/advanced-concepts/query_syntax#tag-filters" >}}) +(See [Query syntax]({{< relref "/develop/ai/search-and-query/advanced-concepts/query_syntax#tag-filters" >}}) for the full set of characters that require escaping.) For example, given the following index: @@ -161,7 +163,7 @@ Programming languages commonly use this convention also.) You can include spaces in a tag filter without escaping *unless* you are using a version of RediSearch earlier than v2.4 or you are using -[query dialect 1]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects#dialect-1" >}}). +[query dialect 1]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects#dialect-1" >}}). See -[Query syntax]({{< relref "/develop/interact/search-and-query/advanced-concepts/query_syntax#tag-filters" >}}) +[Query syntax]({{< relref "/develop/ai/search-and-query/advanced-concepts/query_syntax#tag-filters" >}}) for a full explanation. diff --git a/content/develop/interact/search-and-query/best-practices/_index.md b/content/develop/ai/search-and-query/best-practices/_index.md similarity index 65% rename from content/develop/interact/search-and-query/best-practices/_index.md rename to content/develop/ai/search-and-query/best-practices/_index.md index 129818f6e1..58c602292c 100644 --- a/content/develop/interact/search-and-query/best-practices/_index.md +++ b/content/develop/ai/search-and-query/best-practices/_index.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/best-practices/_index categories: - docs - develop @@ -7,5 +9,5 @@ categories: description: Redis Query Engine best practices linkTitle: Best practices title: Best practices -weight: 8 +weight: 9 --- diff --git a/content/develop/interact/search-and-query/best-practices/dev-to-prod-best-practices.md b/content/develop/ai/search-and-query/best-practices/dev-to-prod-best-practices.md similarity index 90% rename from content/develop/interact/search-and-query/best-practices/dev-to-prod-best-practices.md rename to content/develop/ai/search-and-query/best-practices/dev-to-prod-best-practices.md index b0ca0c2d52..1932a989ad 100644 --- a/content/develop/interact/search-and-query/best-practices/dev-to-prod-best-practices.md +++ b/content/develop/ai/search-and-query/best-practices/dev-to-prod-best-practices.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/best-practices/dev-to-prod-best-practices Title: Move from Development to Production with Redis Query Engine alwaysopen: false categories: @@ -16,7 +18,7 @@ Transitioning a Redis Open Source with Redis Query Engine (RQE) environment from ## Configuration parameter considerations -RQE offers several configurable parameters that influence query results and performance. While a full list of these parameters and their functions can be found [here]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects" >}}), this section highlights the most commonly adjusted parameters for production environments. +RQE offers several configurable parameters that influence query results and performance. While a full list of these parameters and their functions can be found [here]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects" >}}), this section highlights the most commonly adjusted parameters for production environments. ### 1. `TIMEOUT` @@ -55,9 +57,9 @@ RQE offers several configurable parameters that influence query results and perf ### 4. `DEFAULT_DIALECT` - Purpose: specifies the default query dialect used by [`FT.SEARCH`]({{< relref "commands/ft.search" >}}) and [`FT.AGGREGATE`]({{< relref "commands/ft.aggregate" >}}) commands. -- Default: [Dialect 1]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects" >}}). +- Default: [Dialect 1]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects" >}}). - Recommendations: - - Update the default to [**Dialect 4**]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects#dialect-4" >}}) for better performance and access to advanced features. + - Update the default to [**Dialect 4**]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects#dialect-4" >}}) for better performance and access to advanced features. - Individual commands can override this parameter if necessary, but setting a higher default ensures consistent performance across queries. ## Testing diff --git a/content/develop/interact/search-and-query/best-practices/index-mgmt-best-practices.md b/content/develop/ai/search-and-query/best-practices/index-mgmt-best-practices.md similarity index 85% rename from content/develop/interact/search-and-query/best-practices/index-mgmt-best-practices.md rename to content/develop/ai/search-and-query/best-practices/index-mgmt-best-practices.md index e1feab1315..4280aa4a26 100644 --- a/content/develop/interact/search-and-query/best-practices/index-mgmt-best-practices.md +++ b/content/develop/ai/search-and-query/best-practices/index-mgmt-best-practices.md @@ -40,17 +40,17 @@ By following the strategies outlined in this guide, you can: Planning your indexes strategically requires understanding your application’s query patterns and tailoring indexes to match. Begin by identifying the types of searches your application performs—such as full-text search, range queries, or geospatial lookups—and the fields involved. -Categorize fields based on their purpose: searchable fields (e.g., [`TEXT`]({{< relref "/develop/interact/search-and-query/basic-constructs/field-and-type-options#text-fields" >}}) for full-text searches), filterable fields (e.g., [`TAG`]({{< relref "/develop/interact/search-and-query/basic-constructs/field-and-type-options#tag-fields" >}}) for exact match searches), and sortable fields (e.g., [`NUMERIC`]({{< relref "/develop/interact/search-and-query/basic-constructs/field-and-type-options#numeric-fields" >}}) for range queries or sorting). +Categorize fields based on their purpose: searchable fields (e.g., [`TEXT`]({{< relref "/develop/ai/search-and-query/indexing/field-and-type-options#text-fields" >}}) for full-text searches), filterable fields (e.g., [`TAG`]({{< relref "/develop/ai/search-and-query/indexing/field-and-type-options#tag-fields" >}}) for exact match searches), and sortable fields (e.g., [`NUMERIC`]({{< relref "/develop/ai/search-and-query/indexing/field-and-type-options#numeric-fields" >}}) for range queries or sorting). Match field types to their intended use and avoid indexing fields that are rarely queried to conserve resources. Here's the list of index types: -- [`TEXT`]({{< relref "/develop/interact/search-and-query/basic-constructs/field-and-type-options#text-fields" >}}): use `TEXT` for free-text searches and set weights if some fields are more important. -- [`TAG`]({{< relref "/develop/interact/search-and-query/basic-constructs/field-and-type-options#tag-fields" >}}): use `TAG` for categorical data (e.g., product categories) that benefit from exact matching and filtering. -- [`NUMERIC`]({{< relref "/develop/interact/search-and-query/basic-constructs/field-and-type-options#numeric-fields" >}}): use `NUMERIC` for numeric ranges (e.g., prices, timestamps). -- [`GEO`]({{< relref "/develop/interact/search-and-query/basic-constructs/field-and-type-options#geo-fields" >}}): use `GEO` for geospatial coordinates (e.g., latitude/longitude). -- [`GEOSHAPE`]({{< relref "/develop/interact/search-and-query/basic-constructs/field-and-type-options#geoshape-fields" >}}): use `GEOSHAPE` to represent locations as points, but also to define shapes and query the interactions between points and shapes (e.g., to find all points that are contained within an enclosing shape). -- [`VECTOR`]({{< relref "/develop/interact/search-and-query/basic-constructs/field-and-type-options#vector-fields" >}}): use `VECTOR` for high-dimensional similarity searches. +- [`TEXT`]({{< relref "/develop/ai/search-and-query/indexing/field-and-type-options#text-fields" >}}): use `TEXT` for free-text searches and set weights if some fields are more important. +- [`TAG`]({{< relref "/develop/ai/search-and-query/indexing/field-and-type-options#tag-fields" >}}): use `TAG` for categorical data (e.g., product categories) that benefit from exact matching and filtering. +- [`NUMERIC`]({{< relref "/develop/ai/search-and-query/indexing/field-and-type-options#numeric-fields" >}}): use `NUMERIC` for numeric ranges (e.g., prices, timestamps). +- [`GEO`]({{< relref "/develop/ai/search-and-query/indexing/field-and-type-options#geo-fields" >}}): use `GEO` for geospatial coordinates (e.g., latitude/longitude). +- [`GEOSHAPE`]({{< relref "/develop/ai/search-and-query/indexing/field-and-type-options#geoshape-fields" >}}): use `GEOSHAPE` to represent locations as points, but also to define shapes and query the interactions between points and shapes (e.g., to find all points that are contained within an enclosing shape). +- [`VECTOR`]({{< relref "/develop/ai/search-and-query/indexing/field-and-type-options#vector-fields" >}}): use `VECTOR` for high-dimensional similarity searches. -See [these pages]({{< relref "/develop/interact/search-and-query/query" >}}) for discussions and examples on how best to use these index types. +See [these pages]({{< relref "/develop/ai/search-and-query/query" >}}) for discussions and examples on how best to use these index types. Next, simulate queries on a sample dataset to identify potential bottlenecks. Use tools like [`FT.PROFILE`]({{< relref "commands/ft.profile" >}}) to analyze query execution and refine your schema if needed. diff --git a/content/develop/interact/search-and-query/best-practices/scalable-query-best-practices.md b/content/develop/ai/search-and-query/best-practices/scalable-query-best-practices.md similarity index 83% rename from content/develop/interact/search-and-query/best-practices/scalable-query-best-practices.md rename to content/develop/ai/search-and-query/best-practices/scalable-query-best-practices.md index 39b23bd510..4cc2084d32 100644 --- a/content/develop/interact/search-and-query/best-practices/scalable-query-best-practices.md +++ b/content/develop/ai/search-and-query/best-practices/scalable-query-best-practices.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/best-practices/scalable-query-best-practices Title: Best practices for Redis Query Engine performance alwaysopen: false categories: @@ -28,21 +30,21 @@ Below are some basic steps to ensure good performance of the Redis Query Engine ## Indexing considerations ### General -- Favor [`TAG`]({{< relref "/develop/interact/search-and-query/basic-constructs/field-and-type-options#tag-fields" >}}) over [`NUMERIC`]({{< relref "/develop/interact/search-and-query/basic-constructs/field-and-type-options#numeric-fields" >}}) for use cases that only require matching. -- Favor [`TAG`]({{< relref "/develop/interact/search-and-query/basic-constructs/field-and-type-options#tag-fields" >}}) over [`TEXT`]({{< relref "/develop/interact/search-and-query/basic-constructs/field-and-type-options#text-fields" >}}) for use cases that don’t require full-text capabilities (pure match). +- Favor [`TAG`]({{< relref "/develop/ai/search-and-query/indexing/field-and-type-options#tag-fields" >}}) over [`NUMERIC`]({{< relref "/develop/ai/search-and-query/indexing/field-and-type-options#numeric-fields" >}}) for use cases that only require matching. +- Favor [`TAG`]({{< relref "/develop/ai/search-and-query/indexing/field-and-type-options#tag-fields" >}}) over [`TEXT`]({{< relref "/develop/ai/search-and-query/indexing/field-and-type-options#text-fields" >}}) for use cases that don’t require full-text capabilities (pure match). ### Non-threaded search - Put only those fields used in your queries in the index. -- Only make fields [`SORTABLE`]({{< relref "/develop/interact/search-and-query/advanced-concepts/sorting" >}}) if they are used in [`SORTBY`]({{< relref "/develop/interact/search-and-query/advanced-concepts/sorting#specifying-sortby" >}}) +- Only make fields [`SORTABLE`]({{< relref "/develop/ai/search-and-query/advanced-concepts/sorting" >}}) if they are used in [`SORTBY`]({{< relref "/develop/ai/search-and-query/advanced-concepts/sorting#specifying-sortby" >}}) queries. -- Use [`DIALECT 2`]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects#dialect-2" >}}). +- Use [`DIALECT 2`]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects#dialect-2" >}}). ### Threaded (query performance factor or QPF) search - Put both query fields and any projected fields (`RETURN` or `LOAD`) in the index. - Set all fields to `SORTABLE`. -- Set TAG fields to [UNF]({{< relref "/develop/interact/search-and-query/advanced-concepts/sorting#normalization-unf-option" >}}). +- Set TAG fields to [UNF]({{< relref "/develop/ai/search-and-query/advanced-concepts/sorting#normalization-unf-option" >}}). - Optional: Set `TEXT` fields to `NOSTEM` if the use case will support it. -- Use [`DIALECT 2`]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects#dialect-2" >}}). +- Use [`DIALECT 2`]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects#dialect-2" >}}). ## Query optimization @@ -147,4 +149,4 @@ Improvements: - Targeted projection: the `LOAD` clause specifies only essential fields (`id, t, name, lastname, loc, ver`), reducing memory and network overhead. - Limited results: the `LIMIT` clause ensures the query retrieves only the first 10 results, avoiding large result sets. -- [`DIALECT 2`]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects#dialect-2" >}}): enables the latest RQE syntax and features, ensuring compatibility with modern capabilities. +- [`DIALECT 2`]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects#dialect-2" >}}): enables the latest RQE syntax and features, ensuring compatibility with modern capabilities. diff --git a/content/develop/interact/search-and-query/concurrency.png b/content/develop/ai/search-and-query/concurrency.png similarity index 100% rename from content/develop/interact/search-and-query/concurrency.png rename to content/develop/ai/search-and-query/concurrency.png diff --git a/content/develop/interact/search-and-query/deprecated/_index.md b/content/develop/ai/search-and-query/deprecated/_index.md similarity index 73% rename from content/develop/interact/search-and-query/deprecated/_index.md rename to content/develop/ai/search-and-query/deprecated/_index.md index ca0014b3ca..9ee0a8fa87 100644 --- a/content/develop/interact/search-and-query/deprecated/_index.md +++ b/content/develop/ai/search-and-query/deprecated/_index.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/deprecated/_index categories: - docs - develop diff --git a/content/develop/interact/search-and-query/deprecated/development.md b/content/develop/ai/search-and-query/deprecated/development.md similarity index 99% rename from content/develop/interact/search-and-query/deprecated/development.md rename to content/develop/ai/search-and-query/deprecated/development.md index a7b7ed3443..3663e9acfb 100644 --- a/content/develop/interact/search-and-query/deprecated/development.md +++ b/content/develop/ai/search-and-query/deprecated/development.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/deprecated/development categories: - docs - develop diff --git a/content/develop/interact/search-and-query/deprecated/payloads.md b/content/develop/ai/search-and-query/deprecated/payloads.md similarity index 97% rename from content/develop/interact/search-and-query/deprecated/payloads.md rename to content/develop/ai/search-and-query/deprecated/payloads.md index e6956b2196..72e8d70189 100644 --- a/content/develop/interact/search-and-query/deprecated/payloads.md +++ b/content/develop/ai/search-and-query/deprecated/payloads.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/deprecated/payloads categories: - docs - develop diff --git a/content/develop/interact/search-and-query/img/favicon.png b/content/develop/ai/search-and-query/img/favicon.png similarity index 100% rename from content/develop/interact/search-and-query/img/favicon.png rename to content/develop/ai/search-and-query/img/favicon.png diff --git a/content/develop/interact/search-and-query/img/latency.png b/content/develop/ai/search-and-query/img/latency.png similarity index 100% rename from content/develop/interact/search-and-query/img/latency.png rename to content/develop/ai/search-and-query/img/latency.png diff --git a/content/develop/interact/search-and-query/img/logo.svg b/content/develop/ai/search-and-query/img/logo.svg similarity index 100% rename from content/develop/interact/search-and-query/img/logo.svg rename to content/develop/ai/search-and-query/img/logo.svg diff --git a/content/develop/interact/search-and-query/img/logo_small.png b/content/develop/ai/search-and-query/img/logo_small.png similarity index 100% rename from content/develop/interact/search-and-query/img/logo_small.png rename to content/develop/ai/search-and-query/img/logo_small.png diff --git a/content/develop/interact/search-and-query/img/newarchitecture.png b/content/develop/ai/search-and-query/img/newarchitecture.png similarity index 100% rename from content/develop/interact/search-and-query/img/newarchitecture.png rename to content/develop/ai/search-and-query/img/newarchitecture.png diff --git a/content/develop/interact/search-and-query/img/pipeline.png b/content/develop/ai/search-and-query/img/pipeline.png similarity index 100% rename from content/develop/interact/search-and-query/img/pipeline.png rename to content/develop/ai/search-and-query/img/pipeline.png diff --git a/content/develop/interact/search-and-query/img/polygons.png b/content/develop/ai/search-and-query/img/polygons.png similarity index 100% rename from content/develop/interact/search-and-query/img/polygons.png rename to content/develop/ai/search-and-query/img/polygons.png diff --git a/content/develop/interact/search-and-query/img/throughput.png b/content/develop/ai/search-and-query/img/throughput.png similarity index 100% rename from content/develop/interact/search-and-query/img/throughput.png rename to content/develop/ai/search-and-query/img/throughput.png diff --git a/content/develop/interact/search-and-query/indexing/_index.md b/content/develop/ai/search-and-query/indexing/_index.md similarity index 97% rename from content/develop/interact/search-and-query/indexing/_index.md rename to content/develop/ai/search-and-query/indexing/_index.md index 36e692f398..caf1c38a2a 100644 --- a/content/develop/interact/search-and-query/indexing/_index.md +++ b/content/develop/ai/search-and-query/indexing/_index.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/indexing/_index categories: - docs - develop @@ -158,7 +160,7 @@ And lastly, search for the Bluetooth headphones that are most similar to an imag 4) "{\"name\":\"Wireless earbuds\",\"description\":\"Wireless Bluetooth in-ear headphones\",\"connection\":{\"wireless\":true,\"connection\":\"Bluetooth\"},\"price\":64.99,\"stock\":17,\"colors\":[\"black\",\"white\"],\"embedding\":[-0.7,-0.51,0.88,0.14]}" ``` -For more information about search queries, see [Search query syntax]({{< relref "/develop/interact/search-and-query/advanced-concepts/query_syntax" >}}). +For more information about search queries, see [Search query syntax]({{< relref "/develop/ai/search-and-query/advanced-concepts/query_syntax" >}}). {{% alert title="Note" color="info" %}} [`FT.SEARCH`]({{< relref "commands/ft.search/" >}}) queries require `attribute` modifiers. Don't use JSONPath expressions in queries because the query parser doesn't fully support them. @@ -306,9 +308,9 @@ When JSONPath leads to multiple numerical values: You can use `GEO` and `GEOSHAPE` fields to store geospatial data, such as geographical locations and geometric shapes. See -[Geospatial indexing]({{< relref "/develop/interact/search-and-query/indexing/geoindex" >}}) +[Geospatial indexing]({{< relref "/develop/ai/search-and-query/indexing/geoindex" >}}) to learn how to use these schema types and see the -[Geospatial]({{< relref "/develop/interact/search-and-query/advanced-concepts/geo" >}}) +[Geospatial]({{< relref "/develop/ai/search-and-query/advanced-concepts/geo" >}}) reference page for an introduction to their format and usage. ## Index JSON arrays as VECTOR @@ -378,7 +380,7 @@ Now you can search for the two headphones that are most similar to an image embe ``` Note that `0.771500051022` is the L2 distance between the query vector and `[-0.8,-0.15,0.33,-0.01]`, which is the second element in the embedding array, and it is lower than the L2 distance between the query vector and `[-0.7,-0.51,0.88,0.14]`, which is the first element in the embedding array. -For more information on vector similarity syntax, see [Vector fields]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors" >}}). +For more information on vector similarity syntax, see [Vector fields]({{< relref "/develop/ai/search-and-query/vectors" >}}). ## Index JSON objects @@ -496,7 +498,7 @@ This query returns the field as the alias `"stock"` instead of the JSONPath expr ### Highlight search terms -You can [highlight]({{< relref "/develop/interact/search-and-query/advanced-concepts/highlight" >}}) relevant search terms in any indexed `TEXT` attribute. +You can [highlight]({{< relref "/develop/ai/search-and-query/advanced-concepts/highlight" >}}) relevant search terms in any indexed `TEXT` attribute. For [`FT.SEARCH`]({{< relref "commands/ft.search/" >}}), you have to explicitly set which attributes you want highlighted after the `RETURN` and `HIGHLIGHT` parameters. @@ -525,7 +527,7 @@ For example, highlight the word "bluetooth" with bold HTML tags in item names an ## Aggregate with JSONPath -You can use [aggregation]({{< relref "/develop/interact/search-and-query/advanced-concepts/aggregations" >}}) to generate statistics or build facet queries. +You can use [aggregation]({{< relref "/develop/ai/search-and-query/advanced-concepts/aggregations" >}}) to generate statistics or build facet queries. The `LOAD` option accepts [JSONPath]({{< relref "/develop/data-types/json/path" >}}) expressions. You can use any value in the pipeline, even if the value is not indexed. diff --git a/content/develop/interact/search-and-query/basic-constructs/field-and-type-options.md b/content/develop/ai/search-and-query/indexing/field-and-type-options.md similarity index 95% rename from content/develop/interact/search-and-query/basic-constructs/field-and-type-options.md rename to content/develop/ai/search-and-query/indexing/field-and-type-options.md index 6380aaaf91..3940a1912d 100644 --- a/content/develop/interact/search-and-query/basic-constructs/field-and-type-options.md +++ b/content/develop/ai/search-and-query/indexing/field-and-type-options.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/ai/search-and-query/basic-constructs/field-and-type-options categories: - docs - develop @@ -59,7 +61,7 @@ You can also use the following query syntax to perform more complex numeric quer | | @field!=val | Not equal \* | | x == val1 or x == val2 | "@field==val1 \| @field==val2" | Grouping with a bar denotes OR relationship \* | -\* New syntax as of RediSearch v2.10. Requires [`DIALECT 2`]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects" >}}#dialect-2). +\* New syntax as of RediSearch v2.10. Requires [`DIALECT 2`]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects" >}}#dialect-2). ## Geo fields @@ -68,7 +70,7 @@ Geo fields are used to store geographical coordinates such as longitude and lati Redis Query Engine also supports [geoshape fields](#geoshape-fields) for more advanced geospatial queries. See the -[Geospatial]({{< relref "/develop/interact/search-and-query/advanced-concepts/geo" >}}) +[Geospatial]({{< relref "/develop/ai/search-and-query/advanced-concepts/geo" >}}) reference page for an introduction to the format and usage of both schema types. You can add geo fields to the schema in [`FT.CREATE`]({{< relref "commands/ft.create/" >}}) using this syntax: @@ -88,7 +90,7 @@ FT.SEARCH cities "@coords:[2.34 48.86 1000 km]" ``` See -[Geospatial queries]({{< relref "/develop/interact/search-and-query/query/geo-spatial" >}}) +[Geospatial queries]({{< relref "/develop/ai/search-and-query/query/geo-spatial" >}}) for more information and code examples. ## Geoshape fields @@ -103,7 +105,7 @@ such as finding all office locations in a specified region or finding all rooms in a building that fall within range of a wi-fi router. See the -[Geospatial]({{< relref "/develop/interact/search-and-query/advanced-concepts/geo" >}}) +[Geospatial]({{< relref "/develop/ai/search-and-query/advanced-concepts/geo" >}}) reference page for an introduction to the format and usage of both the geoshape and geo schema types. @@ -135,7 +137,7 @@ FT.SEARCH idx "(@geom:[CONTAINS $qshape])" PARAMS 2 qshape "POINT (2 2)" RETURN ``` See -[Geospatial queries]({{< relref "/develop/interact/search-and-query/query/geo-spatial" >}}) +[Geospatial queries]({{< relref "/develop/ai/search-and-query/query/geo-spatial" >}}) for more information and code examples. ## Vector fields @@ -170,7 +172,7 @@ Notice that `{count}` represents the total number of attribute pairs passed in t * `{attribute_name} {attribute_value}` are algorithm attributes for the creation of the vector index. Every algorithm has its own mandatory and optional attributes. -For more information about vector fields, see [vector fields]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors" >}}). +For more information about vector fields, see [vector fields]({{< relref "/develop/ai/search-and-query/vectors" >}}). ## Tag fields @@ -194,7 +196,7 @@ You can search for documents with specific tags using the `@:{} FT.SEARCH idx "@tags:{blue}" ``` -For more information about tag fields, see [Tag Fields]({{< relref "/develop/interact/search-and-query/advanced-concepts/tags" >}}). +For more information about tag fields, see [Tag Fields]({{< relref "/develop/ai/search-and-query/advanced-concepts/tags" >}}). ## Text fields @@ -217,7 +219,7 @@ where - `dm:pt` - double metaphone for Portuguese - `dm:es` - double metaphone for Spanish - For more information, see [Phonetic Matching]({{< relref "/develop/interact/search-and-query/advanced-concepts/phonetic_matching" >}}). + For more information, see [Phonetic Matching]({{< relref "/develop/ai/search-and-query/advanced-concepts/phonetic_matching" >}}). - `SORTABLE` indicates that the field can be sorted. This is useful for performing range queries and sorting search results based on text values. - `NOINDEX` indicates that the field is not indexed. This is useful for storing text that you don't want to search for, but that you still want to retrieve in search results. - `WITHSUFFIXTRIE` indicates that the field will be indexed with a suffix trie. The index will keep a suffix trie with all terms which match the suffix. It is used to optimize `contains (*foo*)` and `suffix (*foo)` queries. Otherwise, a brute-force search on the trie is performed. If a suffix trie exists for some fields, these queries will be disabled for other fields. diff --git a/content/develop/interact/search-and-query/indexing/geoindex.md b/content/develop/ai/search-and-query/indexing/geoindex.md similarity index 90% rename from content/develop/interact/search-and-query/indexing/geoindex.md rename to content/develop/ai/search-and-query/indexing/geoindex.md index e9429f137b..3b24434467 100644 --- a/content/develop/interact/search-and-query/indexing/geoindex.md +++ b/content/develop/ai/search-and-query/indexing/geoindex.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/indexing/geoindex categories: - docs - develop @@ -16,7 +18,7 @@ weight: 3 --- Redis supports two different -[schema types]({{< relref "/develop/interact/search-and-query/basic-constructs/field-and-type-options" >}}) +[schema types]({{< relref "/develop/ai/search-and-query/indexing/field-and-type-options" >}}) for geospatial data: - [`GEO`](#geo): This uses a simple format where individual geospatial @@ -27,7 +29,7 @@ for geospatial data: coordinates or Cartesian coordinates. The sections below explain how to index these schema types. See the -[Geospatial]({{< relref "/develop/interact/search-and-query/advanced-concepts/geo" >}}) +[Geospatial]({{< relref "/develop/ai/search-and-query/advanced-concepts/geo" >}}) reference page for a full description of both types. ## `GEO` @@ -62,7 +64,7 @@ Denver, but a radius of 200 miles would also include the location in Fort Collin 2) "{\"description\":\"Navy Blue Slippers\",\"price\":45.99,\"city\":\"Denver\",\"location\":\"-104.991531, 39.742043\"}" {{< /clients-example >}} -See [Geospatial queries]({{< relref "/develop/interact/search-and-query/query/geo-spatial" >}}) +See [Geospatial queries]({{< relref "/develop/ai/search-and-query/query/geo-spatial" >}}) for more information about the available options. ## `GEOSHAPE` @@ -106,5 +108,5 @@ of the green square but omits the green square itself: You can also run queries to find whether shapes in the index completely contain or overlap each other. See -[Geospatial queries]({{< relref "/develop/interact/search-and-query/query/geo-spatial" >}}) +[Geospatial queries]({{< relref "/develop/ai/search-and-query/query/geo-spatial" >}}) for more information. diff --git a/content/develop/interact/search-and-query/basic-constructs/schema-definition.md b/content/develop/ai/search-and-query/indexing/schema-definition.md similarity index 97% rename from content/develop/interact/search-and-query/basic-constructs/schema-definition.md rename to content/develop/ai/search-and-query/indexing/schema-definition.md index a0571edad0..68cbc69667 100644 --- a/content/develop/interact/search-and-query/basic-constructs/schema-definition.md +++ b/content/develop/ai/search-and-query/indexing/schema-definition.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/ai/search-and-query/basic-constructs/schema-definition categories: - docs - develop diff --git a/content/develop/interact/search-and-query/logo.png b/content/develop/ai/search-and-query/logo.png similarity index 100% rename from content/develop/interact/search-and-query/logo.png rename to content/develop/ai/search-and-query/logo.png diff --git a/content/develop/interact/search-and-query/logo_small.png b/content/develop/ai/search-and-query/logo_small.png similarity index 100% rename from content/develop/interact/search-and-query/logo_small.png rename to content/develop/ai/search-and-query/logo_small.png diff --git a/content/develop/interact/search-and-query/query/_index.md b/content/develop/ai/search-and-query/query/_index.md similarity index 74% rename from content/develop/interact/search-and-query/query/_index.md rename to content/develop/ai/search-and-query/query/_index.md index aaaab886f3..f7ccd95806 100644 --- a/content/develop/interact/search-and-query/query/_index.md +++ b/content/develop/ai/search-and-query/query/_index.md @@ -11,8 +11,8 @@ categories: - clients description: Understand how to query, search, and aggregate Redis data hideListLinks: true -linkTitle: Query -title: Query data +linkTitle: Querying +title: Querying data weight: 5 --- @@ -33,13 +33,13 @@ Here is a short SQL comparison using the [bicycle dataset](./data/bicycles.txt): The following articles provide an overview of how to query data with the [FT.SEARCH]({{< relref "commands/ft.search" >}}) command: -* [Exact match queries]({{< relref "/develop/interact/search-and-query/query/exact-match" >}}) -* [Range queries]({{< relref "/develop/interact/search-and-query/query/range" >}}) -* [Full-text search ]({{< relref "/develop/interact/search-and-query/query/full-text" >}}) -* [Geospatial queries]({{< relref "/develop/interact/search-and-query/query/geo-spatial" >}}) -* [Vector search]({{< relref "/develop/interact/search-and-query/query/vector-search" >}}) -* [Combined queries]({{< relref "/develop/interact/search-and-query/query/combined" >}}) +* [Exact match queries]({{< relref "/develop/ai/search-and-query/query/exact-match" >}}) +* [Range queries]({{< relref "/develop/ai/search-and-query/query/range" >}}) +* [Full-text search ]({{< relref "/develop/ai/search-and-query/query/full-text" >}}) +* [Geospatial queries]({{< relref "/develop/ai/search-and-query/query/geo-spatial" >}}) +* [Vector search]({{< relref "/develop/ai/search-and-query/query/vector-search" >}}) +* [Combined queries]({{< relref "/develop/ai/search-and-query/query/combined" >}}) You can find further details about aggregation queries with [FT.AGGREGATE]({{< relref "commands/ft.aggregate" >}}) in the following article: -* [Aggregation queries]({{< relref "/develop/interact/search-and-query/query/aggregation" >}}) \ No newline at end of file +* [Aggregation queries]({{< relref "/develop/ai/search-and-query/query/aggregation" >}}) \ No newline at end of file diff --git a/content/develop/interact/search-and-query/query/aggregation.md b/content/develop/ai/search-and-query/query/aggregation.md similarity index 92% rename from content/develop/interact/search-and-query/query/aggregation.md rename to content/develop/ai/search-and-query/query/aggregation.md index 14ad7d3934..1ed4757fec 100644 --- a/content/develop/interact/search-and-query/query/aggregation.md +++ b/content/develop/ai/search-and-query/query/aggregation.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/query/aggregation categories: - docs - develop @@ -21,7 +23,7 @@ An aggregation query allows you to perform the following actions: - Group data based on field values. - Apply aggregation functions on the grouped data. -This article explains the basic usage of the [FT.AGGREGATE]({{< relref "commands/ft.aggregate" >}}) command. For further details, see the [command specification]({{< relref "commands/ft.aggregate" >}}) and the [aggregations reference documentation]({{< relref "/develop/interact/search-and-query/advanced-concepts/aggregations" >}}). +This article explains the basic usage of the [FT.AGGREGATE]({{< relref "commands/ft.aggregate" >}}) command. For further details, see the [command specification]({{< relref "commands/ft.aggregate" >}}) and the [aggregations reference documentation]({{< relref "/develop/ai/search-and-query/advanced-concepts/aggregations" >}}). The examples in this article use a schema with the following fields: @@ -40,7 +42,7 @@ FT.AGGREGATE index "query_expr" LOAD n "field_1" .. "field_n" APPLY "function_ex Here is a more detailed explanation of the query syntax: -1. **Query expression**: you can use the same query expressions as you would use with the [`FT.SEARCH`]({{< relref "commands/ft.search/" >}}) command. You can substitute `query_expr` with any of the expressions explained in the articles of this [query topic]({{< relref "/develop/interact/search-and-query/query/" >}}). Vector search queries are an exception. You can't combine a vector search with an aggregation query. +1. **Query expression**: you can use the same query expressions as you would use with the [`FT.SEARCH`]({{< relref "commands/ft.search/" >}}) command. You can substitute `query_expr` with any of the expressions explained in the articles of this [query topic]({{< relref "/develop/ai/search-and-query/query/" >}}). Vector search queries are an exception. You can't combine a vector search with an aggregation query. 2. **Loaded fields**: if field values weren't already loaded into the aggregation pipeline, you can force their presence via the `LOAD` clause. This clause takes the number of fields (`n`), followed by the field names (`"field_1" .. "field_n"`). 3. **Mapping function**: this mapping function operates on the field values. A specific field is referenced as `@field_name` within the function expression. The result is returned as `result_field`. @@ -88,7 +90,7 @@ FT.AGGREGATE index "query_expr" ... GROUPBY n "field_1" .. "field_n" REDUCE AGG Here is an explanation of the additional constructs: 1. **Grouping**: you can group by one or many fields. Each ordered sequence of field values then defines one group. It's also possible to group by values that resulted from a previous `APPLY ... AS`. -2. **Aggregation**: you must replace `AGG_FUNC` with one of the supported aggregation functions (e.g., `SUM` or `COUNT`). A complete list of functions is available in the [aggregations reference documentation]({{< relref "/develop/interact/search-and-query/advanced-concepts/aggregations" >}}). Replace `aggregated_result_field` with a value of your choice. +2. **Aggregation**: you must replace `AGG_FUNC` with one of the supported aggregation functions (e.g., `SUM` or `COUNT`). A complete list of functions is available in the [aggregations reference documentation]({{< relref "/develop/ai/search-and-query/advanced-concepts/aggregations" >}}). Replace `aggregated_result_field` with a value of your choice. The following query shows you how to group by the field `condition` and apply a reduction based on the previously derived `price_category`. The expression `@price<1000` causes a bicycle to have the price category `1` if its price is lower than 1000 USD. Otherwise, it has the price category `0`. The output is the number of affordable bicycles grouped by price category. diff --git a/content/develop/interact/search-and-query/query/combined.md b/content/develop/ai/search-and-query/query/combined.md similarity index 78% rename from content/develop/interact/search-and-query/query/combined.md rename to content/develop/ai/search-and-query/query/combined.md index 3ab76e8886..93b16962c4 100644 --- a/content/develop/interact/search-and-query/query/combined.md +++ b/content/develop/ai/search-and-query/query/combined.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/query/combined categories: - docs - develop @@ -17,16 +19,16 @@ weight: 9 A combined query is a combination of several query types, such as: -* [Exact match]({{< relref "/develop/interact/search-and-query/query/exact-match" >}}) -* [Range]({{< relref "/develop/interact/search-and-query/query/range" >}}) -* [Full-text]({{< relref "/develop/interact/search-and-query/query/full-text" >}}) -* [Geospatial]({{< relref "/develop/interact/search-and-query/query/geo-spatial" >}}) -* [Vector search]({{< relref "/develop/interact/search-and-query/query/vector-search" >}}) +* [Exact match]({{< relref "/develop/ai/search-and-query/query/exact-match" >}}) +* [Range]({{< relref "/develop/ai/search-and-query/query/range" >}}) +* [Full-text]({{< relref "/develop/ai/search-and-query/query/full-text" >}}) +* [Geospatial]({{< relref "/develop/ai/search-and-query/query/geo-spatial" >}}) +* [Vector search]({{< relref "/develop/ai/search-and-query/query/vector-search" >}}) You can use logical query operators to combine query expressions for numeric, tag, and text fields. For vector fields, you can combine a KNN query with a pre-filter. {{% alert title="Note" color="warning" %}} -The operators are interpreted slightly differently depending on the query dialect used. The default dialect is `DIALECT 1`; see [this article]({{< relref "/develop/interact/search-and-query/administration/configuration#search-default-dialect" >}}) for information on how to change the dialect version. This article uses the second version of the query dialect, `DIALECT 2`, and uses additional brackets (`(...)`) to help clarify the examples. Further details can be found in the [query syntax documentation]({{< relref "/develop/interact/search-and-query/advanced-concepts/query_syntax" >}}). +The operators are interpreted slightly differently depending on the query dialect used. The default dialect is `DIALECT 1`; see [this article]({{< relref "/develop/ai/search-and-query/administration/configuration#search-default-dialect" >}}) for information on how to change the dialect version. This article uses the second version of the query dialect, `DIALECT 2`, and uses additional brackets (`(...)`) to help clarify the examples. Further details can be found in the [query syntax documentation]({{< relref "/develop/ai/search-and-query/advanced-concepts/query_syntax" >}}). {{% /alert %}} The examples in this article use the following schema: @@ -127,7 +129,7 @@ The [FT.SEARCH]({{< relref "commands/ft.search" >}}) command allows you to combi FT.SEARCH index "expr" FILTER numeric_field start end ``` -Please see the [range query article]({{< relref "/develop/interact/search-and-query/query/range" >}}) to learn more about numeric range queries and such filters. +Please see the [range query article]({{< relref "/develop/ai/search-and-query/query/range" >}}) to learn more about numeric range queries and such filters. ## Pre-filter for a KNN vector query @@ -144,4 +146,4 @@ Here is an example: FT.SEARCH idx:bikes_vss "(@price:[500 1000] @condition:{new})=>[KNN 3 @vector $query_vector]" PARAMS 2 "query_vector" "Z\xf8\x15:\xf23\xa1\xbfZ\x1dI>\r\xca9..." DIALECT 2 {{< /clients-example >}} -The [vector search article]({{< relref "/develop/interact/search-and-query/query/vector-search" >}}) provides further details about vector queries in general. +The [vector search article]({{< relref "/develop/ai/search-and-query/query/vector-search" >}}) provides further details about vector queries in general. diff --git a/content/develop/interact/search-and-query/query/data/bicycles.txt b/content/develop/ai/search-and-query/query/data/bicycles.txt similarity index 100% rename from content/develop/interact/search-and-query/query/data/bicycles.txt rename to content/develop/ai/search-and-query/query/data/bicycles.txt diff --git a/content/develop/interact/search-and-query/query/exact-match.md b/content/develop/ai/search-and-query/query/exact-match.md similarity index 91% rename from content/develop/interact/search-and-query/query/exact-match.md rename to content/develop/ai/search-and-query/query/exact-match.md index 0dfd23e21f..c751a4e423 100644 --- a/content/develop/interact/search-and-query/query/exact-match.md +++ b/content/develop/ai/search-and-query/query/exact-match.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/query/exact-match categories: - docs - develop @@ -45,7 +47,7 @@ or FT.SEARCH index "@field==value" DIALECT 2 # requires v2.10 ``` -As described in the [article about range queries]({{< relref "/develop/interact/search-and-query/query/range" >}}), you can also use the `FILTER` argument: +As described in the [article about range queries]({{< relref "/develop/ai/search-and-query/query/range" >}}), you can also use the `FILTER` argument: ``` FT.SEARCH index "*" FILTER field start end @@ -120,7 +122,7 @@ This short example shows you how to query for new bicycles: 2) "{\"pickup_zone\":\"POLYGON((1.9450 41.4301, 2.4018 41.4301, 2.4018 41.1987, 1.9450 41.1987, 1.9450 41.4301))\",\"store_location\":\"2.1734, 41.3851\",\"brand\":\"nHill\",\"model\":\"Summit\",\"price\":1200,\"description\":\"This budget mountain bike from nHill performs well both on bike paths and on the trail. The fork with 100mm of travel absorbs rough terrain. Fat Kenda Booster tires give you grip in corners and on wet trails. The Shimano Tourney drivetrain offered enough gears for finding a comfortable pace to ride uphill, and the Tektro hydraulic disc brakes break smoothly. Whether you want an affordable bike that you can take to work, but also take trail in mountains on the weekends or you\xe2\x80\x99re just after a stable, comfortable ride for the bike path, the Summit gives a good value for money.\",\"condition\":\"new\"}" {{< /clients-example >}} -Use double quotes and [DIALECT 2]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects" >}}#dialect-2) for exact match queries involving tags that contain special characters. As of v2.10, the only character that needs escaping in queries involving double-quoted tags is the double-quote character. Here's an example of using double-quoted tags that contain special characters: +Use double quotes and [DIALECT 2]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects" >}}#dialect-2) for exact match queries involving tags that contain special characters. As of v2.10, the only character that needs escaping in queries involving double-quoted tags is the double-quote character. Here's an example of using double-quoted tags that contain special characters: {{< clients-example query_em em3 >}} > FT.CREATE idx:email ON JSON PREFIX 1 key: SCHEMA $.email AS email TAG @@ -136,7 +138,7 @@ OK ## Full-text field -A detailed explanation of full-text queries is available in the [full-text queries documentation]({{< relref "/develop/interact/search-and-query/query/full-text" >}}). You can also query for an exact match of a phrase within a text field: +A detailed explanation of full-text queries is available in the [full-text queries documentation]({{< relref "/develop/ai/search-and-query/query/full-text" >}}). You can also query for an exact match of a phrase within a text field: ``` FT.SEARCH index "@field:\"phrase\"" @@ -145,7 +147,7 @@ FT.SEARCH index "@field:\"phrase\"" {{% alert title="Important" color="warning" %}} The phrase must be wrapped by escaped double quotes for an exact match query. -You can't use a phrase that starts with a [stop word]({{< relref "/develop/interact/search-and-query/advanced-concepts/stopwords" >}}). +You can't use a phrase that starts with a [stop word]({{< relref "/develop/ai/search-and-query/advanced-concepts/stopwords" >}}). {{% /alert %}} Here is an example for finding all bicycles that have a description containing the exact text 'rough terrain': diff --git a/content/develop/interact/search-and-query/query/full-text.md b/content/develop/ai/search-and-query/query/full-text.md similarity index 93% rename from content/develop/interact/search-and-query/query/full-text.md rename to content/develop/ai/search-and-query/query/full-text.md index 37fd35fe60..c67a5df8ef 100644 --- a/content/develop/interact/search-and-query/query/full-text.md +++ b/content/develop/ai/search-and-query/query/full-text.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/query/full-text categories: - docs - develop @@ -17,7 +19,7 @@ weight: 3 A full-text search finds words or phrases within larger texts. You can search within a specific text field or across all text fields. -This article provides a good overview of the most relevant full-text search capabilities. Please find further details about all the full-text search features in the [reference documentation]({{< relref "/develop/interact/search-and-query/advanced-concepts/" >}}). +This article provides a good overview of the most relevant full-text search capabilities. Please find further details about all the full-text search features in the [reference documentation]({{< relref "/develop/ai/search-and-query/advanced-concepts/" >}}). The examples in this article use a schema with the following fields: @@ -42,7 +44,7 @@ Instead of searching across all text fields, you might want to limit the search FT.SEARCH index "@field: word" ``` -Words that occur very often in natural language, such as `the` or `a` for the English language, aren't indexed and will not return a search result. You can find further details in the [stop words article]({{< relref "/develop/interact/search-and-query/advanced-concepts/stopwords" >}}). +Words that occur very often in natural language, such as `the` or `a` for the English language, aren't indexed and will not return a search result. You can find further details in the [stop words article]({{< relref "/develop/ai/search-and-query/advanced-concepts/stopwords" >}}). The following example searches for all bicycles that have the word 'kids' in the description: @@ -52,7 +54,7 @@ FT.SEARCH idx:bicycle "@description: kids" ## Phrase -A phrase is a sentence, sentence fragment, or small group of words. You can find further details about how to find exact phrases in the [exact match article]({{< relref "/develop/interact/search-and-query/query/exact-match" >}}). +A phrase is a sentence, sentence fragment, or small group of words. You can find further details about how to find exact phrases in the [exact match article]({{< relref "/develop/ai/search-and-query/query/exact-match" >}}). ## Word prefix diff --git a/content/develop/interact/search-and-query/query/geo-spatial.md b/content/develop/ai/search-and-query/query/geo-spatial.md similarity index 98% rename from content/develop/interact/search-and-query/query/geo-spatial.md rename to content/develop/ai/search-and-query/query/geo-spatial.md index 63ea965629..3ee182827d 100644 --- a/content/develop/interact/search-and-query/query/geo-spatial.md +++ b/content/develop/ai/search-and-query/query/geo-spatial.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/query/geo-spatial categories: - docs - develop diff --git a/content/develop/interact/search-and-query/query/range.md b/content/develop/ai/search-and-query/query/range.md similarity index 98% rename from content/develop/interact/search-and-query/query/range.md rename to content/develop/ai/search-and-query/query/range.md index cd6fa58a54..a56a1292eb 100644 --- a/content/develop/interact/search-and-query/query/range.md +++ b/content/develop/ai/search-and-query/query/range.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/query/range categories: - docs - develop @@ -141,4 +143,4 @@ The example below returns bicycles with a price lower than or equal to 2000 USD ## Non-numeric range queries -You can learn more about non-numeric range queries, such as [geospatial]({{< relref "/develop/interact/search-and-query/query/geo-spatial" >}}) or [vector search]({{< relref "/develop/interact/search-and-query/query/vector-search" >}}) queries, in their dedicated articles. \ No newline at end of file +You can learn more about non-numeric range queries, such as [geospatial]({{< relref "/develop/ai/search-and-query/query/geo-spatial" >}}) or [vector search]({{< relref "/develop/ai/search-and-query/query/vector-search" >}}) queries, in their dedicated articles. \ No newline at end of file diff --git a/content/develop/interact/search-and-query/query/vector-search.md b/content/develop/ai/search-and-query/query/vector-search.md similarity index 93% rename from content/develop/interact/search-and-query/query/vector-search.md rename to content/develop/ai/search-and-query/query/vector-search.md index bf0f5e8bc8..e93a24c40a 100644 --- a/content/develop/interact/search-and-query/query/vector-search.md +++ b/content/develop/ai/search-and-query/query/vector-search.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/interact/search-and-query/query/vector-search categories: - docs - develop @@ -15,7 +17,7 @@ title: Vector search weight: 5 --- -This article gives you a good overview of how to perform vector search queries with the Redis Query Engine, which is part of Redis Open Source. See the [Redis as a vector database quick start guide]({{< relref "/develop/get-started/vector-database" >}}) for more information about Redis as a vector database. You can also find more detailed information about all the parameters in the [vector reference documentation]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors" >}}). +This article gives you a good overview of how to perform vector search queries with the Redis Query Engine, which is part of Redis Open Source. See the [Redis as a vector database quick start guide]({{< relref "/develop/get-started/vector-database" >}}) for more information about Redis as a vector database. You can also find more detailed information about all the parameters in the [vector reference documentation]({{< relref "/develop/ai/search-and-query/vectors" >}}). A vector search query on a vector field allows you to find all vectors in a vector space that are close to a given vector. You can query for the k-nearest neighbors or vectors within a given radius. @@ -80,15 +82,15 @@ FT.SEARCH index "@field:[VECTOR_RANGE radius $vector]=>{$YIELD_DISTANCE_AS: dist Here is a more detailed explanation of this query: -1. **Range query**: the syntax of a radius query is very similar to the regular range query, except for the keyword `VECTOR_RANGE`. You can also combine a vector radius query with other queries in the same way as regular range queries. See [combined queries article]({{< relref "/develop/interact/search-and-query/query/combined" >}}) for more details. +1. **Range query**: the syntax of a radius query is very similar to the regular range query, except for the keyword `VECTOR_RANGE`. You can also combine a vector radius query with other queries in the same way as regular range queries. See [combined queries article]({{< relref "/develop/ai/search-and-query/query/combined" >}}) for more details. 2. **Additional step**: the `=>` arrow means that the range query is followed by evaluating additional parameters. -3. **Range query parameters**: parameters such as `$YIELD_DISTANCE_AS` can be found in the [vectors reference documentation]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors" >}}). +3. **Range query parameters**: parameters such as `$YIELD_DISTANCE_AS` can be found in the [vectors reference documentation]({{< relref "/develop/ai/search-and-query/vectors" >}}). 4. **Vector binary data**: you need to use `PARAMS` to pass the binary representation of the vector. 5. **Dialect**: vector search has been available since version two of the query dialect. {{% alert title="Note" color="warning" %}} -By default, [`FT.SEARCH`]({{< relref "commands/ft.search/" >}}) returns only the first ten results. The [range query article]({{< relref "/develop/interact/search-and-query/query/range" >}}) explains to you how to scroll through the result set. +By default, [`FT.SEARCH`]({{< relref "commands/ft.search/" >}}) returns only the first ten results. The [range query article]({{< relref "/develop/ai/search-and-query/query/range" >}}) explains to you how to scroll through the result set. {{% /alert %}} The example below shows a radius query that returns the description and the distance within a radius of `0.5`. The result is sorted by the distance. diff --git a/content/develop/interact/search-and-query/vecsim-hybrid_queries_examples.ipynb b/content/develop/ai/search-and-query/vecsim-hybrid_queries_examples.ipynb similarity index 100% rename from content/develop/interact/search-and-query/vecsim-hybrid_queries_examples.ipynb rename to content/develop/ai/search-and-query/vecsim-hybrid_queries_examples.ipynb diff --git a/content/develop/interact/search-and-query/vecsim-range_queries_examples.ipynb b/content/develop/ai/search-and-query/vecsim-range_queries_examples.ipynb similarity index 100% rename from content/develop/interact/search-and-query/vecsim-range_queries_examples.ipynb rename to content/develop/ai/search-and-query/vecsim-range_queries_examples.ipynb diff --git a/content/develop/interact/search-and-query/advanced-concepts/vectors.md b/content/develop/ai/search-and-query/vectors.md similarity index 89% rename from content/develop/interact/search-and-query/advanced-concepts/vectors.md rename to content/develop/ai/search-and-query/vectors.md index bed041ec11..f4f27c60a5 100644 --- a/content/develop/interact/search-and-query/advanced-concepts/vectors.md +++ b/content/develop/ai/search-and-query/vectors.md @@ -1,4 +1,6 @@ --- +aliases: +- /develop/ai/search-and-query/advanced-concepts/vectors categories: - docs - develop @@ -10,10 +12,10 @@ categories: - kubernetes - clients description: Learn how to use vector fields and perform vector searches in Redis -linkTitle: Vectors +linkTitle: Vector search concepts math: true -title: Vectors -weight: 14 +title: Vector search concepts +weight: 8 --- Redis includes a [high-performance vector database](https://redis.io/blog/benchmarking-results-for-vector-databases/) that lets you perform semantic searches over vector embeddings. You can augment these searches with filtering over text, numerical, geospatial, and tag metadata. @@ -23,11 +25,11 @@ To quickly get started, check out the [Redis vector quickstart guide]({{< relref ## Overview -1. [**Create a vector index**]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#create-a-vector-index" >}}): Redis maintains a secondary index over your data with a defined schema (including vector fields and metadata). Redis supports [`FLAT`]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#flat-index" >}}) and [`HNSW`]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#hnsw-index" >}}) vector index types. -1. [**Store and update vectors**]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#store-and-update-vectors" >}}): Redis stores vectors and metadata in hashes or JSON objects. -1. [**Search with vectors**]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#search-with-vectors" >}}): Redis supports several advanced querying strategies with vector fields including k-nearest neighbor ([KNN]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#knn-vector-search" >}})), [vector range queries]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#vector-range-queries" >}}), and [metadata filters]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#filters" >}}). -1. [**Configure vector queries at runtime**]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#runtime-query-params" >}}). -1. [**Vector search examples**]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#vector-search-examples" >}}): Explore several vector search examples that cover different use cases and techniques. +1. [**Create a vector index**]({{< relref "develop/ai/search-and-query/vectors#create-a-vector-index" >}}): Redis maintains a secondary index over your data with a defined schema (including vector fields and metadata). Redis supports [`FLAT`]({{< relref "develop/ai/search-and-query/vectors#flat-index" >}}) and [`HNSW`]({{< relref "develop/ai/search-and-query/vectors#hnsw-index" >}}) vector index types. +1. [**Store and update vectors**]({{< relref "develop/ai/search-and-query/vectors#store-and-update-vectors" >}}): Redis stores vectors and metadata in hashes or JSON objects. +1. [**Search with vectors**]({{< relref "develop/ai/search-and-query/vectors#search-with-vectors" >}}): Redis supports several advanced querying strategies with vector fields including k-nearest neighbor ([KNN]({{< relref "develop/ai/search-and-query/vectors#knn-vector-search" >}})), [vector range queries]({{< relref "develop/ai/search-and-query/vectors#vector-range-queries" >}}), and [metadata filters]({{< relref "develop/ai/search-and-query/vectors#filters" >}}). +1. [**Configure vector queries at runtime**]({{< relref "develop/ai/search-and-query/vectors#runtime-query-params" >}}). +1. [**Vector search examples**]({{< relref "develop/ai/search-and-query/vectors#vector-search-examples" >}}): Explore several vector search examples that cover different use cases and techniques. ## Create a vector index @@ -43,7 +45,7 @@ FT.CREATE [ ...] ``` -Refer to the full [indexing]({{< relref "develop/interact/search-and-query/indexing/" >}}) documentation for additional fields, options, and noted limitations. +Refer to the full [indexing]({{< relref "develop/ai/search-and-query/indexing/" >}}) documentation for additional fields, options, and noted limitations. **Parameters** @@ -204,13 +206,13 @@ JSON.SET docs:01 $ '{"doc_embedding":[[1,2,3,4], [5,6,7,8]]}' JSON.SET docs:01 $ '{"chunk1":{"doc_embedding":[1,2,3,4]}, "chunk2":{"doc_embedding":[5,6,7,8]}}' ``` -Additional information and examples are available in the [Indexing JSON documents]({{< relref "develop/interact/search-and-query/indexing/#index-json-arrays-as-vector" >}}) section. +Additional information and examples are available in the [Indexing JSON documents]({{< relref "develop/ai/search-and-query/indexing/#index-json-arrays-as-vector" >}}) section. ## Search with vectors You can run vector search queries with the [`FT.SEARCH`]({{< relref "commands/ft.search/" >}}) or [`FT.AGGREGATE`]({{< relref "commands/ft.aggregate/" >}}) commands. -To issue a vector search query with `FT.SEARCH`, you must set the `DIALECT` option to >= `2`. See the [dialects documentation]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects" >}}) for more information. +To issue a vector search query with `FT.SEARCH`, you must set the `DIALECT` option to >= `2`. See the [dialects documentation]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects" >}}) for more information. ### KNN vector search @@ -230,11 +232,11 @@ FT.SEARCH | Parameter | Description | |:------------------|:--------------------------------------------------------------------------------------------------| | `index_name` | Name of the index. | -| `primary_filter_query` | [Filter]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#filters" >}}) criteria. Use `*` when no filters are required. | +| `primary_filter_query` | [Filter]({{< relref "develop/ai/search-and-query/vectors#filters" >}}) criteria. Use `*` when no filters are required. | | `top_k` | Number of nearest neighbors to fetch from the index. | | `vector_field` | Name of the vector field to search against. | | `vector_blob_param` | The query vector, passed in as a blob of raw bytes. The blob's byte size must match the vector field's dimensions and type. | -| `vector_query_params` (optional) | An optional section for marking one or more vector query parameters passed through the `PARAMS` section. Valid parameters should be provided as key-value pairs. See which [runtime query params]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#runtime-query-params" >}}) are supported for each vector index type. | +| `vector_query_params` (optional) | An optional section for marking one or more vector query parameters passed through the `PARAMS` section. Valid parameters should be provided as key-value pairs. See which [runtime query params]({{< relref "develop/ai/search-and-query/vectors#runtime-query-params" >}}) are supported for each vector index type. | | `distance_field` (optional) | The optional distance field name used in the response and/or for sorting. By default, the distance field name is `___score` and it can be used for sorting without using `AS ` in the query. | | `vector_query_params_count` | The number of vector query parameters. | | `vector_query_param_name` | The name of the vector query parameter. | @@ -249,7 +251,7 @@ FT.SEARCH documents "*=>[KNN 10 @doc_embedding $BLOB]" PARAMS 2 BLOB "\x12\xa9\x **Use query attributes** Alternatively, as of v2.6, `` and `` name can be specified in runtime -[query attributes]({{< relref "/develop/interact/search-and-query/advanced-concepts/query_syntax" >}}#query-attributes) as shown below. +[query attributes]({{< relref "/develop/ai/search-and-query/advanced-concepts/query_syntax" >}}#query-attributes) as shown below. ``` [KNN @ $]=>{$yield_distance_as: } @@ -281,7 +283,7 @@ FT.SEARCH | `vector_field` | Name of the vector field in the index. | | `radius` or `radius_param` | The maximum semantic distance allowed between the query vector and indexed vectors. You can provide the value directly in the query, passed to the `PARAMS` section, or as a query attribute. | `vector_blob_param` | The query vector, passed in as a blob of raw bytes. The blob's byte size must match the vector field's dimensions and type. | -| `vector_query_params` (optional) | An optional section for marking one or more vector query parameters passed through the `PARAMS` section. Valid parameters should be provided as key-value pairs. See which [runtime query params]({{< relref "develop/interact/search-and-query/advanced-concepts/vectors#runtime-query-params" >}}) are supported for each vector index type. | +| `vector_query_params` (optional) | An optional section for marking one or more vector query parameters passed through the `PARAMS` section. Valid parameters should be provided as key-value pairs. See which [runtime query params]({{< relref "develop/ai/search-and-query/vectors#runtime-query-params" >}}) are supported for each vector index type. | | `vector_query_params_count` | The number of vector query parameters. | | `vector_query_param_name` | The name of the vector query parameter. | | `vector_query_param_value` | The value of the vector query parameter. | @@ -304,12 +306,12 @@ Redis supports vector searches that include filters to narrow the search space b **Supported filter types** -- [Exact match](https://redis.io/docs/develop/interact/search-and-query/query/exact-match/) -- [Numeric range](https://redis.io/docs/develop/interact/search-and-query/query/range/) -- [Full-text](https://redis.io/docs/develop/interact/search-and-query/query/full-text/) -- [Geospatial](https://redis.io/docs/develop/interact/search-and-query/query/geo-spatial/) +- [Exact match](https://redis.io/docs/develop/ai/search-and-query/query/exact-match/) +- [Numeric range](https://redis.io/docs/develop/ai/search-and-query/query/range/) +- [Full-text](https://redis.io/docs/develop/ai/search-and-query/query/full-text/) +- [Geospatial](https://redis.io/docs/develop/ai/search-and-query/query/geo-spatial/) -You can also [combine multiple queries](https://redis.io/docs/develop/interact/search-and-query/query/combined/) as a filter. +You can also [combine multiple queries](https://redis.io/docs/develop/ai/search-and-query/query/combined/) as a filter. **Syntax** @@ -414,7 +416,7 @@ Assign a custom name to the distance field (`vector_distance`) and then sort usi FT.SEARCH documents "*=>[KNN 10 @doc_embedding $BLOB AS vector_distance]" PARAMS 2 BLOB "\x12\xa9\xf5\x6c" SORTBY vector_distance DIALECT 2 ``` -Use [query attributes]({{< relref "develop/interact/search-and-query/advanced-concepts/query_syntax#query-attributes" >}}) syntax to specify optional parameters and the distance field name: +Use [query attributes]({{< relref "develop/ai/search-and-query/advanced-concepts/query_syntax#query-attributes" >}}) syntax to specify optional parameters and the distance field name: ``` FT.SEARCH documents "*=>[KNN 10 @doc_embedding $BLOB]=>{$EF_RUNTIME: $EF; $YIELD_DISTANCE_AS: vector_distance}" PARAMS 4 EF 150 BLOB "\x12\xa9\xf5\x6c" SORTBY vector_distance DIALECT 2 diff --git a/content/develop/clients/dotnet/queryjson.md b/content/develop/clients/dotnet/queryjson.md index df888907b3..d1d8e1a8a2 100644 --- a/content/develop/clients/dotnet/queryjson.md +++ b/content/develop/clients/dotnet/queryjson.md @@ -16,7 +16,7 @@ weight: 30 --- This example shows how to create a -[search index]({{< relref "/develop/interact/search-and-query/indexing" >}}) +[search index]({{< relref "/develop/ai/search-and-query/indexing" >}}) for [JSON]({{< relref "/develop/data-types/json" >}}) documents and run queries against the index. It then goes on to show the slight differences in the equivalent code for [hash]({{< relref "/develop/data-types/hashes" >}}) @@ -27,7 +27,7 @@ onwards, `NRedisStack` uses query dialect 2 by default. Redis query engine methods such as [`FT().Search()`]({{< relref "/commands/ft.search" >}}) will explicitly request this dialect, overriding the default set for the server. See -[Query dialects]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects" >}}) +[Query dialects]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects" >}}) for more information. {{< /note >}} @@ -60,7 +60,7 @@ to learn more about the available connection options. {{< clients-example cs_home_json connect >}} {{< /clients-example >}} -Create an index. In this example, only JSON documents with the key prefix `user:` are indexed. For more information, see [Query syntax]({{< relref "/develop/interact/search-and-query/query/" >}}). +Create an index. In this example, only JSON documents with the key prefix `user:` are indexed. For more information, see [Query syntax]({{< relref "/develop/ai/search-and-query/query/" >}}). {{< clients-example cs_home_json make_index >}} {{< /clients-example >}} @@ -78,7 +78,7 @@ objects automatically as you add them: ## Query the data You can now use the index to search the JSON objects. The -[query]({{< relref "/develop/interact/search-and-query/query" >}}) +[query]({{< relref "/develop/ai/search-and-query/query" >}}) below searches for objects that have the text "Paul" in any field and have an `age` value in the range 30 to 40: @@ -91,7 +91,7 @@ Specify query options to return only the `city` field: {{< /clients-example >}} Use an -[aggregation query]({{< relref "/develop/interact/search-and-query/query/aggregation" >}}) +[aggregation query]({{< relref "/develop/ai/search-and-query/query/aggregation" >}}) to count all users in each city. {{< clients-example cs_home_json query3 >}} @@ -131,5 +131,5 @@ in a string under the key `json`): ## More information -See the [Redis query engine]({{< relref "/develop/interact/search-and-query" >}}) docs +See the [Redis query engine]({{< relref "/develop/ai/search-and-query" >}}) docs for a full description of all query features with examples. diff --git a/content/develop/clients/dotnet/vecsearch.md b/content/develop/clients/dotnet/vecsearch.md index 5644dd6d9c..55b241c9c7 100644 --- a/content/develop/clients/dotnet/vecsearch.md +++ b/content/develop/clients/dotnet/vecsearch.md @@ -15,14 +15,14 @@ title: Index and query vectors weight: 40 --- -[Redis Query Engine]({{< relref "/develop/interact/search-and-query" >}}) +[Redis Query Engine]({{< relref "/develop/ai/search-and-query" >}}) lets you index vector fields in [hash]({{< relref "/develop/data-types/hashes" >}}) or [JSON]({{< relref "/develop/data-types/json" >}}) objects (see the -[Vectors]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors" >}}) +[Vectors]({{< relref "/develop/ai/search-and-query/vectors" >}}) reference page for more information). Among other things, vector fields can store *text embeddings*, which are AI-generated vector representations of the semantic information in pieces of text. The -[vector distance]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors#distance-metrics" >}}) +[vector distance]({{< relref "/develop/ai/search-and-query/vectors#distance-metrics" >}}) between two embeddings indicates how similar they are semantically. By comparing the similarity of an embedding generated from some query text with embeddings stored in hash or JSON fields, Redis can retrieve documents that closely match the query in terms @@ -41,7 +41,7 @@ onwards, `NRedisStack` uses query dialect 2 by default. Redis query engine methods such as [`FT().Search()`]({{< relref "/commands/ft.search" >}}) will explicitly request this dialect, overriding the default set for the server. See -[Query dialects]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects" >}}) +[Query dialects]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects" >}}) for more information. {{< /note >}} ## Initialize @@ -245,12 +245,12 @@ try { db.FT().DropIndex("vector_idx");} catch {} Next, create the index. The schema in the example below includes three fields: the text content to index, a -[tag]({{< relref "/develop/interact/search-and-query/advanced-concepts/tags" >}}) +[tag]({{< relref "/develop/ai/search-and-query/advanced-concepts/tags" >}}) field to represent the "genre" of the text, and the embedding vector generated from the original text content. The `embedding` field specifies -[HNSW]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors#hnsw-index" >}}) +[HNSW]({{< relref "/develop/ai/search-and-query/vectors#hnsw-index" >}}) indexing, the -[L2]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors#distance-metrics" >}}) +[L2]({{< relref "/develop/ai/search-and-query/vectors#distance-metrics" >}}) vector distance metric, `Float32` values to represent the vector's components, and 150 dimensions, as required by our embedding model. @@ -339,10 +339,10 @@ sorted to rank them in order of ascending distance. The code below creates the query embedding using the `GetEmbedding()` method, as with the indexing, and passes it as a parameter when the query executes (see -[Vector search]({{< relref "/develop/interact/search-and-query/query/vector-search" >}}) +[Vector search]({{< relref "/develop/ai/search-and-query/query/vector-search" >}}) for more information about using query parameters with embeddings). The query is a -[K nearest neighbors (KNN)]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors#knn-vector-search" >}}) +[K nearest neighbors (KNN)]({{< relref "/develop/ai/search-and-query/vectors#knn-vector-search" >}}) search that sorts the results in order of vector distance from the query vector. (As before, replace `GetEmbedding()` with `GetEmbeddingFromAzure()` if you are using @@ -578,6 +578,6 @@ ID: jdoc:3, Properties: [ ## Learn more See -[Vector search]({{< relref "/develop/interact/search-and-query/query/vector-search" >}}) +[Vector search]({{< relref "/develop/ai/search-and-query/query/vector-search" >}}) for more information about the indexing options, distance metrics, and query format for vectors. diff --git a/content/develop/clients/go/queryjson.md b/content/develop/clients/go/queryjson.md index fdc2cd4a99..282ed862a0 100644 --- a/content/develop/clients/go/queryjson.md +++ b/content/develop/clients/go/queryjson.md @@ -16,7 +16,7 @@ weight: 20 --- This example shows how to create a -[search index]({{< relref "/develop/interact/search-and-query/indexing" >}}) +[search index]({{< relref "/develop/ai/search-and-query/indexing" >}}) for [JSON]({{< relref "/develop/data-types/json" >}}) documents and run queries against the index. It then goes on to show the slight differences in the equivalent code for [hash]({{< relref "/develop/data-types/hashes" >}}) @@ -27,7 +27,7 @@ documents. Redis query engine methods such as [`FTSearch()`]({{< relref "/commands/ft.search" >}}) will explicitly request this dialect, overriding the default set for the server. See -[Query dialects]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects" >}}) +[Query dialects]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects" >}}) for more information. {{< /note >}} @@ -93,7 +93,7 @@ val1 := client.FTSearchWithArgs( Use the code below to create a search index. The `FTCreateOptions` parameter enables indexing only for JSON objects where the key has a `user:` prefix. The -[schema]({{< relref "/develop/interact/search-and-query/indexing" >}}) +[schema]({{< relref "/develop/ai/search-and-query/indexing" >}}) for the index has three fields for the user's name, age, and city. The `FieldName` field of the `FieldSchema` struct specifies a [JSON path]({{< relref "/develop/data-types/json/path" >}}) @@ -118,7 +118,7 @@ objects automatically as you add them: ## Query the data You can now use the index to search the JSON objects. The -[query]({{< relref "/develop/interact/search-and-query/query" >}}) +[query]({{< relref "/develop/ai/search-and-query/query" >}}) below searches for objects that have the text "Paul" in any field and have an `age` value in the range 30 to 40: @@ -138,7 +138,7 @@ returning the documents themselves. {{< /clients-example >}} Use an -[aggregation query]({{< relref "/develop/interact/search-and-query/query/aggregation" >}}) +[aggregation query]({{< relref "/develop/ai/search-and-query/query/aggregation" >}}) to count all users in each city. {{< clients-example go_home_json query3 >}} @@ -178,5 +178,5 @@ in a string under the key "$"): ## More information -See the [Redis query engine]({{< relref "/develop/interact/search-and-query" >}}) docs +See the [Redis query engine]({{< relref "/develop/ai/search-and-query" >}}) docs for a full description of all query features with examples. diff --git a/content/develop/clients/go/vecsearch.md b/content/develop/clients/go/vecsearch.md index 8fc09379b2..3c2b1dfb81 100644 --- a/content/develop/clients/go/vecsearch.md +++ b/content/develop/clients/go/vecsearch.md @@ -15,14 +15,14 @@ title: Index and query vectors weight: 30 --- -[Redis Query Engine]({{< relref "/develop/interact/search-and-query" >}}) +[Redis Query Engine]({{< relref "/develop/ai/search-and-query" >}}) lets you index vector fields in [hash]({{< relref "/develop/data-types/hashes" >}}) or [JSON]({{< relref "/develop/data-types/json" >}}) objects (see the -[Vectors]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors" >}}) +[Vectors]({{< relref "/develop/ai/search-and-query/vectors" >}}) reference page for more information). Among other things, vector fields can store *text embeddings*, which are AI-generated vector representations of the semantic information in pieces of text. The -[vector distance]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors#distance-metrics" >}}) +[vector distance]({{< relref "/develop/ai/search-and-query/vectors#distance-metrics" >}}) between two embeddings indicates how similar they are semantically. By comparing the similarity of an embedding generated from some query text with embeddings stored in hash or JSON fields, Redis can retrieve documents that closely match the query in terms @@ -41,7 +41,7 @@ separate section to explain the Redis query engine methods such as [`FTSearch()`]({{< relref "/commands/ft.search" >}}) will explicitly request this dialect, overriding the default set for the server. See -[Query dialects]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects" >}}) +[Query dialects]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects" >}}) for more information. {{< /note >}} @@ -140,12 +140,12 @@ rdb.FTDropIndexWithArgs(ctx, Next, create the index. The schema in the example below specifies hash objects for storage and includes three fields: the text content to index, a -[tag]({{< relref "/develop/interact/search-and-query/advanced-concepts/tags" >}}) +[tag]({{< relref "/develop/ai/search-and-query/advanced-concepts/tags" >}}) field to represent the "genre" of the text, and the embedding vector generated from the original text content. The `embedding` field specifies -[HNSW]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors#hnsw-index" >}}) +[HNSW]({{< relref "/develop/ai/search-and-query/vectors#hnsw-index" >}}) indexing, the -[L2]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors#distance-metrics" >}}) +[L2]({{< relref "/develop/ai/search-and-query/vectors#distance-metrics" >}}) vector distance metric, `Float32` values to represent the vector's components, and 384 dimensions, as required by the `all-MiniLM-L6-v2` embedding model. @@ -260,7 +260,7 @@ results in order of this numeric similarity value. The code below creates the query embedding using `Embed()`, as with the indexing, and passes it as a parameter when the query executes (see -[Vector search]({{< relref "/develop/interact/search-and-query/query/vector-search" >}}) +[Vector search]({{< relref "/develop/ai/search-and-query/query/vector-search" >}}) for more information about using query parameters with embeddings). ```go @@ -439,6 +439,6 @@ ID: jdoc:2, Distance:1.48624765873, Content:'Today is a sunny day' ## Learn more See -[Vector search]({{< relref "/develop/interact/search-and-query/query/vector-search" >}}) +[Vector search]({{< relref "/develop/ai/search-and-query/query/vector-search" >}}) for more information about the indexing options, distance metrics, and query format for vectors. diff --git a/content/develop/clients/hiredis/issue-commands.md b/content/develop/clients/hiredis/issue-commands.md index 036ebd6951..58386e96e2 100644 --- a/content/develop/clients/hiredis/issue-commands.md +++ b/content/develop/clients/hiredis/issue-commands.md @@ -67,7 +67,7 @@ redisReply *reply = redisCommand(c, "SET key:%s %s", myKeyNumber, myValue); ``` You may need to include binary data in the command (for example, to store -[vector embeddings]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors" >}}) +[vector embeddings]({{< relref "/develop/ai/search-and-query/vectors" >}}) in fields of a [hash]({{< relref "/develop/data-types/hashes" >}})) object. To do this, use the `%b` format specifier and pass a pointer to the data buffer, followed by a `size_t` value indicating its length in bytes. diff --git a/content/develop/clients/jedis/queryjson.md b/content/develop/clients/jedis/queryjson.md index fbec878360..b3d7903344 100644 --- a/content/develop/clients/jedis/queryjson.md +++ b/content/develop/clients/jedis/queryjson.md @@ -16,7 +16,7 @@ weight: 2 --- This example shows how to create a -[search index]({{< relref "/develop/interact/search-and-query/indexing" >}}) +[search index]({{< relref "/develop/ai/search-and-query/indexing" >}}) for [JSON]({{< relref "/develop/data-types/json" >}}) documents and run queries against the index. It then goes on to show the slight differences in the equivalent code for [hash]({{< relref "/develop/data-types/hashes" >}}) @@ -27,7 +27,7 @@ documents. Redis query engine methods such as [`ftSearch()`]({{< relref "/commands/ft.search" >}}) will explicitly request this dialect, overriding the default set for the server. See -[Query dialects]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects" >}}) +[Query dialects]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects" >}}) for more information. {{< /note >}} @@ -63,7 +63,7 @@ to learn more about the available connection options. {{< clients-example java_home_json connect >}} {{< /clients-example >}} -Create an index. In this example, only JSON documents with the key prefix `user:` are indexed. For more information, see [Query syntax]({{< relref "/develop/interact/search-and-query/query/" >}}). +Create an index. In this example, only JSON documents with the key prefix `user:` are indexed. For more information, see [Query syntax]({{< relref "/develop/ai/search-and-query/query/" >}}). {{< clients-example java_home_json make_index >}} {{< /clients-example >}} @@ -81,7 +81,7 @@ objects automatically as you add them: ## Query the data You can now use the index to search the JSON objects. The -[query]({{< relref "/develop/interact/search-and-query/query" >}}) +[query]({{< relref "/develop/ai/search-and-query/query" >}}) below searches for objects that have the text "Paul" in any field and have an `age` value in the range 30 to 40: @@ -94,7 +94,7 @@ Specify query options to return only the `city` field: {{< /clients-example >}} Use an -[aggregation query]({{< relref "/develop/interact/search-and-query/query/aggregation" >}}) +[aggregation query]({{< relref "/develop/ai/search-and-query/query/aggregation" >}}) to count all users in each city. {{< clients-example java_home_json query3 >}} @@ -130,5 +130,5 @@ a `List` of `Document` objects, as with JSON: ## More information -See the [Redis query engine]({{< relref "/develop/interact/search-and-query" >}}) docs +See the [Redis query engine]({{< relref "/develop/ai/search-and-query" >}}) docs for a full description of all query features with examples. diff --git a/content/develop/clients/jedis/vecsearch.md b/content/develop/clients/jedis/vecsearch.md index b94a663f9a..95f7a46208 100644 --- a/content/develop/clients/jedis/vecsearch.md +++ b/content/develop/clients/jedis/vecsearch.md @@ -15,14 +15,14 @@ title: Index and query vectors weight: 3 --- -[Redis Query Engine]({{< relref "/develop/interact/search-and-query" >}}) +[Redis Query Engine]({{< relref "/develop/ai/search-and-query" >}}) lets you index vector fields in [hash]({{< relref "/develop/data-types/hashes" >}}) or [JSON]({{< relref "/develop/data-types/json" >}}) objects (see the -[Vectors]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors" >}}) +[Vectors]({{< relref "/develop/ai/search-and-query/vectors" >}}) reference page for more information). Among other things, vector fields can store *text embeddings*, which are AI-generated vector representations of the semantic information in pieces of text. The -[vector distance]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors#distance-metrics" >}}) +[vector distance]({{< relref "/develop/ai/search-and-query/vectors#distance-metrics" >}}) between two embeddings indicates how similar they are semantically. By comparing the similarity of an embedding generated from some query text with embeddings stored in hash or JSON fields, Redis can retrieve documents that closely match the query in terms @@ -40,7 +40,7 @@ separate section to explain the Redis query engine methods such as [`ftSearch()`]({{< relref "/commands/ft.search" >}}) will explicitly request this dialect, overriding the default set for the server. See -[Query dialects]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects" >}}) +[Query dialects]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects" >}}) for more information. {{< /note >}} @@ -150,12 +150,12 @@ try {jedis.ftDropIndex("vector_idx");} catch (JedisDataException j){} Next, we create the index. The schema in the example below includes three fields: the text content to index, a -[tag]({{< relref "/develop/interact/search-and-query/advanced-concepts/tags" >}}) +[tag]({{< relref "/develop/ai/search-and-query/advanced-concepts/tags" >}}) field to represent the "genre" of the text, and the embedding vector generated from the original text content. The `embedding` field specifies -[HNSW]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors#hnsw-index" >}}) +[HNSW]({{< relref "/develop/ai/search-and-query/vectors#hnsw-index" >}}) indexing, the -[L2]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors#distance-metrics" >}}) +[L2]({{< relref "/develop/ai/search-and-query/vectors#distance-metrics" >}}) vector distance metric, `Float32` values to represent the vector's components, and 768 dimensions, as required by the `all-mpnet-base-v2` embedding model. @@ -240,10 +240,10 @@ sorted to rank them in order of ascending distance. The code below creates the query embedding using the `encode()` method, as with the indexing, and passes it as a parameter when the query executes (see -[Vector search]({{< relref "/develop/interact/search-and-query/query/vector-search" >}}) +[Vector search]({{< relref "/develop/ai/search-and-query/query/vector-search" >}}) for more information about using query parameters with embeddings). The query is a -[K nearest neighbors (KNN)]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors#knn-vector-search" >}}) +[K nearest neighbors (KNN)]({{< relref "/develop/ai/search-and-query/vectors#knn-vector-search" >}}) search that sorts the results in order of vector distance from the query vector. ```java @@ -439,6 +439,6 @@ ID: jdoc:3, Distance: 67178800, Content: Today is a sunny day ## Learn more See -[Vector search]({{< relref "/develop/interact/search-and-query/query/vector-search" >}}) +[Vector search]({{< relref "/develop/ai/search-and-query/query/vector-search" >}}) for more information about the indexing options, distance metrics, and query format for vectors. diff --git a/content/develop/clients/nodejs/queryjson.md b/content/develop/clients/nodejs/queryjson.md index 2bec9ed3eb..fad354bce8 100644 --- a/content/develop/clients/nodejs/queryjson.md +++ b/content/develop/clients/nodejs/queryjson.md @@ -16,7 +16,7 @@ weight: 2 --- This example shows how to create a -[search index]({{< relref "/develop/interact/search-and-query/indexing" >}}) +[search index]({{< relref "/develop/ai/search-and-query/indexing" >}}) for [JSON]({{< relref "/develop/data-types/json" >}}) documents and run queries against the index. It then goes on to show the slight differences in the equivalent code for [hash]({{< relref "/develop/data-types/hashes" >}}) @@ -27,7 +27,7 @@ onwards, `node-redis` uses query dialect 2 by default. Redis query engine methods such as [`ft.search()`]({{< relref "/commands/ft.search" >}}) will explicitly request this dialect, overriding the default set for the server. See -[Query dialects]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects" >}}) +[Query dialects]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects" >}}) for more information. {{< /note >}} @@ -89,7 +89,7 @@ const client = await createClient(); await client.connect(); ``` -Create an index. In this example, only JSON documents with the key prefix `user:` are indexed. For more information, see [Query syntax]({{< relref "/develop/interact/search-and-query/query/" >}}). +Create an index. In this example, only JSON documents with the key prefix `user:` are indexed. For more information, see [Query syntax]({{< relref "/develop/ai/search-and-query/query/" >}}). ```js await client.ft.create('idx:users', { @@ -132,7 +132,7 @@ const [user1Reply, user2Reply, user3Reply] = await Promise.all([ ## Query the data You can now use the index to search the JSON objects. The -[query]({{< relref "/develop/interact/search-and-query/query" >}}) +[query]({{< relref "/develop/ai/search-and-query/query" >}}) below searches for objects that have the text "Paul" in any field and have an `age` value in the range 30 to 40: @@ -161,7 +161,7 @@ citiesResult.documents.forEach(cityDoc => { ``` Use an -[aggregation query]({{< relref "/develop/interact/search-and-query/query/aggregation" >}}) +[aggregation query]({{< relref "/develop/ai/search-and-query/query/aggregation" >}}) to count all users in each city. ```js @@ -250,5 +250,5 @@ findPaulHashResult.documents.forEach(doc => { ## More information -See the [Redis Query Engine]({{< relref "/develop/interact/search-and-query" >}}) docs +See the [Redis Query Engine]({{< relref "/develop/ai/search-and-query" >}}) docs for a full description of all query features with examples. diff --git a/content/develop/clients/nodejs/vecsearch.md b/content/develop/clients/nodejs/vecsearch.md index bf823c424a..6973858573 100644 --- a/content/develop/clients/nodejs/vecsearch.md +++ b/content/develop/clients/nodejs/vecsearch.md @@ -15,15 +15,15 @@ title: Index and query vectors weight: 3 --- -[Redis Query Engine]({{< relref "/develop/interact/search-and-query" >}}) +[Redis Query Engine]({{< relref "/develop/ai/search-and-query" >}}) lets you index vector fields in [hash]({{< relref "/develop/data-types/hashes" >}}) or [JSON]({{< relref "/develop/data-types/json" >}}) objects (see the -[Vectors]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors" >}}) +[Vectors]({{< relref "/develop/ai/search-and-query/vectors" >}}) reference page for more information). Vector fields can store *text embeddings*, which are AI-generated vector representations of text content. The -[vector distance]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors#distance-metrics" >}}) +[vector distance]({{< relref "/develop/ai/search-and-query/vectors#distance-metrics" >}}) between two embeddings measures their semantic similarity. When you compare the similarity of a query embedding with stored embeddings, Redis can retrieve documents that closely match the query's meaning. @@ -40,7 +40,7 @@ onwards, `node-redis` uses query dialect 2 by default. Redis query engine methods such as [`ft.search()`]({{< relref "/commands/ft.search" >}}) will explicitly request this dialect, overriding the default set for the server. See -[Query dialects]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects" >}}) +[Query dialects]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects" >}}) for more information. {{< /note >}} @@ -106,13 +106,13 @@ try { Next, create the index with the following schema: - `content`: Text field for the content to index -- `genre`: [Tag]({{< relref "/develop/interact/search-and-query/advanced-concepts/tags" >}}) +- `genre`: [Tag]({{< relref "/develop/ai/search-and-query/advanced-concepts/tags" >}}) field representing the text's genre -- `embedding`: [Vector]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors" >}}) +- `embedding`: [Vector]({{< relref "/develop/ai/search-and-query/vectors" >}}) field with: - - [HNSW]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors#hnsw-index" >}}) + - [HNSW]({{< relref "/develop/ai/search-and-query/vectors#hnsw-index" >}}) indexing - - [L2]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors#distance-metrics" >}}) + - [L2]({{< relref "/develop/ai/search-and-query/vectors#distance-metrics" >}}) distance metric - Float32 values - 768 dimensions (matching the embedding model) @@ -321,5 +321,5 @@ jdoc:3: 'Today is a sunny day', Score: 1.50889515877 ## Learn more See -[Vector search]({{< relref "/develop/interact/search-and-query/query/vector-search" >}}) +[Vector search]({{< relref "/develop/ai/search-and-query/query/vector-search" >}}) for more information about indexing options, distance metrics, and query format. diff --git a/content/develop/clients/php/queryjson.md b/content/develop/clients/php/queryjson.md index 07ea66221c..78cee79731 100644 --- a/content/develop/clients/php/queryjson.md +++ b/content/develop/clients/php/queryjson.md @@ -16,7 +16,7 @@ weight: 20 --- This example shows how to create a -[search index]({{< relref "/develop/interact/search-and-query/indexing" >}}) +[search index]({{< relref "/develop/ai/search-and-query/indexing" >}}) for [JSON]({{< relref "/develop/data-types/json" >}}) documents and run queries against the index. It then goes on to show the slight differences in the equivalent code for [hash]({{< relref "/develop/data-types/hashes" >}}) @@ -27,7 +27,7 @@ documents. Redis query engine methods such as [`ftSearch()`]({{< relref "/commands/ft.search" >}}) will explicitly request this dialect, overriding the default set for the server. See -[Query dialects]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects" >}}) +[Query dialects]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects" >}}) for more information. {{< /note >}} @@ -101,10 +101,10 @@ $r = new PredisClient([ ``` Create an -[index]({{< relref "/develop/interact/search-and-query/indexing" >}}). +[index]({{< relref "/develop/ai/search-and-query/indexing" >}}). In this example, only JSON documents with the key prefix `user:` are indexed. For more information, see -[Query syntax]({{< relref "/develop/interact/search-and-query/query/" >}}). +[Query syntax]({{< relref "/develop/ai/search-and-query/query/" >}}). ```php $schema = [ @@ -140,7 +140,7 @@ $r->jsonset('user:3', '$', $user3); ## Query the data You can now use the index to search the JSON objects. The -[query]({{< relref "/develop/interact/search-and-query/query" >}}) +[query]({{< relref "/develop/ai/search-and-query/query" >}}) below searches for objects that have the text "Paul" in any field and have an `age` value in the range 30 to 40: @@ -165,7 +165,7 @@ echo json_encode($res), PHP_EOL; ``` Use an -[aggregation query]({{< relref "/develop/interact/search-and-query/query/aggregation" >}}) +[aggregation query]({{< relref "/develop/ai/search-and-query/query/aggregation" >}}) to count all users in each city. ```php @@ -249,5 +249,5 @@ echo json_encode($res), PHP_EOL; ## More information -See the [Redis query engine]({{< relref "/develop/interact/search-and-query" >}}) docs +See the [Redis query engine]({{< relref "/develop/ai/search-and-query" >}}) docs for a full description of all query features with examples. diff --git a/content/develop/clients/php/vecsearch.md b/content/develop/clients/php/vecsearch.md index 2167c50695..57d027510e 100644 --- a/content/develop/clients/php/vecsearch.md +++ b/content/develop/clients/php/vecsearch.md @@ -15,14 +15,14 @@ title: Index and query vectors weight: 30 --- -[Redis Query Engine]({{< relref "/develop/interact/search-and-query" >}}) +[Redis Query Engine]({{< relref "/develop/ai/search-and-query" >}}) lets you index vector fields in [hash]({{< relref "/develop/data-types/hashes" >}}) or [JSON]({{< relref "/develop/data-types/json" >}}) objects (see the -[Vectors]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors" >}}) +[Vectors]({{< relref "/develop/ai/search-and-query/vectors" >}}) reference page for more information). Among other things, vector fields can store *text embeddings*, which are AI-generated vector representations of the semantic information in pieces of text. The -[vector distance]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors#distance-metrics" >}}) +[vector distance]({{< relref "/develop/ai/search-and-query/vectors#distance-metrics" >}}) between two embeddings indicates how similar they are semantically. By comparing the similarity of an embedding generated from some query text with embeddings stored in hash or JSON fields, Redis can retrieve documents that closely match the query in terms @@ -40,7 +40,7 @@ separate section to explain the Redis query engine methods such as [`ftSearch()`]({{< relref "/commands/ft.search" >}}) will explicitly request this dialect, overriding the default set for the server. See -[Query dialects]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects" >}}) +[Query dialects]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects" >}}) for more information. {{< /note >}} @@ -109,12 +109,12 @@ try { Next, create the index. The schema in the example below includes three fields: the text content to index, a -[tag]({{< relref "/develop/interact/search-and-query/advanced-concepts/tags" >}}) +[tag]({{< relref "/develop/ai/search-and-query/advanced-concepts/tags" >}}) field to represent the "genre" of the text, and the embedding vector generated from the original text content. The `embedding` field specifies -[HNSW]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors#hnsw-index" >}}) +[HNSW]({{< relref "/develop/ai/search-and-query/vectors#hnsw-index" >}}) indexing, the -[L2]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors#distance-metrics" >}}) +[L2]({{< relref "/develop/ai/search-and-query/vectors#distance-metrics" >}}) vector distance metric, `Float32` values to represent the vector's components, and 384 dimensions, as required by the `all-MiniLM-L6-v2` embedding model. @@ -209,10 +209,10 @@ sorted to rank them in order of ascending distance. The code below creates the query embedding using the `$extractor()` function, as with the indexing, and passes it as a parameter when the query executes (see -[Vector search]({{< relref "/develop/interact/search-and-query/query/vector-search" >}}) +[Vector search]({{< relref "/develop/ai/search-and-query/query/vector-search" >}}) for more information about using query parameters with embeddings). The query is a -[K nearest neighbors (KNN)]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors#knn-vector-search" >}}) +[K nearest neighbors (KNN)]({{< relref "/develop/ai/search-and-query/vectors#knn-vector-search" >}}) search that sorts the results in order of vector distance from the query vector. The results are returned as an array with the number of results in the @@ -408,6 +408,6 @@ Field: vector_distance, Value: 44.6189727783 ## Learn more See -[Vector search]({{< relref "/develop/interact/search-and-query/query/vector-search" >}}) +[Vector search]({{< relref "/develop/ai/search-and-query/query/vector-search" >}}) for more information about the indexing options, distance metrics, and query format for vectors. diff --git a/content/develop/clients/redis-py/produsage.md b/content/develop/clients/redis-py/produsage.md index 6144609771..b04d2cf6df 100644 --- a/content/develop/clients/redis-py/produsage.md +++ b/content/develop/clients/redis-py/produsage.md @@ -162,7 +162,7 @@ module. The list below describes some of the most common exceptions. (as when you try an ['LPUSH']({{< relref "/develop/data-types/lists#automatic-creation-and-removal-of-keys" >}}) command on a string key), creating an - [index]({{< relref "/develop/interact/search-and-query/indexing" >}}) + [index]({{< relref "/develop/ai/search-and-query/indexing" >}}) with a name that already exists, and using an invalid ID for a [stream entry]({{< relref "/develop/data-types/streams/#entry-ids" >}}). - `TimeoutError`: Thrown when a timeout persistently happens for a command, diff --git a/content/develop/clients/redis-py/queryjson.md b/content/develop/clients/redis-py/queryjson.md index e5d8784b21..fce13e3751 100644 --- a/content/develop/clients/redis-py/queryjson.md +++ b/content/develop/clients/redis-py/queryjson.md @@ -16,7 +16,7 @@ weight: 30 --- This example shows how to create a -[search index]({{< relref "/develop/interact/search-and-query/indexing" >}}) +[search index]({{< relref "/develop/ai/search-and-query/indexing" >}}) for [JSON]({{< relref "/develop/data-types/json" >}}) documents and run queries against the index. It then goes on to show the slight differences in the equivalent code for [hash]({{< relref "/develop/data-types/hashes" >}}) @@ -27,7 +27,7 @@ documents. Redis query engine methods such as [`ft().search()`]({{< relref "/commands/ft.search" >}}) will explicitly request this dialect, overriding the default set for the server. See -[Query dialects]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects" >}}) +[Query dialects]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects" >}}) for more information. {{< /note >}} @@ -66,7 +66,7 @@ to learn more about the available connection options. Create an index for the JSON data. The code below specifies that only JSON documents with the key prefix `user:` are indexed. For more information, see -[Query syntax]({{< relref "/develop/interact/search-and-query/query/" >}}). +[Query syntax]({{< relref "/develop/ai/search-and-query/query/" >}}). {{< clients-example py_home_json make_index >}} {{< /clients-example >}} @@ -84,7 +84,7 @@ objects automatically as you add them: ## Query the data You can now use the index to search the JSON objects. The -[query]({{< relref "/develop/interact/search-and-query/query" >}}) +[query]({{< relref "/develop/ai/search-and-query/query" >}}) below searches for objects that have the text "Paul" in any field and have an `age` value in the range 30 to 40: @@ -97,7 +97,7 @@ Specify query options to return only the `city` field: {{< /clients-example >}} Use an -[aggregation query]({{< relref "/develop/interact/search-and-query/query/aggregation" >}}) +[aggregation query]({{< relref "/develop/ai/search-and-query/query/aggregation" >}}) to count all users in each city. {{< clients-example py_home_json query3 >}} @@ -136,5 +136,5 @@ result `Document` object instead of in an enclosing `json` dictionary: ## More information -See the [Redis query engine]({{< relref "/develop/interact/search-and-query" >}}) docs +See the [Redis query engine]({{< relref "/develop/ai/search-and-query" >}}) docs for a full description of all query features with examples. diff --git a/content/develop/clients/redis-py/vecsearch.md b/content/develop/clients/redis-py/vecsearch.md index ba08cfabbf..23758077e4 100644 --- a/content/develop/clients/redis-py/vecsearch.md +++ b/content/develop/clients/redis-py/vecsearch.md @@ -15,14 +15,14 @@ title: Index and query vectors weight: 40 --- -[Redis Query Engine]({{< relref "/develop/interact/search-and-query" >}}) +[Redis Query Engine]({{< relref "/develop/ai/search-and-query" >}}) lets you index vector fields in [hash]({{< relref "/develop/data-types/hashes" >}}) or [JSON]({{< relref "/develop/data-types/json" >}}) objects (see the -[Vectors]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors" >}}) +[Vectors]({{< relref "/develop/ai/search-and-query/vectors" >}}) reference page for more information). Among other things, vector fields can store *text embeddings*, which are AI-generated vector representations of the semantic information in pieces of text. The -[vector distance]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors#distance-metrics" >}}) +[vector distance]({{< relref "/develop/ai/search-and-query/vectors#distance-metrics" >}}) between two embeddings indicates how similar they are semantically. By comparing the similarity of an embedding generated from some query text with embeddings stored in hash or JSON fields, Redis can retrieve documents that closely match the query in terms @@ -40,7 +40,7 @@ separate section to explain the Redis query engine methods such as [`ft().search()`]({{< relref "/commands/ft.search" >}}) will explicitly request this dialect, overriding the default set for the server. See -[Query dialects]({{< relref "/develop/interact/search-and-query/advanced-concepts/dialects" >}}) +[Query dialects]({{< relref "/develop/ai/search-and-query/advanced-concepts/dialects" >}}) for more information. {{< /note >}} @@ -101,12 +101,12 @@ except redis.exceptions.ResponseError: Next, create the index. The schema in the example below specifies hash objects for storage and includes three fields: the text content to index, a -[tag]({{< relref "/develop/interact/search-and-query/advanced-concepts/tags" >}}) +[tag]({{< relref "/develop/ai/search-and-query/advanced-concepts/tags" >}}) field to represent the "genre" of the text, and the embedding vector generated from the original text content. The `embedding` field specifies -[HNSW]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors#hnsw-index" >}}) +[HNSW]({{< relref "/develop/ai/search-and-query/vectors#hnsw-index" >}}) indexing, the -[L2]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors#distance-metrics" >}}) +[L2]({{< relref "/develop/ai/search-and-query/vectors#distance-metrics" >}}) vector distance metric, `Float32` values to represent the vector's components, and 384 dimensions, as required by the `all-MiniLM-L6-v2` embedding model. @@ -181,7 +181,7 @@ results in order of this numeric similarity value. The code below creates the query embedding using `model.encode()`, as with the indexing, and passes it as a parameter when the query executes (see -[Vector search]({{< relref "/develop/interact/search-and-query/query/vector-search" >}}) +[Vector search]({{< relref "/develop/ai/search-and-query/query/vector-search" >}}) for more information about using query parameters with embeddings). ```python @@ -351,6 +351,6 @@ Result{ ## Learn more See -[Vector search]({{< relref "/develop/interact/search-and-query/query/vector-search" >}}) +[Vector search]({{< relref "/develop/ai/search-and-query/query/vector-search" >}}) for more information about the indexing options, distance metrics, and query format for vectors. diff --git a/content/develop/clients/redis-py/vecsets.md b/content/develop/clients/redis-py/vecsets.md index 3114622a01..5794b97625 100644 --- a/content/develop/clients/redis-py/vecsets.md +++ b/content/develop/clients/redis-py/vecsets.md @@ -158,7 +158,7 @@ transmission time. If you later use [`vemb()`]({{< relref "/commands/vemb" >}}) to retrieve the embedding, it will return the vector as an array rather than the original byte string (note that this is different from the behavior of byte strings in -[hash vector indexing]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors" >}})). +[hash vector indexing]({{< relref "/develop/ai/search-and-query/vectors" >}})). The call to `vadd()` also adds the `born` and `died` values from the original dictionary as attribute data. You can access this during a query @@ -301,7 +301,7 @@ about text embeddings and other AI techniques you can use with Redis. You may also be interested in [vector search]({{< relref "/develop/clients/redis-py/vecsearch" >}}). This is a feature of the -[Redis query engine]({{< relref "/develop/interact/search-and-query" >}}) +[Redis query engine]({{< relref "/develop/ai/search-and-query" >}}) that lets you retrieve [JSON]({{< relref "/develop/data-types/json" >}}) and [hash]({{< relref "/develop/data-types/hashes" >}}) documents based on diff --git a/content/develop/data-types/geospatial.md b/content/develop/data-types/geospatial.md index bd23f06bc3..e4144075da 100644 --- a/content/develop/data-types/geospatial.md +++ b/content/develop/data-types/geospatial.md @@ -21,8 +21,8 @@ Redis geospatial indexes let you store coordinates and search for them. This data structure is useful for finding nearby points within a given radius or bounding box. {{< note >}}Take care not to confuse the Geospatial data type with the -[Geospatial]({{< relref "/develop/interact/search-and-query/advanced-concepts/geo" >}}) -features in [Redis Query Engine]({{< relref "/develop/interact/search-and-query" >}}). +[Geospatial]({{< relref "/develop/ai/search-and-query/advanced-concepts/geo" >}}) +features in [Redis Query Engine]({{< relref "/develop/ai/search-and-query" >}}). Although there are some similarities between these two features, the data type is intended for simpler use cases and doesn't have the range of format options and queries available in Redis Query Engine. diff --git a/content/develop/data-types/json/_index.md b/content/develop/data-types/json/_index.md index d7e5b8e079..ba4a1ad8fd 100644 --- a/content/develop/data-types/json/_index.md +++ b/content/develop/data-types/json/_index.md @@ -19,7 +19,7 @@ weight: 11 [![Discord](https://img.shields.io/discord/697882427875393627?style=flat-square)](https://discord.gg/QUkjSsk) [![Github](https://img.shields.io/static/v1?label=&message=repository&color=5961FF&logo=github)](https://github.com/RedisJSON/RedisJSON/) -The JSON capability of Redis Open Source provides JavaScript Object Notation (JSON) support for Redis. It lets you store, update, and retrieve JSON values in a Redis database, similar to any other Redis data type. Redis JSON also works seamlessly with the [Redis Query Engine]({{< relref "/develop/interact/search-and-query/" >}}) to let you [index and query JSON documents]({{< relref "/develop/interact/search-and-query/indexing/" >}}). +The JSON capability of Redis Open Source provides JavaScript Object Notation (JSON) support for Redis. It lets you store, update, and retrieve JSON values in a Redis database, similar to any other Redis data type. Redis JSON also works seamlessly with the [Redis Query Engine]({{< relref "/develop/ai/search-and-query/" >}}) to let you [index and query JSON documents]({{< relref "/develop/ai/search-and-query/indexing/" >}}). ## Primary features diff --git a/content/develop/data-types/json/indexing_JSON.md b/content/develop/data-types/json/indexing_JSON.md index 9ac106622e..7f1d8499dd 100644 --- a/content/develop/data-types/json/indexing_JSON.md +++ b/content/develop/data-types/json/indexing_JSON.md @@ -15,8 +15,8 @@ title: Index/Search JSON documents weight: 2 --- -In addition to storing JSON documents, you can also index them using the [Redis Query Engine]({{< relref "/develop/interact/search-and-query/" >}}) feature. This enables full-text search capabilities and document retrieval based on their content. +In addition to storing JSON documents, you can also index them using the [Redis Query Engine]({{< relref "/develop/ai/search-and-query/" >}}) feature. This enables full-text search capabilities and document retrieval based on their content. To use these features, install [Redis Open Source]({{< relref "/operate/oss_and_stack/" >}}). -See the [tutorial]({{< relref "/develop/interact/search-and-query/indexing/" >}}) to learn how to search and query your JSON. \ No newline at end of file +See the [tutorial]({{< relref "/develop/ai/search-and-query/indexing/" >}}) to learn how to search and query your JSON. \ No newline at end of file diff --git a/content/develop/data-types/sets.md b/content/develop/data-types/sets.md index 0ee89ca47d..4f35860a85 100644 --- a/content/develop/data-types/sets.md +++ b/content/develop/data-types/sets.md @@ -183,7 +183,7 @@ Sets membership checks on large datasets (or on streaming data) can use a lot of If you're concerned about memory usage and don't need perfect precision, consider a [Bloom filter or Cuckoo filter]({{< relref "/develop/data-types/probabilistic/bloom-filter" >}}) as an alternative to a set. Redis sets are frequently used as a kind of index. -If you need to index and query your data, consider the [JSON]({{< relref "/develop/data-types/json/" >}}) data type and the [Redis Query Engine]({{< relref "/develop/interact/search-and-query/" >}}) features. +If you need to index and query your data, consider the [JSON]({{< relref "/develop/data-types/json/" >}}) data type and the [Redis Query Engine]({{< relref "/develop/ai/search-and-query/" >}}) features. ## Learn more diff --git a/content/develop/data-types/sorted-sets.md b/content/develop/data-types/sorted-sets.md index 8fde39581d..37cc3b18a2 100644 --- a/content/develop/data-types/sorted-sets.md +++ b/content/develop/data-types/sorted-sets.md @@ -246,7 +246,7 @@ This command's time complexity is O(log(n) + m), where _m_ is the number of resu ## Alternatives Redis sorted sets are sometimes used for indexing other Redis data structures. -If you need to index and query your data, consider the [JSON]({{< relref "/develop/data-types/json/" >}}) data type and the [Redis Query Engine]({{< relref "/develop/interact/search-and-query/" >}}) features. +If you need to index and query your data, consider the [JSON]({{< relref "/develop/data-types/json/" >}}) data type and the [Redis Query Engine]({{< relref "/develop/ai/search-and-query/" >}}) features. ## Learn more diff --git a/content/develop/get-started/document-database.md b/content/develop/get-started/document-database.md index 5e95a5ee6f..aa447a8e08 100644 --- a/content/develop/get-started/document-database.md +++ b/content/develop/get-started/document-database.md @@ -169,7 +169,7 @@ Below is a command to perform an exact match query that finds all bicycles with 2) "{\"brand\":\"Noka Bikes\",\"model\":\"Kahuna\",\"price\":3200,\"description\":\"Whether you want to try your hand at XC racing or are looking for a lively trail bike that's just as inspiring on the climbs as it is over rougher ground, the Wilder is one heck of a bike built specifically for short women. Both the frames and components have been tweaked to include a women\xe2\x80\x99s saddle, different bars and unique colourway.\",\"condition\":\"used\"}" {{< / clients-example >}} -Please see the [query documentation]({{< relref "/develop/interact/search-and-query/query/" >}}) to learn how to make more advanced queries. +Please see the [query documentation]({{< relref "/develop/ai/search-and-query/query/" >}}) to learn how to make more advanced queries. ## Next steps diff --git a/content/develop/get-started/vector-database.md b/content/develop/get-started/vector-database.md index 6b2511074a..10d87c1ede 100644 --- a/content/develop/get-started/vector-database.md +++ b/content/develop/get-started/vector-database.md @@ -186,7 +186,7 @@ Here is a breakdown of the `VECTOR` field definition: * `DIM 768`: The length or dimension of the embeddings, determined by the chosen embedding model. * `DISTANCE_METRIC COSINE`: The chosen distance function: [cosine distance](https://en.wikipedia.org/wiki/Cosine_similarity). -You can find further details about all these options in the [vector reference documentation]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors" >}}). +You can find further details about all these options in the [vector reference documentation]({{< relref "/develop/ai/search-and-query/vectors" >}}). ### 2. Check the state of the index @@ -277,8 +277,8 @@ From the description, this bike is an excellent match for younger children, and ## Next steps -1. You can learn more about the query options, such as filters and vector range queries, by reading the [vector reference documentation]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors" >}}). -2. The complete [Redis Query Engine documentation]({{< relref "/develop/interact/search-and-query/" >}}) might be interesting for you. +1. You can learn more about the query options, such as filters and vector range queries, by reading the [vector reference documentation]({{< relref "/develop/ai/search-and-query/vectors" >}}). +2. The complete [Redis Query Engine documentation]({{< relref "/develop/ai/search-and-query/" >}}) might be interesting for you. 3. If you want to follow the code examples more interactively, then you can use the [Jupyter notebook](https://github.com/redis-developer/redis-ai-resources/blob/main/python-recipes/vector-search/00_redispy.ipynb) that inspired this quick start guide. 4. If you want to see more advanced examples of a Redis vector database in action, visit the [Redis AI Resources](https://github.com/redis-developer/redis-ai-resources) page on GitHub. diff --git a/content/develop/interact/_index.md b/content/develop/interact/_index.md index f2abbc67ab..d74d8d67f8 100644 --- a/content/develop/interact/_index.md +++ b/content/develop/interact/_index.md @@ -27,21 +27,21 @@ to interact with your data: ## Search and query with the Redis Query Engine -The [Redis query engine]({{< relref "/develop/interact/search-and-query" >}}) +The [Redis query engine]({{< relref "/develop/ai/search-and-query" >}}) lets you retrieve data by content rather than by key. You -can [index]({{< relref "/develop/interact/search-and-query/indexing" >}}) +can [index]({{< relref "/develop/ai/search-and-query/indexing" >}}) the fields of [hash]({{< relref "/develop/data-types/hashes" >}}) and [JSON]({{< relref "/develop/data-types/json" >}}) objects according to their type and then perform sophisticated -[queries]({{< relref "/develop/interact/search-and-query/query" >}}) +[queries]({{< relref "/develop/ai/search-and-query/query" >}}) on those fields. For example, you can use queries to find: - matches in - [text fields]({{< relref "/develop/interact/search-and-query/query/full-text" >}}) + [text fields]({{< relref "/develop/ai/search-and-query/query/full-text" >}}) - numeric values that fall within a specified - [range]({{< relref "/develop/interact/search-and-query/query/range" >}}) - - [Geospatial]({{< relref "/develop/interact/search-and-query/query/geo-spatial" >}}) + [range]({{< relref "/develop/ai/search-and-query/query/range" >}}) + - [Geospatial]({{< relref "/develop/ai/search-and-query/query/geo-spatial" >}}) coordinates that fall within a specified area - - [Vector matches]({{< relref "/develop/interact/search-and-query/query/vector-search" >}}) + - [Vector matches]({{< relref "/develop/ai/search-and-query/query/vector-search" >}}) against [word embeddings](https://en.wikipedia.org/wiki/Word_embedding) calculated from your text data diff --git a/content/develop/interact/search-and-query/basic-constructs/_index.md b/content/develop/interact/search-and-query/basic-constructs/_index.md deleted file mode 100644 index 39be9bc2ed..0000000000 --- a/content/develop/interact/search-and-query/basic-constructs/_index.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -categories: -- docs -- develop -- stack -- oss -- rs -- rc -- oss -- kubernetes -- clients -description: Basic constructs for searching and querying Redis data -linkTitle: Basic constructs -title: Basic constructs -weight: 2 ---- - -You can use Redis Open Source as a powerful search and query engine. It allows you to create indexes and perform efficient queries on structured data, as well as text-based and vector searches on unstructured data. - -This section introduces the basic constructs of querying and searching, and explains how to use them to build powerful search capabilities into your applications. - -## Documents - -A document is the basic unit of information. It can be any hash or JSON data object you want to be able to index and search. Each document is uniquely identifiable by its key name. - -## Fields - -A document consists of multiple fields, where each field represents a specific attribute or property of the document. Fields can store different types of data, such as strings, numbers, geo-location or even more complex structures like vectors. By indexing these fields, you enable efficient querying and searching based on their values. - -Not all documents need to have the same fields. You can include or exclude fields based on the specific requirements of your application or data model. - -## Indexing fields - -Not all fields are relevant to perform search operations, and indexing all fields may lead to unnecessary overhead. That's why you have the flexibility to choose which fields should be indexed for efficient search operations. By indexing a field, you enable Redis to create an index structure that optimizes search performance on that field. - -Fields that are not indexed will not contribute to search results. However, they can still be retrieved as part of the document data when fetching search results. - -## Schema - -The index structure is defined by a schema. The schema defines how fields are stored and indexed. It specifies the type of each field and other important information. - -To create an index, you need to define the schema for your collection. Learn more about how to define the schema on the [schema definition]({{< relref "/develop/interact/search-and-query/basic-constructs/schema-definition" >}}) page. - -## Learn more: diff --git a/content/develop/interact/search-and-query/query-use-cases/_index.md b/content/develop/interact/search-and-query/query-use-cases/_index.md deleted file mode 100644 index f5d3946a61..0000000000 --- a/content/develop/interact/search-and-query/query-use-cases/_index.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -categories: -- docs -- develop -- stack -- oss -- rs -- rc -- oss -- kubernetes -- clients -description: Redis Query Engine use cases -linkTitle: Use cases -title: Use cases -weight: 5 ---- - -**Application search and external secondary index** - -Redis Open Source supports application search, whether the source of record is Redis or another database. In the latter case, you can use Redis as an external secondary index for numeric or full-text data. - -**Secondary index for Redis data** - -You can represent your data model using Redis hashes and JSON documents. You can then declare secondary indexes to support various queries on your data set. Redis updates indexes automatically whenever a hash or JSON document that matches the indexes is added or updated. - -**Geo-distributed search** - -In geo-distributed search, hashes and JSON documents are handled in the usual [active-active manner](https://docs.redis.com/latest/rs/databases/active-active/). The index follows whatever is written in the documents in the database. Create an index on each database, then add synonyms (if used) to each database. - -**Unified search** - -You can use Redis to search across several source systems, like file servers, content management systems (CMS), or customer relationship management (CRM) systems. You can process source data in batches using, for example, ETL tools, or as live streams (for example, Kafka or Redis streams). - -**Analytics** - -Data often originates from several source systems. Redis can provide a unified view of dimensions and facts. You can query data based on dimensions, group by dimension, and apply aggregations to facts. - -{{% alert title="Redis for faceted search" color="warning" %}} - -Facets are multiple explicit dimensions implemented as tags in the Redis Query Engine. You can query data based on facets using aggregations (`COUNT`, `TOLIST`, `FIRST_VALUE`, and `RANDOM_SAMPLE`). - -{{% /alert %}} - -**Ephemeral search (retail)** - -When the user logs on to the site, the purchase-search history is populated into an index from another datastore. This requires lightweight index creation, index expiry, and quick document indexing. - -The application/service creates a temporary and user-specific, full-text index when a user logs in. The application/service has direct access to the user-specific index and the primary datastore. When the user logs out of the service, the index is explicitly removed. Otherwise, the index expires after a while (for example, after the user's session expires). - -Using Redis for this type of application provides these benefits: - -- Search index is only populated when needed. -- Only a small portion (for example, 2%) of users are active at the same time. -- Users are only active for a short period of time. -- A small number of documents are indexed, which is very cost effective in comparison to a persistent search index. - -**Real-time inventory (retail)** - -In real-time inventory retail, the key question is product availability: "What is available where?" The challenges with such projects are performance and accuracy. Redis allows for real-time searching and aggregations over millions of store/SKU combinations. - -You can establish real-time event capture from a legacy inventory system to Redis and then have several inventory services query it. Then, you can use combined queries such as item counts, price ranges, categories, and locations. Take advantage of geo-distributed search (Active-Active) for your remote store locations. - -Using Redis for this type of application provides these benefits: - -- Low-latency queries for downstream consumers like marketing, stores/e-commerce, and fulfillment -- Immediate and higher consistency between stores and data-centers -- Improved customer experience -- Real-time pricing decisions -- Less shopping cart abandonment -- Less remediation (refund, cancellation) - -**Real-time conversation analysis (telecom)** - -Collect, access, store, and utilize communication data in real time. Capture network traffic and store it in a full-text index for the purposes of getting insights into the data. - -Gather data using connection information gathering (source IPs, DNS) and conversation data gathering (Wireshark/TShark live capture). Then filter, transform, and store the conversation data in Redis to perform search queries and create custom dashboards for your analyses. - -Using Redis for this type of application provides these benefits: - -- Insights into performance issues, security threats, and network faults -- Improved service uptime and security - -**Research portal (academia)** - -Research portals let users search for articles, research, specifications, past solutions, and data to answer specific questions and take advantage of existing knowledge and history. - -To build such a system, you can use indexes supporting tag queries, numeric range queries, geo-location queries, and full-text search. - -Using Redis for this type of application provides these benefits: - -- Create relevant, personalized search experiences while enforcing internal and regulatory data governance policies -- Increased productivity, security, and compliance \ No newline at end of file diff --git a/content/develop/tools/insight/release-notes/v.2.56.0.md b/content/develop/tools/insight/release-notes/v.2.56.0.md index 0a12f1aced..c69710041a 100644 --- a/content/develop/tools/insight/release-notes/v.2.56.0.md +++ b/content/develop/tools/insight/release-notes/v.2.56.0.md @@ -26,5 +26,5 @@ This is the General Availability (GA) release of Redis Insight 2.56. - [#3624](https://github.com/RedisInsight/RedisInsight/pull/3624) The ability to hide or show [TTL for individual hash fields](https://redis.io/docs/latest/develop/data-types/hashes/?utm_source=redisinsight&utm_medium=release_notes&utm_campaign=2.52#field-expiration) to create a cleaner, more efficient workspace. This optimization complements the highly requested hash field expiration feature introduced in the [first release candidate of Redis 7.4](https://github.com/redis-stack/redis-stack/releases/tag/v7.4.0-v0). - [#3701](https://github.com/RedisInsight/RedisInsight/pull/3701) Enhanced vector data representation with updated 32-bit and 64-bit vector formatters in the Browser. These changes ensure that vector formatters are applied only to data containing unprintable values when converted to UTF-8, providing a clearer and more accurate view of your data. - [#3714](https://github.com/RedisInsight/RedisInsight/pull/3714) UX optimizations to make it easier and more intuitive to connect to your [Redis Data Integration (RDI)](https://redis.io/data-integration/?utm_source=redisinsight&utm_medium=repository&utm_campaign=release_notes) instance within Redis Insight. -- [#3665](https://github.com/RedisInsight/RedisInsight/pull/3665) A new timestamp formatter in the Browser to improve data readability. This formatter converts timestamps in hash fields to a human-readable format, making it easier to interpret results, validate and optimize queries, and inspect indexed data when using the [Redis Query Engine](https://redis.io/docs/latest/develop/interact/search-and-query/?utm_source=redisinsight&utm_medium=repository&utm_campaign=release_notes). +- [#3665](https://github.com/RedisInsight/RedisInsight/pull/3665) A new timestamp formatter in the Browser to improve data readability. This formatter converts timestamps in hash fields to a human-readable format, making it easier to interpret results, validate and optimize queries, and inspect indexed data when using the [Redis Query Engine](https://redis.io/docs/latest/develop/ai/search-and-query/?utm_source=redisinsight&utm_medium=repository&utm_campaign=release_notes). - [#3730](https://github.com/RedisInsight/RedisInsight/pull/3730) Date and time format customization to make the data more intuitive in Redis Insight. This flexibility helps match your local time zone or standardize it to UTC for better alignment in time-critical operations across global teams. diff --git a/content/develop/tools/insight/release-notes/v.2.60.0.md b/content/develop/tools/insight/release-notes/v.2.60.0.md index 1c2bd4b439..8f0680db88 100644 --- a/content/develop/tools/insight/release-notes/v.2.60.0.md +++ b/content/develop/tools/insight/release-notes/v.2.60.0.md @@ -10,14 +10,14 @@ weight: 1 This is the General Availability (GA) release of Redis Insight 2.60. ### Highlights -- Advanced and schema-aware command auto-complete for [Redis Query Engine](https://redis.io/docs/latest/develop/interact/search-and-query/?utm_source=redisinsight&utm_medium=main&utm_campaign=release_notes) is now available in Workbench, enabling faster and more accurate query building with smart suggestions for indexes, schemas, and expressions. +- Advanced and schema-aware command auto-complete for [Redis Query Engine](https://redis.io/docs/latest/develop/ai/search-and-query/?utm_source=redisinsight&utm_medium=main&utm_campaign=release_notes) is now available in Workbench, enabling faster and more accurate query building with smart suggestions for indexes, schemas, and expressions. - Support for adding multiple elements to the head or tail of lists, for both new or existing keys. - Multiple UI enhancements for clarity and ease of use when editing Redis Data Integration (RDI) jobs. ### Details **Features and improvements** -- [#3553](https://github.com/RedisInsight/RedisInsight/pull/3553), [#3647](https://github.com/RedisInsight/RedisInsight/pull/3647), [#3669](https://github.com/RedisInsight/RedisInsight/pull/3669) Advanced, schema-aware auto-complete for [Redis Query Engine](https://redis.io/docs/latest/develop/interact/search-and-query/?utm_source=redisinsight&utm_medium=main&utm_campaign=release_notes) in Workbench. Enjoy faster query building with context-sensitive suggestions that recognize indexes, schemas, and fields based on your current query. Start typing any [Redis Query Engine](https://redis.io/docs/latest/commands/?group=search) command in Workbench to try this feature. +- [#3553](https://github.com/RedisInsight/RedisInsight/pull/3553), [#3647](https://github.com/RedisInsight/RedisInsight/pull/3647), [#3669](https://github.com/RedisInsight/RedisInsight/pull/3669) Advanced, schema-aware auto-complete for [Redis Query Engine](https://redis.io/docs/latest/develop/ai/search-and-query/?utm_source=redisinsight&utm_medium=main&utm_campaign=release_notes) in Workbench. Enjoy faster query building with context-sensitive suggestions that recognize indexes, schemas, and fields based on your current query. Start typing any [Redis Query Engine](https://redis.io/docs/latest/commands/?group=search) command in Workbench to try this feature. - [#3891](https://github.com/RedisInsight/RedisInsight/pull/3891) Allows to easily push multiple elements to the head or tail of list data types, whether creating new or updating existing lists. - [#3891](https://github.com/RedisInsight/RedisInsight/pull/3891) UX/UI enhancements to provide more details about Redis Data Integration (RDI) job transformation and output results in the dry-run section. - [#3981](https://github.com/RedisInsight/RedisInsight/pull/3981) Removes confirmation prompts for template insertions in Redis Data Integration jobs, simplifying a workflow. diff --git a/content/develop/use/patterns/indexes/index.md b/content/develop/use/patterns/indexes/index.md index f4c49da92b..dfab5476b2 100644 --- a/content/develop/use/patterns/indexes/index.md +++ b/content/develop/use/patterns/indexes/index.md @@ -46,8 +46,8 @@ Once hash or JSON keys have been indexed using the [`FT.CREATE`]({{< relref "com For more information on creating hash and JSON indexes, see the following pages. -* [Hash indexes]({{< relref "/develop/interact/search-and-query/basic-constructs/schema-definition" >}}) -* [JSON indexes]({{< relref "/develop/interact/search-and-query/indexing" >}}) +* [Hash indexes]({{< relref "/develop/ai/search-and-query/indexing/schema-definition" >}}) +* [JSON indexes]({{< relref "/develop/ai/search-and-query/indexing" >}}) ## Simple numerical indexes with sorted sets diff --git a/content/develop/whats-new/_index.md b/content/develop/whats-new/_index.md index 0bc6edca0f..84bd2cf07b 100644 --- a/content/develop/whats-new/_index.md +++ b/content/develop/whats-new/_index.md @@ -66,14 +66,14 @@ weight: 10 ### Search & Query - Best practices: - - [Dev-to-prod guide]({{< relref "/develop/interact/search-and-query/best-practices/dev-to-prod-best-practices.md" >}}) - - [Scalable queries]({{< relref "/develop/interact/search-and-query/best-practices/scalable-query-best-practices.md" >}}) - - [Index lifecycle]({{< relref "/develop/interact/search-and-query/best-practices/index-mgmt-best-practices.md" >}}) + - [Dev-to-prod guide]({{< relref "/develop/ai/search-and-query/best-practices/dev-to-prod-best-practices.md" >}}) + - [Scalable queries]({{< relref "/develop/ai/search-and-query/best-practices/scalable-query-best-practices.md" >}}) + - [Index lifecycle]({{< relref "/develop/ai/search-and-query/best-practices/index-mgmt-best-practices.md" >}}) - New/updated topics: - - [Autocomplete]({{< relref "/develop/interact/search-and-query/advanced-concepts/autocomplete.md" >}}) - - [Escaping & tokenization]({{< relref "/develop/interact/search-and-query/advanced-concepts/escaping.md" >}}) - - [Geo indexing]({{< relref "/develop/interact/search-and-query/indexing/geoindex.md" >}}) - - [Sorting, scoring, stemming]({{< relref "/develop/interact/search-and-query/advanced-concepts/sorting.md" >}}) + - [Autocomplete]({{< relref "/develop/ai/search-and-query/advanced-concepts/autocomplete.md" >}}) + - [Escaping & tokenization]({{< relref "/develop/ai/search-and-query/advanced-concepts/escaping.md" >}}) + - [Geo indexing]({{< relref "/develop/ai/search-and-query/indexing/geoindex.md" >}}) + - [Sorting, scoring, stemming]({{< relref "/develop/ai/search-and-query/advanced-concepts/sorting.md" >}}) --- @@ -132,10 +132,10 @@ weight: 10 * Updated the [RAG with Redis quick start guide]({{< relref "/develop/get-started/rag" >}}). * Updates for [Redis Open Source version 7.4]({{< relref "/operate/oss_and_stack/stack-with-enterprise/release-notes/redisce" >}}). * Added new [Redis Insight debugging]({{< relref "/develop/tools/insight/debugging" >}}) page. -* Completed a major re-write/restructuring of the [vector indexing page]({{< relref "/develop/interact/search-and-query/advanced-concepts/vectors" >}}). +* Completed a major re-write/restructuring of the [vector indexing page]({{< relref "/develop/ai/search-and-query/vectors" >}}). * Added new [client-side caching page]({{< relref "/develop/clients/client-side-caching" >}}). * Added new documentation for the [RDI in Redis Insight feature]({{< relref "/develop/tools/insight/rdi-connector" >}}). * Added new documentation for the [Redis for VS Code feature]({{< relref "/develop/tools/redis-for-vscode/" >}}). -* Added multi-language code examples to the Redis Query Engine [query]({{< relref "/develop/interact/search-and-query/query">}}) pages. +* Added multi-language code examples to the Redis Query Engine [query]({{< relref "/develop/ai/search-and-query/query">}}) pages. * Added client-side caching information to the [supported clients]({{< relref "/develop/clients/client-side-caching#which-client-libraries-support-client-side-caching" >}}) pages. * Numerous changes to the [Redis client content]({{< relref "/develop/clients" >}}). diff --git a/content/integrate/redisom-for-python/_index.md b/content/integrate/redisom-for-python/_index.md index 5afa76bc08..3d48114d3d 100644 --- a/content/integrate/redisom-for-python/_index.md +++ b/content/integrate/redisom-for-python/_index.md @@ -58,7 +58,7 @@ To run this application you'll need: * [git](https://git-scm.com/download) - to clone the repo to your machine. * [Python 3.9 or higher](https://www.python.org/downloads/). -* A [Redis Stack](https://redis.io) database, or Redis with the [Search and Query]({{< relref "/develop/interact/search-and-query/" >}}) and [JSON]({{< relref "/develop/data-types/json/" >}}) features installed. We've provided a `docker-compose.yml` for this. You can also [sign up for a free 30Mb database with Redis Cloud](https://redis.com/try-free/?utm_source=redisio&utm_medium=referral&utm_campaign=2023-09-try_free&utm_content=cu-redis_cloud_users) - be sure to check the Redis Stack option when creating your cloud database. +* A [Redis Stack](https://redis.io) database, or Redis with the [Search and Query]({{< relref "/develop/ai/search-and-query/" >}}) and [JSON]({{< relref "/develop/data-types/json/" >}}) features installed. We've provided a `docker-compose.yml` for this. You can also [sign up for a free 30Mb database with Redis Cloud](https://redis.com/try-free/?utm_source=redisio&utm_medium=referral&utm_campaign=2023-09-try_free&utm_content=cu-redis_cloud_users) - be sure to check the Redis Stack option when creating your cloud database. * [curl](https://curl.se/), or [Postman](https://www.postman.com/) - to send HTTP requests to the application. We'll provide examples using curl in this document. * Optional: [Redis Insight](https://redis.com/redis-enterprise/redis-insight/), a free data visualization and database management tool for Redis. When downloading Redis Insight, be sure to select version 2.x or use the version that comes with Redis Stack. diff --git a/content/integrate/redisvl/api/query.md b/content/integrate/redisvl/api/query.md index 5144f57116..32f8f0780b 100644 --- a/content/integrate/redisvl/api/query.md +++ b/content/integrate/redisvl/api/query.md @@ -933,7 +933,7 @@ A query for running a full text search, along with an optional filter expression * **text_field_name** (*str*) – The name of the document field to perform text search on. * **text_scorer** (*str* *,* *optional*) – The text scoring algorithm to use. Defaults to BM25STD. Options are {TFIDF, BM25STD, BM25, TFIDF.DOCNORM, DISMAX, DOCSCORE}. - See [https://redis.io/docs/latest/develop/interact/search-and-query/advanced-concepts/scoring/](https://redis.io/docs/latest/develop/interact/search-and-query/advanced-concepts/scoring/) + See [https://redis.io/docs/latest/develop/ai/search-and-query/advanced-concepts/scoring/](https://redis.io/docs/latest/develop/ai/search-and-query/advanced-concepts/scoring/) * **filter_expression** (*Union* *[* *str* *,* [*FilterExpression*]({{< relref "filter/#filterexpression" >}}) *]* *,* *optional*) – A filter to apply along with the text search. Defaults to None. * **return_fields** (*List* *[* *str* *]*) – The declared fields to return with search diff --git a/content/operate/kubernetes/recommendations/node-selection.md b/content/operate/kubernetes/recommendations/node-selection.md index a001ce78df..af288e511b 100644 --- a/content/operate/kubernetes/recommendations/node-selection.md +++ b/content/operate/kubernetes/recommendations/node-selection.md @@ -185,15 +185,28 @@ during partitions or other rack (or region) related failures. {{%note%}}When creating your rack-zone ID, there are some constraints to consider; see [rack-zone awareness]({{< relref "/operate/rs/clusters/configure/rack-zone-awareness#rack-zone-id-rules" >}}) for more info. {{%/note%}} - Rack-zone awareness is a single property in the Redis Enterprise cluster CRD named `rackAwarenessNodeLabel`. -This value for this label is commonly `topology.kubernetes.io/zone` as documented in -['Running in multiple zones'](https://kubernetes.io/docs/setup/best-practices/multiple-zones/#nodes-are-labeled). + +### Choosing a node label + +The most commonly used label for rack-zone awareness is `topology.kubernetes.io/zone`, which is a well-known Kubernetes label that specifies the zone where a node runs. This label is readily available on all nodes in many Kubernetes platforms, as documented in ['Running in multiple zones'](https://kubernetes.io/docs/setup/best-practices/multiple-zones/#nodes-are-labeled). + +However, not all Kubernetes platforms configure this label by default. You can use any custom label that indicates the topology information (rack, zone, region, etc.) for your nodes. + +### Node labeling requirements + +{{< warning >}} +**All eligible nodes must be labeled** with the chosen label for rack-awareness to work properly. The operator expects that all nodes where Redis Enterprise pods can be scheduled will have the specified label, and will fail and stop reconciliation if any eligible nodes are missing the label. +{{< /warning >}} + +Eligible nodes are all nodes where Redis Enterprise pods can be scheduled. By default, these are all worker nodes in the cluster, but this can be restricted by specifying `.spec.nodeSelector` in the Redis Enterprise cluster (REC) configuration. + +The value for the chosen label must indicate the topology information (rack, zone, region, etc.) for each node. You can check the value for this label in your nodes with the command: ```sh -$kubectl get nodes -o custom-columns="name:metadata.name","rack\\zone:metadata.labels.failure-domain\.beta\.kubernetes\.io/zone" +$ kubectl get nodes -o custom-columns="name:metadata.name","rack\\zone:metadata.labels.topology\.kubernetes\.io/zone" name rack\zone ip-10-0-x-a.eu-central-1.compute.internal eu-central-1a diff --git a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-1.4-release-notes.md b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-1.4-release-notes.md index 5424319930..3c838a86ac 100644 --- a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-1.4-release-notes.md +++ b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-1.4-release-notes.md @@ -382,7 +382,7 @@ redis-server --loadmodule ./redisearch.so GC_POLICY FORK ### Runtime configuration -RediSearch's [configuration]({{}}) is applied via arguments passed to the module at load time. This release introduces the new `FT.CONFIG` command that allows to retrieve the current configuration as well as change it during runtime. +RediSearch's [configuration]({{}}) is applied via arguments passed to the module at load time. This release introduces the new `FT.CONFIG` command that allows to retrieve the current configuration as well as change it during runtime. ### Unlimited autocomplete results @@ -418,11 +418,11 @@ The `FT.ALTER` command has been introduced, and provides the ability to add new ### Query spelling correction -Query spelling correction, a.k.a "did you mean", is now provided via the `FT.SPELLCHECK` command. It enables generating suggestions for search terms that could be misspelled. For more details see [Query Spelling Correction]({{}}). +Query spelling correction, a.k.a "did you mean", is now provided via the `FT.SPELLCHECK` command. It enables generating suggestions for search terms that could be misspelled. For more details see [Query Spelling Correction]({{}}). ### Phonetic matching -Phonetic matching, a.k.a "Jon or John?", is now supported via the `PHONETIC` text field attribute. The terms in such fields are also indexed by their phonetic equivalents, and search results include these by default. For more details see [Phonetic Matching]({{}}). +Phonetic matching, a.k.a "Jon or John?", is now supported via the `PHONETIC` text field attribute. The terms in such fields are also indexed by their phonetic equivalents, and search results include these by default. For more details see [Phonetic Matching]({{}}). ### More fuzziness in search diff --git a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.0-release-notes.md b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.0-release-notes.md index 4a53e3ff48..d817c35a65 100644 --- a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.0-release-notes.md +++ b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.0-release-notes.md @@ -148,9 +148,9 @@ Details: - Minor additions: - #[1696](https://github.com/redisearch/redisearch/issues/1696) The maximum number of results produced by `FT.AGGREGATE` is now configurable: `MAXAGGREGATERESULTS`. - - #[1708](https://github.com/redisearch/redisearch/issues/1708) [Stemming]({{}}) updated with support of new languages: Basque, Catalan, Greek, Indonesian, Irish, Lithuanian, Nepali. + - #[1708](https://github.com/redisearch/redisearch/issues/1708) [Stemming]({{}}) updated with support of new languages: Basque, Catalan, Greek, Indonesian, Irish, Lithuanian, Nepali. - Minor bugfixes: - - #[1668](https://github.com/redisearch/redisearch/issues/1668) Fixes support of stop words in [tag fields]({{}}). Solves also the following related issues: #[166](https://github.com/redisearch/redisearch/issues/166), #[984](https://github.com/redisearch/redisearch/issues/984), #[1237](https://github.com/redisearch/redisearch/issues/1237), #[1294](https://github.com/redisearch/redisearch/issues/1294). + - #[1668](https://github.com/redisearch/redisearch/issues/1668) Fixes support of stop words in [tag fields]({{}}). Solves also the following related issues: #[166](https://github.com/redisearch/redisearch/issues/166), #[984](https://github.com/redisearch/redisearch/issues/984), #[1237](https://github.com/redisearch/redisearch/issues/1237), #[1294](https://github.com/redisearch/redisearch/issues/1294). - #[1689](https://github.com/redisearch/redisearch/issues/1689) Consistency fix and performance improvement when using `FT.SUGGET` with [RSCoordinator](https://github.com/RediSearch/RSCoordinator). - #[1774](https://github.com/redisearch/redisearch/issues/1774) `MINPREFIX` and `MAXFILTEREXPANSION` configuration options can be changed at runtime. - #[1745](https://github.com/redisearch/redisearch/issues/1745) Enforce 0 value for `REDUCER COUNT`. @@ -268,7 +268,7 @@ and index name and a synonym group ID. This ID can be any ASCII string. - RediSearch will not index hashes whose fields do not match an existing index schema. You can see the number of hashes not indexed using `FT.INFO` - `hash_indexing_failures `. The requirement for adding support for partially indexing and blocking is captured here: [#1455](https://github.com/RediSearch/RediSearch/pull/1455). - Removed support for `NOSAVE`. - RDB loading will take longer due to the index not being persisted. -- Field names in the [query syntax]({{}}) are now case-sensitive. +- Field names in the [query syntax]({{}}) are now case-sensitive. - Deprecated commands: - `FT.DROP` (replaced by `FT.DROPINDEX`, which by default keeps the documents) - `FT.ADD` (mapped to `HSET` for backward compatibility) diff --git a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.10-release-notes.md b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.10-release-notes.md index dec6a27cb4..a1be086c57 100644 --- a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.10-release-notes.md +++ b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.10-release-notes.md @@ -171,7 +171,7 @@ This is a maintenance release for RediSearch 2.10. Update urgency: `HIGH` - There is a critical bug that may affect a subset of users. Upgrade! Bug fixes: -- [#4916](https://github.com/redisearch/redisearch/pull/4916) - Union query, similar to `"is|the"`, starting with 2 [storwords](https://redis.io/docs/latest/develop/interact/search-and-query/advanced-concepts/stopwords/) could cause a crash (MOD-7495) +- [#4916](https://github.com/redisearch/redisearch/pull/4916) - Union query, similar to `"is|the"`, starting with 2 [storwords](https://redis.io/docs/latest/develop/ai/search-and-query/advanced-concepts/stopwords/) could cause a crash (MOD-7495) - [#4895](https://github.com/redisearch/redisearch/pull/4895) - `FT.AGGREGATE` with `VERBATIM` option is not handled by the shards in cluster mode (MOD-7463) - [#4922](https://github.com/redisearch/redisearch/pull/4922) - Counting twice the field statistics at `#search` section of `INFO` response (MOD-7339) @@ -189,7 +189,7 @@ This new major version introduces new `BFLOAT16` and `FLOAT16` vector data types Features: -- Enhancing exact matching queries with `TAG` avoiding escaping special meaning characters using the [simpler syntax](https://redis.io/docs/latest/develop/interact/search-and-query/query/exact-match/#tag-field) `'@tag:{"my-query%term"}'` and `NUMERIC` queries: +- Enhancing exact matching queries with `TAG` avoiding escaping special meaning characters using the [simpler syntax](https://redis.io/docs/latest/develop/ai/search-and-query/query/exact-match/#tag-field) `'@tag:{"my-query%term"}'` and `NUMERIC` queries: - [#4802](https://github.com/RediSearch/RediSearch/pull/4802) - Using double quotes to wrap exact matching query terms such as `@email:{"test@redis.com"}` in `DIALECT 2` ( MOD-7299) - [#4676](https://github.com/RediSearch/RediSearch/pull/4676), [#4433](https://github.com/RediSearch/RediSearch/pull/4433) - Enhancing query parser to avoid unnecessary escaping (MOD-5756) - [#4527](https://github.com/RediSearch/RediSearch/pull/4527) - Enhancing exact matching queries for `NUMERIC` using single value `FT.SEARCH idx @numeric:[3456]` (MOD-6623) @@ -202,12 +202,12 @@ Features: - Enabling new vector data types reducing memory consumed by vectors with the new `BFLOAT16` and `FLOAT16` - - [#4674](https://github.com/RediSearch/RediSearch/pull/4674) - Adding support `BFLOAT16` and `FLOAT16` in the [vector index definition](https://redis.io/docs/latest/develop/interact/search-and-query/advanced-concepts/vectors/#creation-attributes-per-algorithm) (MOD-6765, MOD-6776) + - [#4674](https://github.com/RediSearch/RediSearch/pull/4674) - Adding support `BFLOAT16` and `FLOAT16` in the [vector index definition](https://redis.io/docs/latest/develop/ai/search-and-query/vectors/#creation-attributes-per-algorithm) (MOD-6765, MOD-6776) - Exposing the full-text score values during the aggregation pipeline using `ADDSCORE`. When calling the scores you can use `@__score` in the pipeline as in `FT.AGGREGATE idx 'hello' ADDSCORES SORTBY 2 @__score DESC` - [#4859](https://github.com/RediSearch/RediSearch/pull/4859) - Expose scores to `FT.AGGREGATE` pipeline (MOD-7190) -- [#4227](https://github.com/RediSearch/RediSearch/pull/4227) - Adding support for new operators `INTERSECT` and `DISJOINT` when querying for `GEOSHAPE` [polygons](https://redis.io/docs/latest/develop/interact/search-and-query/query/geo-spatial/) (MOD-6178) +- [#4227](https://github.com/RediSearch/RediSearch/pull/4227) - Adding support for new operators `INTERSECT` and `DISJOINT` when querying for `GEOSHAPE` [polygons](https://redis.io/docs/latest/develop/ai/search-and-query/query/geo-spatial/) (MOD-6178) Bug fixes (since 2.10.4): diff --git a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.2-release-notes.md b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.2-release-notes.md index 4dd87f5c5b..25cad648cb 100644 --- a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.2-release-notes.md +++ b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.2-release-notes.md @@ -108,7 +108,7 @@ This is the General Availability release of RediSearch 2.2. #### Searching and indexing JSON documents -This release introduces the ability to [index, query, and full-text search JSON documents]({{}}) using JSONPath queries. +This release introduces the ability to [index, query, and full-text search JSON documents]({{}}) using JSONPath queries. On the schema creation `FT.CREATE`, it is now possible to map a JSONPath query with a field. When a JSON document is indexed, the value extracted by the JSONPath query is indexed in the given field. diff --git a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.6-release-notes.md b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.6-release-notes.md index 400e47ff92..5f35f139a7 100644 --- a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.6-release-notes.md +++ b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.6-release-notes.md @@ -132,7 +132,7 @@ Update urgency: `HIGH` : There is a critical bug that may affect a subset of use - Bug fixes: - [#4944](https://github.com/redisearch/redisearch/pull/4944) Adjusting the module configuration to avoid routing overload on the first shard in a clustered database (MOD-7505) - [#4897](https://github.com/redisearch/redisearch/pull/4897) - `FT.AGGREGATE` with `VERBATIM` option is not handled by the shards in cluster mode (MOD-7463) - - [#4918](https://github.com/redisearch/redisearch/pull/4918) - Union query, similar to `"is|the"`, starting with 2 [stopwords](https://redis.io/docs/latest/develop/interact/search-and-query/advanced-concepts/stopwords/) could cause a crash (MOD-7495) + - [#4918](https://github.com/redisearch/redisearch/pull/4918) - Union query, similar to `"is|the"`, starting with 2 [stopwords](https://redis.io/docs/latest/develop/ai/search-and-query/advanced-concepts/stopwords/) could cause a crash (MOD-7495) - [#4919](https://github.com/redisearch/redisearch/pull/4919) - Counting twice the field statistics at the `#search` section of an `INFO` response (MOD-7339) - [#4923](https://github.com/redisearch/redisearch/pull/4923) - Loop when using the wildcard `w'term'` and prefix/infix/suffix pattern `'ter*'`, causing the shard to restart (MOD-7453) - [#4954](https://github.com/redisearch/redisearch/pull/4954) `FT.PROFILE` on `AGGREGATE` numeric queries could cause a crash due to reusing the internal `CURSOR` in a large range of numeric values (MOD-7454) @@ -366,7 +366,7 @@ This is the General Availability release of RediSearch 2.6. ### Highlights This new major version introduces the ability to search using **wildcard queries** for TEXT and TAG fields. This enables the frequently requested feature **suffix search** (`*vatore` and `ant?rez` are now supported). -In addition, the 2.6 release is all about **multi-value indexing and querying of attributes** for any attribute type ( [Text]({{< relref "/develop/interact/search-and-query/indexing/" >}}#index-json-arrays-as-text), [Tag]({{< relref "/develop/interact/search-and-query/indexing/" >}}#index-json-arrays-as-tag), [Numeric]({{< relref "/develop/interact/search-and-query/indexing/" >}}#index-json-arrays-as-numeric), [Geo]({{< relref "/develop/interact/search-and-query/indexing/" >}}#index-json-arrays-as-geo) and [Vector]({{< relref "/develop/interact/search-and-query/indexing/" >}}#index-json-arrays-as-vector)) defined by a [JSONPath]({{< relref "/develop/data-types/json/path" >}}) leading to an array or to multiple scalar values. +In addition, the 2.6 release is all about **multi-value indexing and querying of attributes** for any attribute type ( [Text]({{< relref "/develop/ai/search-and-query/indexing/" >}}#index-json-arrays-as-text), [Tag]({{< relref "/develop/ai/search-and-query/indexing/" >}}#index-json-arrays-as-tag), [Numeric]({{< relref "/develop/ai/search-and-query/indexing/" >}}#index-json-arrays-as-numeric), [Geo]({{< relref "/develop/ai/search-and-query/indexing/" >}}#index-json-arrays-as-geo) and [Vector]({{< relref "/develop/ai/search-and-query/indexing/" >}}#index-json-arrays-as-vector)) defined by a [JSONPath]({{< relref "/develop/data-types/json/path" >}}) leading to an array or to multiple scalar values. Lastly, this version adds support for indexing double-precision floating-point vectors and range queries from a given vector. ### What's new in 2.6 @@ -375,13 +375,13 @@ Lastly, this version adds support for indexing double-precision floating-point v - Improvements: - - [#2886](https://github.com/RediSearch/RediSearch/pull/2886) Support for [wildcard queries]({{< relref "/develop/interact/search-and-query/advanced-concepts/query_syntax" >}}#wildcard-matching) for TEXT and TAG fields, where + - [#2886](https://github.com/RediSearch/RediSearch/pull/2886) Support for [wildcard queries]({{< relref "/develop/ai/search-and-query/advanced-concepts/query_syntax" >}}#wildcard-matching) for TEXT and TAG fields, where - `?` matches any single character - `*` matches zero or more characters - use `'` and `\` for escaping, other special characters are ignored - [#2932](https://github.com/RediSearch/RediSearch/pull/2932) Optimized wildcard query support (i.e., suffix trie) - Multi-value indexing and querying - - [#2819](https://github.com/RediSearch/RediSearch/pull/2819), [#2947](https://github.com/RediSearch/RediSearch/pull/2947) Multi-value text search - perform full-text search on an [array of strings or on a JSONPath]({{< relref "/develop/interact/search-and-query/indexing/" >}}#index-json-arrays-as-tag) leading to multiple strings + - [#2819](https://github.com/RediSearch/RediSearch/pull/2819), [#2947](https://github.com/RediSearch/RediSearch/pull/2947) Multi-value text search - perform full-text search on an [array of strings or on a JSONPath]({{< relref "/develop/ai/search-and-query/indexing/" >}}#index-json-arrays-as-tag) leading to multiple strings - [#3131](https://github.com/RediSearch/RediSearch/pull/3131) Geo [#3118](https://github.com/RediSearch/RediSearch/pull/3118) Vector [#2985](https://github.com/RediSearch/RediSearch/pull/2985) Numeric [#3180](https://github.com/RediSearch/RediSearch/pull/3180) Tag - [#3060](https://github.com/RediSearch/RediSearch/pull/3060) Return JSON rather than scalars from multi-value attributes. This is enabled via Dialect 3 in order not to break existing applications. - Support indexing and querying of multi-value JSONPath attributes and/or arrays (requires JSON >2.4.1) diff --git a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.8-release-notes.md b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.8-release-notes.md index c0ec98bd51..0a277194e6 100644 --- a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.8-release-notes.md +++ b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.8-release-notes.md @@ -162,7 +162,7 @@ Update urgency: `HIGH` : There is a critical bug that may affect a subset of use - Bug fixes: - [#4896](https://github.com/redisearch/redisearch/pull/4896) - `FT.AGGREGATE` with `VERBATIM` option is not handled by the shards in cluster mode (MOD-7463) - - [#4917](https://github.com/redisearch/redisearch/pull/4917) - Union query, similar to `"is|the"`, starting with 2 [stopwords](https://redis.io/docs/latest/develop/interact/search-and-query/advanced-concepts/stopwords/) could cause a crash (MOD-7495) + - [#4917](https://github.com/redisearch/redisearch/pull/4917) - Union query, similar to `"is|the"`, starting with 2 [stopwords](https://redis.io/docs/latest/develop/ai/search-and-query/advanced-concepts/stopwords/) could cause a crash (MOD-7495) - [#4921](https://github.com/redisearch/redisearch/pull/4921) - Counting twice the field statistics at the `#search` section of an `INFO` response (MOD-7339) - [#4939](https://github.com/redisearch/redisearch/pull/4939) - Query warning when using RESP3 response for reaching `MAXPREFIXEXPANSION` (MOD-7588) - [#4930](https://github.com/redisearch/redisearch/pull/4930) - Loop when using the wildcard `w'term'` and prefix/infix/suffix pattern `'ter*'` leading shard to restart (MOD-7453) diff --git a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisgraph/redisgraph-2.0-release-notes.md b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisgraph/redisgraph-2.0-release-notes.md index 9b8e44a4ce..2c1c664ebf 100644 --- a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisgraph/redisgraph-2.0-release-notes.md +++ b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisgraph/redisgraph-2.0-release-notes.md @@ -74,7 +74,7 @@ Details: - #[1226](https://github.com/RedisGraph/RedisGraph/pull/1226) Let RediSearch perform document deletion when replacing a document - Bug Fixes: - #[1223](https://github.com/RedisGraph/RedisGraph/pull/1223) Resolve race condition in accessing/updating attribute maps. - - #[1196](https://github.com/RedisGraph/RedisGraph/pull/1196) Enable RediSearch [Garbage Collection]({{}}) + - #[1196](https://github.com/RedisGraph/RedisGraph/pull/1196) Enable RediSearch [Garbage Collection]({{}}) ## v2.0.15 (25 June 2020) diff --git a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisjson/redisjson-2.0-release-notes.md b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisjson/redisjson-2.0-release-notes.md index 3737e9b4b6..1b9c82d78c 100644 --- a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisjson/redisjson-2.0-release-notes.md +++ b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisjson/redisjson-2.0-release-notes.md @@ -114,7 +114,7 @@ RedisJSON is a [high-performance JSON document store](https://redis.com/blog/red #### Indexing JSON documents -Using [RediSearch](https://redisearch.io), it is now possible to [index, query, and search JSON documents]({{}}), gaining full-text search capabilities and document retrieving based on their content. +Using [RediSearch](https://redisearch.io), it is now possible to [index, query, and search JSON documents]({{}}), gaining full-text search capabilities and document retrieving based on their content. To do so, you must install both modules, `RedisJSON` and `RediSearch`, on the same database. diff --git a/content/operate/oss_and_stack/stack-with-enterprise/search/_index.md b/content/operate/oss_and_stack/stack-with-enterprise/search/_index.md index c292731ce9..48bfe57b22 100644 --- a/content/operate/oss_and_stack/stack-with-enterprise/search/_index.md +++ b/content/operate/oss_and_stack/stack-with-enterprise/search/_index.md @@ -21,11 +21,11 @@ The search and query engine indexes documents, which are objects that represent As the documents in your database change, the index automatically processes these changes to keep the search results up to date. With indexes, you can do: -- Language-aware [fuzzy matching]({{< relref "develop/interact/search-and-query/advanced-concepts/query_syntax#fuzzy-matching" >}}) -- Fast [auto-complete]({{< relref "develop/interact/search-and-query/administration/overview#auto-complete" >}}) -- [Exact phrase matching]({{< relref "develop/interact/search-and-query/advanced-concepts/query_syntax" >}}) -- [Numeric filtering]({{< relref "develop/interact/search-and-query/advanced-concepts/query_syntax#numeric-filters-in-query" >}}) -- [Geo-radius queries]({{< relref "develop/interact/search-and-query/advanced-concepts/query_syntax#geo-filters" >}}) +- Language-aware [fuzzy matching]({{< relref "develop/ai/search-and-query/advanced-concepts/query_syntax#fuzzy-matching" >}}) +- Fast [auto-complete]({{< relref "develop/ai/search-and-query/administration/overview#auto-complete" >}}) +- [Exact phrase matching]({{< relref "develop/ai/search-and-query/advanced-concepts/query_syntax" >}}) +- [Numeric filtering]({{< relref "develop/ai/search-and-query/advanced-concepts/query_syntax#numeric-filters-in-query" >}}) +- [Geo-radius queries]({{< relref "develop/ai/search-and-query/advanced-concepts/query_syntax#geo-filters" >}}) ## Supported document types @@ -49,7 +49,7 @@ For full-text searches, you can customize the field queries and ranking of the s When querying, you can use multiple predicates that query text, numeric, and geospatial fields in one query. You can also sort by a specific field and limit the results with an offset to produce customized results pages. -Redis Open Source supports [over 15 natural languages]({{< relref "/develop/interact/search-and-query/advanced-concepts/stemming" >}}) for stemming and includes auto-complete engines with specific commands that can provide real-time [interactive search suggestions]({{< relref "/commands/ft.sugadd" >}}). +Redis Open Source supports [over 15 natural languages]({{< relref "/develop/ai/search-and-query/advanced-concepts/stemming" >}}) for stemming and includes auto-complete engines with specific commands that can provide real-time [interactive search suggestions]({{< relref "/commands/ft.sugadd" >}}). ## Search and query Active-Active databases @@ -72,5 +72,5 @@ Because the index on the new shard is created synchronously though, it's expecte - [Search and query quick start]({{< relref "/develop/get-started/document-database" >}}) - [Search and query configuration]({{< relref "/operate/oss_and_stack/stack-with-enterprise/search/config" >}}) - [Search and query commands]({{< relref "/operate/oss_and_stack/stack-with-enterprise/search/commands" >}}) -- [Search and query references]({{< relref "/develop/interact/search-and-query/advanced-concepts/" >}}) +- [Search and query references]({{< relref "/develop/ai/search-and-query/advanced-concepts/" >}}) - [RediSearch source](https://github.com/RediSearch/RediSearch) diff --git a/content/operate/oss_and_stack/stack-with-enterprise/search/config.md b/content/operate/oss_and_stack/stack-with-enterprise/search/config.md index 9af82824c0..7429be2211 100644 --- a/content/operate/oss_and_stack/stack-with-enterprise/search/config.md +++ b/content/operate/oss_and_stack/stack-with-enterprise/search/config.md @@ -66,4 +66,4 @@ For Redis Enterprise Software, use one of the following methods: ## Configuration settings -See [configuration parameters]({{< relref "/develop/interact/search-and-query/administration/configuration" >}}) in the Develop section for parameter details and compatibility with Redis Software and Redis Cloud. +See [configuration parameters]({{< relref "/develop/ai/search-and-query/administration/configuration" >}}) in the Develop section for parameter details and compatibility with Redis Software and Redis Cloud. diff --git a/content/operate/oss_and_stack/stack-with-enterprise/search/query-performance-factor.md b/content/operate/oss_and_stack/stack-with-enterprise/search/query-performance-factor.md index a601222ac7..6e55e7eebc 100644 --- a/content/operate/oss_and_stack/stack-with-enterprise/search/query-performance-factor.md +++ b/content/operate/oss_and_stack/stack-with-enterprise/search/query-performance-factor.md @@ -12,7 +12,7 @@ aliases: /operate/oss_and_stack/stack-with-enterprise/search/scalable-search/ /operate/oss_and_stack/stack-with-enterprise/search/query-performance-factor/ --- -Query performance factors are intended to increase the performance of queries, including [vector search]({{}}). When enabled, it allows you to increase a database's compute capacity and query throughput by allocating more virtual CPUs per shard. This is in addition to horizontal scaling with more shards which enables a higher throughput of key value operations. This document describes how to configure the query performance factor. +Query performance factors are intended to increase the performance of queries, including [vector search]({{}}). When enabled, it allows you to increase a database's compute capacity and query throughput by allocating more virtual CPUs per shard. This is in addition to horizontal scaling with more shards which enables a higher throughput of key value operations. This document describes how to configure the query performance factor. {{}} Some use cases might not scale effectively. Redis experts can help determine if vertical scaling with the Redis Query Engine will boost performance for your use case and guide you on whether to use vertical scaling, horizontal scaling, or both. diff --git a/content/operate/oss_and_stack/stack-with-enterprise/search/scalable-query-best-practices.md b/content/operate/oss_and_stack/stack-with-enterprise/search/scalable-query-best-practices.md index e32dbbe77e..93eaf535f3 100644 --- a/content/operate/oss_and_stack/stack-with-enterprise/search/scalable-query-best-practices.md +++ b/content/operate/oss_and_stack/stack-with-enterprise/search/scalable-query-best-practices.md @@ -16,21 +16,21 @@ weight: 25 - Query types: - - [Full-text]({{}}) + - [Full-text]({{}}) - - [Tag]({{}}) + - [Tag]({{}}) - - [Vector]({{}}) + - [Vector]({{}}) - Result set types: - Small result sets - - Document subsets that are indexed in their [non-normalized]({{}}) form + - Document subsets that are indexed in their [non-normalized]({{}}) form ## Indexing best practices -Follow these best practices for [indexing]({{}}): +Follow these best practices for [indexing]({{}}): - Include fields in the index definition that are used in the query or the required result sets (projections). @@ -42,13 +42,13 @@ Follow these best practices for [indexing]({{}}): +Follow these best practices for [queries]({{}}): - Specify the result set fields in the `RETURN` or `LOAD` clauses and include them in the index definition. Don’t just return the default result set from [`FT.SEARCH`]({{< relref "commands/ft.search/" >}}) or `LOAD *` from [`FT.AGGREGATE`]({{< relref "commands/ft.aggregate/" >}}). - Use `LIMIT` to reduce the result set size. -- Use [`DIALECT 3`]({{}}) or higher for any queries against JSON. +- Use [`DIALECT 3`]({{}}) or higher for any queries against JSON. ## Index and query examples diff --git a/content/operate/oss_and_stack/stack-with-enterprise/search/search-active-active.md b/content/operate/oss_and_stack/stack-with-enterprise/search/search-active-active.md index 0065d02a88..86499de445 100644 --- a/content/operate/oss_and_stack/stack-with-enterprise/search/search-active-active.md +++ b/content/operate/oss_and_stack/stack-with-enterprise/search/search-active-active.md @@ -17,7 +17,7 @@ You can run search operations on any instance of an Active-Active database. 1. Create an Active-Active database with RediSearch 2.x enabled. 1. [Create the index]({{< relref "commands/ft.create" >}}) on each instance of the database. -1. If you are using [synonyms]({{< relref "/develop/interact/search-and-query/advanced-concepts/synonyms" >}}), you need to add them to each replica. +1. If you are using [synonyms]({{< relref "/develop/ai/search-and-query/advanced-concepts/synonyms" >}}), you need to add them to each replica. 1. The index is maintained by each instance outside of the database keyspace, so only updates to the hashes in the databases are synchronized. ## Command compatibility