Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
e1a7c6e
dataclassclass.md French
arnaud4d Jul 8, 2026
22bd113
dataclassclass.md French
arnaud4d Jul 8, 2026
73fbd89
dataclassclass.md French
arnaud4d Jul 8, 2026
db1ce29
sessionclass.md French
arnaud4d Jul 8, 2026
958a776
dt_string.md French
arnaud4d Jul 8, 2026
47e47b6
methods.md French
arnaud4d Jul 8, 2026
c3b16f3
building.md French
arnaud4d Jul 8, 2026
833efb7
clientserver.md French
arnaud4d Jul 8, 2026
7dece4b
updates.md French
arnaud4d Jul 8, 2026
987e85f
handling_users_groups.md French
arnaud4d Jul 8, 2026
518bc99
methods.md Spanish
arnaud4d Jul 8, 2026
cd1a9cb
updates.md Spanish
arnaud4d Jul 8, 2026
aa304a0
server-maintenance-1.png Japanese
arnaud4d Jul 8, 2026
9c7684f
server-process-actions-1.png Japanese
arnaud4d Jul 8, 2026
49fbc44
server-sessions-1.png Japanese
arnaud4d Jul 8, 2026
7c780b0
server-sessions-sort-1.png Japanese
arnaud4d Jul 8, 2026
dfc7375
version-21-r4.json Japanese
arnaud4d Jul 8, 2026
03daec0
cryptokeyclass.md Japanese
arnaud4d Jul 8, 2026
804b853
dataclassclass.md Japanese
arnaud4d Jul 8, 2026
a43dd45
datastoreclass.md Japanese
arnaud4d Jul 8, 2026
7adbdeb
entityclass.md Japanese
arnaud4d Jul 8, 2026
47e1ee5
entityselectionclass.md Japanese
arnaud4d Jul 8, 2026
ef7617c
imaptransporterclass.md Japanese
arnaud4d Jul 8, 2026
b8d53b7
incomingmessageclass.md Japanese
arnaud4d Jul 8, 2026
ac5629c
sessionclass.md Japanese
arnaud4d Jul 8, 2026
df2101f
signalclass.md Japanese
arnaud4d Jul 8, 2026
a884109
tcpconnectionclass.md Japanese
arnaud4d Jul 8, 2026
5fded09
dataclassclass.md French
arnaud4d Jul 8, 2026
e2b86d1
sessionclass.md French
arnaud4d Jul 8, 2026
cd775bd
dt_string.md French
arnaud4d Jul 8, 2026
3643527
flow-control.md French
arnaud4d Jul 8, 2026
7d4c268
methods.md French
arnaud4d Jul 8, 2026
dae65c9
building.md French
arnaud4d Jul 8, 2026
9965e58
websocketclass.md Japanese
arnaud4d Jul 8, 2026
07b3a23
methods.md Japanese
arnaud4d Jul 8, 2026
8eddfd2
updates.md Japanese
arnaud4d Jul 8, 2026
fb2fe86
methods.md Portuguese, Brazilian
arnaud4d Jul 8, 2026
d3c2408
updates.md Portuguese, Brazilian
arnaud4d Jul 8, 2026
1a5f3ff
clientserver.md French
arnaud4d Jul 8, 2026
a39d125
updates.md French
arnaud4d Jul 8, 2026
2ad4c31
handling_users_groups.md French
arnaud4d Jul 8, 2026
247c40f
flow-control.md French
arnaud4d Jul 8, 2026
012ab14
building.md French
arnaud4d Jul 8, 2026
fdc6a05
handling_users_groups.md French
arnaud4d Jul 8, 2026
34c771e
flow-control.md French
arnaud4d Jul 8, 2026
a54347d
building.md French
arnaud4d Jul 8, 2026
ab29680
handling_users_groups.md French
arnaud4d Jul 8, 2026
635b8d3
methods.md Spanish
arnaud4d Jul 8, 2026
1fe3fb4
updates.md Spanish
arnaud4d Jul 8, 2026
50730eb
methods.md Japanese
arnaud4d Jul 8, 2026
f4f5f29
updates.md Japanese
arnaud4d Jul 8, 2026
f9defbd
openaiimagesresult.md Japanese
arnaud4d Jul 8, 2026
1fc48ed
openaimessage.md Japanese
arnaud4d Jul 8, 2026
15e9541
openaiparameters.md Japanese
arnaud4d Jul 8, 2026
d54dfdf
openaiembeddingsresult.md Japanese
arnaud4d Jul 8, 2026
36ef11f
openaifilesapi.md Japanese
arnaud4d Jul 8, 2026
bd994b6
openaimessage.md Japanese
arnaud4d Jul 8, 2026
52d78cb
openaiparameters.md Japanese
arnaud4d Jul 8, 2026
55c7766
methods.md Portuguese, Brazilian
arnaud4d Jul 8, 2026
809391a
updates.md Portuguese, Brazilian
arnaud4d Jul 8, 2026
3a8085d
openaiproviders.md Japanese
arnaud4d Jul 9, 2026
bb370c6
openaiproviders.md Japanese
arnaud4d Jul 9, 2026
0ffc9a2
openaiproviders.md Japanese
arnaud4d Jul 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ When you use this syntax, you guarantee that your formulas will be interpreted c
This syntax is accepted in all 4D formulas (or 4D expressions) regardless of the calling context:

- 4D formulas executed using the Formula editor or using commands such as [`EXECUTE FORMULA`](../commands/execute-formula), [`APPLY TO SELECTION`](../commands/apply-to-selection), [`QUERY BY FORMULA`](../commands/query-by-formula), [`LISTBOX INSERT COLUMN FORMULA`](../commands/listbox-insert-column-formula), etc.
- expressions inserted in [multi-style text areas](../FormObjects/properties_Text.md#supported-tags) (see ST INSERT EXPRESSION),
- expressions inserted in [multi-style text areas](../FormObjects/properties_Text.md#supported-tags) (see [`ST INSERT EXPRESSION`](../commands/st-insert-expression)),
- expressions calculated in [transformation tags](../Tags/transformation-tags.md),
- expressions inserted in external areas such as [4D Write Pro areas](../WritePro/managing-formulas.md).

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ Lea [**Novedades en 4D 21 R4**](https://blog.4d.com/whats-new-in-4d-21-r4/), la
- Nueva clase [`4D.QuotaManager`](../API/QuotaManagerClass.md) para manejar objetos umbrales para proteger el servidor.
- Nueva petición REST [`$entityset/$release`](../REST/$entityset.md#entitysetrelease) para eliminar conjuntos de entidades de la caché del servidor.
- Improved session information in the 4D Server Administration window in a new [**Sessions**](../ServerWindow/sessions.md) page (formerly **Users**).
- [**Lista de bugs corregidos**](https://bugs.4d.fr/fixedbugslist?version=21_R4): lista de todos los bugs que se han corregido en 4D 21 R4.

#### Cambios de comportamiento

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ When you use this syntax, you guarantee that your formulas will be interpreted c
This syntax is accepted in all 4D formulas (or 4D expressions) regardless of the calling context:

- 4D formulas executed using the Formula editor or using commands such as [`EXECUTE FORMULA`](../commands/execute-formula), [`APPLY TO SELECTION`](../commands/apply-to-selection), [`QUERY BY FORMULA`](../commands/query-by-formula), [`LISTBOX INSERT COLUMN FORMULA`](../commands/listbox-insert-column-formula), etc.
- expressions inserted in [multi-style text areas](../FormObjects/properties_Text.md#supported-tags) (see ST INSERT EXPRESSION),
- expressions inserted in [multi-style text areas](../FormObjects/properties_Text.md#supported-tags) (see [`ST INSERT EXPRESSION`](../commands/st-insert-expression)),
- expressions calculated in [transformation tags](../Tags/transformation-tags.md),
- expressions inserted in external areas such as [4D Write Pro areas](../WritePro/managing-formulas.md).

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,11 @@ Lea [**Novedades en 4D 21 R4**](https://blog.4d.com/whats-new-in-4d-21-r4/), la
- Enhanced [support of client/server disconnections](../Desktop/clientServer.md#management-of-unreachable-peer) with QUIC network layer: new [`QUIC session timeout`](../commands/set-database-parameter#quick-session-timeout-135) database parameter, new [`unreachableSince` session.info](../API/SessionClass.md#info) property.
- Las hojas de estilo para listas de varios niveles ya son [compatibles con 4D Write Pro Interface](../WritePro/writeprointerface#multi-level-list-style-sheets), lo que permite a los usuarios crear y gestionar listas estructuradas de varios niveles directamente desde la barra de herramientas y la barra lateral.
- Nuevo comando [`defer`](../commands/defer) para declarar que un fragmento de código se ejecute siempre al salir de un método o una función; nuevo comando [`Deferred formulas`](../commands/deferred-formulas) para obtener la lista de fórmulas diferidas.
- Nueva propiedad de sesión [`.quotas`](../API/SessionClass.md#quotas) para configurar umbrales REST para sesiones.
- New session [`.quotas` property](../API/SessionClass.md#quotas) to configure REST thresholds for sessions.
- Nueva clase [`4D.QuotaManager`](../API/QuotaManagerClass.md) para manejar objetos umbrales para proteger el servidor.
- Nueva petición REST [`$entityset/$release`](../REST/$entityset.md#entitysetrelease) para eliminar conjuntos de entidades de la caché del servidor.
- Información de sesión mejorada en la ventana de administración de 4D Server con una nueva página [**Sessions**](../ServerWindow/sessions.md) (antes **Users**).
- Improved session information in the 4D Server Administration window in a new [**Sessions**](../ServerWindow/sessions.md) page (formerly **Users**).
- [**Lista de bugs corregidos**](https://bugs.4d.fr/fixedbugslist?version=21_R4): lista de todos los bugs que se han corregido en 4D 21 R4.

#### Cambios de comportamiento

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,7 @@ Dans le paramètre optionnel *settings*, vous pouvez passer un objet contenant d

:::info

Lorsque vous appelez la fonction `.get()` **sans** paramètre *settings*, une requête de valeur d'attribut est envoyée directement au serveur (le [cache ORDA](.. /ORDA/client-server-optimization.md#orda-cache) n'est pas utilisé). Par contre, lorsque vous appelez `.get()` **avec** un `context` passé dans le paramètre *settings*, les valeurs des attributs sont récupérées à partir du cache ORDA correspondant au contexte. Dans ce cas, il peut être conseillé d'appeler [`reload()`](EntityClass.md#reload) pour s'assurer que les données les plus récentes sont récupérées depuis le serveur.
Lorsque vous appelez la fonction `.get()` **sans** paramètre *settings*, une requête de valeur d'attribut est envoyée directement au serveur (le [cache ORDA](../ORDA/client-server-optimization.md#orda-cache) n'est pas utilisé). Par contre, lorsque vous appelez `.get()` **avec** un `context` passé dans le paramètre *settings*, les valeurs des attributs sont récupérées à partir du cache ORDA correspondant au contexte. Dans ce cas, il peut être conseillé d'appeler [`reload()`](EntityClass.md#reload) pour s'assurer que les données les plus récentes sont récupérées depuis le serveur.

:::

Expand Down Expand Up @@ -1128,7 +1128,7 @@ ds.Class.query("info.coll[a].val != :1";0)
// trouve "les entités dont au moins une propriété val est différente de 0"
```

Vous pouvez utiliser n'importe quelle lettre de l'alphabet comme notation `[a]` .
Vous pouvez utiliser n'importe quelle lettre de l'alphabet comme notation `[a]`.

### Lier les critères de recherche pour les attributs de collections

Expand Down Expand Up @@ -1216,11 +1216,11 @@ Si *attributePath* désigne un attribut stockant des [**objets vecteurs**](../AP

Dans ce cas, le paramètre *value* doit être un **objet vecteur de comparaison** contenant les propriétés suivantes :

| Propriété | Type | Description |
| --------- | -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| vector | [4D.Vector](../API/VectorClass.md) | Obligatoire. Le vecteur à comparer |
| metric | Text | Optionnel. [Calcul vectoriel](../API/VectorClass.md#understanding-the-different-vector-computations) à utiliser pour la recherche. You can use one of the following (Text) constants:<li>`mk cosine` (default if omitted): calculates the [cosine similarity](./VectorClass.md#cosinesimilarity) between vectors.</li><li>`mk dot`: calculates the [dot similarity](VectorClass.md#dotsimilarity) of vectors.</li><li>`mk euclidean`: calculates the [Euclidean distance](./VectorClass.md#euclideandistance) between vectors. |
| threshold | Real | Facultatif (valeur par défaut : 0,5). Valeur seuil utilisée pour filtrer les comparaisons de vecteurs sur la base de leur score de similarité cosinus, point ou euclidienne selon la "métrique" sélectionnée. Il est fortement recommandé de choisir une similitude qui corresponde le mieux à votre cas d'utilisation spécifique pour des résultats optimaux. |
| Propriété | Type | Description |
| --------- | -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| vector | [4D.Vector](../API/VectorClass.md) | Obligatoire. Le vecteur à comparer |
| metric | Text | Optionnel. [Calcul vectoriel](../API/VectorClass.md#understanding-the-different-vector-computations) à utiliser pour la recherche. Vous pouvez utiliser l'une des constantes (texte) suivantes :<li>`mk cosine` (valeur par défaut si non spécifiée) : calcule la [similarité cosinus](./VectorClass.md#cosinesimilarity) entre deux vecteurs.</li><li>`mk dot` : calcule la [similarité scalaire](VectorClass.md#dotsimilarity) entre deux vecteurs.</li><li>`mk euclidean` : calcule la [distance euclidienne](./VectorClass.md#euclideandistance) entre des vecteurs. |
| threshold | Real | Facultatif (valeur par défaut : 0,5). Valeur seuil utilisée pour filtrer les comparaisons de vecteurs sur la base de leur score de similarité cosinus, point ou euclidienne selon la "métrique" sélectionnée. Il est fortement recommandé de choisir une similitude qui corresponde le mieux à votre cas d'utilisation spécifique pour des résultats optimaux. |

Seul un sous-ensemble de symboles **comparateurs** est pris en charge. Notez qu'ils comparent les résultats à la valeur de seuil (threshold) :

Expand All @@ -1235,41 +1235,41 @@ Par exemple, vous souhaitez renvoyer les entités de MyClass dont la similarité

```4d
var $myVector : 4D.Vector
$myVector := getVector //method to get a vector, e.g. from 4D.AIKit
var $comparisonVector := {vector: $myVector; metric: mk cosine; threshold: 1.2}
var $results := ds.MyClass.query("myVectorField <= :1"; $comparisonVector)
$myVector := getVector //méthode pour obtenir un vecteur, par exemple à partir de 4D.AIKit
var $comparisonVector := {vector : $myVector; metric : mk cosine; threshold : 1.2}
var $results := ds.MyClass.query("myVectorField <= :1" ; $comparisonVector)
```

L'instruction **order by** est prise en charge dans la chaîne de requête afin que les entités de l'entity selection résultante soient triées par similarité. Par exemple :

```4d
var $results := ds.MyClass.query("myVectorField > :1 order by myVectorField desc"; $comparisonVector)
//$results.first() entity is the most similar
//$results.first() : l'entité est celle qui présente la plus grande similitude
```

:::note

You will generally want vector similarity query results to be sorted from "most similar" to "least similar." By default, results returned with an **order by** clause are sorted in ascending order. Depending on the similarity metric used, you may need to adjust the sorting direction to obtain the correct ranking:
En règle générale, vous souhaiterez que les résultats d'une requête de similarité vectorielle soient classés du « plus similaire » au « moins similaire ». Par défaut, les résultats renvoyés avec une clause **order by** sont triés par ordre croissant. En fonction de la mesure de similarité utilisée, vous devrez peut-être ajuster le sens du tri pour obtenir le classement correct :

- for [**cosine**](./VectorClass.md#cosinesimilarity) and [**dot**](./VectorClass.md#dotsimilarity) similarity, higher values indicate greater similarity. Therefore, you will typically need to include the `desc` keyword in the query string.
- for [**euclidean distance**](./VectorClass.md#euclideandistance) similarity, lower values indicate greater similarity. In this case, the default ascending order (or explicitly using the `asc` keyword) is appropriate.
- en ce qui concerne la similarité [**cosinus**](./VectorClass.md#cosinesimilarity) et [**dot**](./VectorClass.md#dotsimilarity), des valeurs plus élevées indiquent une plus grande similarité. Par conséquent, vous devrez généralement inclure le mot-clé `desc` dans la chaîne de requête.
- en ce qui concerne la similarité mesurée par la [**distance euclidienne**](./VectorClass.md#euclideandistance), plus la valeur est faible, plus la similarité est grande. Dans ce cas, l'ordre croissant par défaut (ou l'utilisation explicite du mot-clé `asc`) convient.

:::

You can only order on a single vector field. Si le même vecteur apparaît plusieurs fois dans la chaîne de requête, l'ordre par sera appliqué aux résultats du premier, par exemple :
On ne peut ordonner que sur un seul champ vectoriel. Si le même vecteur apparaît plusieurs fois dans la chaîne de requête, l'ordre par sera appliqué aux résultats du premier, par exemple :

```4d
var $results := ds.MyClass.query("myVectorField > :1 and myVectorField > :2 order by myVectorField desc"; /
{vector : $myVector1 };{vector : $myVector2 })
//myVectorField > :1 is used for the order by
//myVectorField > :1 est utilisé pour le tri
```

Voir [plus d'exemples ci-dessous](#example-4-2) (exemples 4 et 5).

:::tip Articles de blog sur le sujet

- [4D AI : Recherche d'entités par similarité vectorielle en 4D](https://blog.4d.com/4d-ai-searching-entities-by-vector-similarity-in-4d)
- [4D AI: Sorting Query Results by Vector Similarity](https://blog.4d.com/4d-ai-sorting-query-results-by-vector-similarity/)
- [4D AI : Tri des résultats d'une requête en fonction de la similarité vectorielle](https://blog.4d.com/4d-ai-sorting-query-results-by-vector-similarity/)
- [Why Your Search Stack Feels Broken — and How Vector Search Fixes It](https://blog.4d.com/why-your-search-stack-feels-broken-and-how-vector-search-fixes-it)

:::
Expand Down Expand Up @@ -1636,25 +1636,25 @@ var $client:=cs.AIKit.OpenAI.new("my api key")
var $result:=$client.embeddings.create("my long text to search"; "text-embedding-ada-002")
var $vector:=$result.vector

//embedding attribute is based upon a 4D field storing 4D.Vector class objects
//l'attribut d'embedding est basé sur un champ 4D stockant des objets de classe 4D.Vector

//search with default metric (cosine)
//Recherche avec métrique par défaut (cosine)
var $employees:=ds.Employee.query("embedding > :1 order by embedding desc"; {vector : $vector})

//search with euclidean metric
//Recherche avec métrique euclidienne
var $employees:=ds.Employee.query("embedding < :1 order by embedding"; {vector: $vector; metric: mk euclidean})

//search with explicit cosine metric and custom threshold
//Recherche avec métrique cosinus explicite et seuil personnalisé
var $employees:=ds.Employee.query("embedding > :1 order by embedding desc"; {vector: $vector; metric: mk cosine; threshold: 0.9})

//search with a formula
//Recherche avec une formule
var $employees:=ds.Employee.query(Formula(This.embdedding.cosineSimilarity($vector)>0.9))

```

#### Exemple 5

Vector-based semantic ordering can be combined with traditional ORDA filters in the same query.
Le tri sémantique basé sur des vecteurs peut être combiné avec les filtres ORDA traditionnels dans une même requête.

```4d
var $comparisonVector := {vector: $myVector; metric: mk cosine; threshold: 0.4}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -499,10 +499,10 @@ End if

<details><summary>Historique</summary>

| Release | Modifications |
| ------- | ------------------------------- |
| 21 R4 | New *unreachableSince* property |
| 20 R5 | Ajout |
| Release | Modifications |
| ------- | ------------------------------------- |
| 21 R4 | Nouvelle propriété *unreachableSince* |
| 20 R5 | Ajout |

</details>

Expand Down
Loading
Loading