Effectuer une recherche sémantique
Effectue une recherche sémantique dans la rubrique spécifiée et contraint le jeu d'enregistrements spécifié pour le texte de recherche et le modèle à utiliser ou pour les vecteurs d'intégration donnés.
Voir aussi
Options
-
Requête par indique si la requête est de type Langage naturel (texte) ou Intégration Données vectorielles.
-
Jeu d'enregistrements sélectionne s'il faut effectuer une recherche dans Tous les enregistrements ou dans le Jeu trouvé actuel.
-
Rubrique cible spécifie une rubrique Texte ou Conteneur dans laquelle effectuer la recherche. La rubrique doit contenir des vecteurs d'intégration, soit sous forme de tableau JSON pour une rubrique Texte, soit sous forme de données binaires pour une rubrique Conteneur.
-
Nombre de retours est une expression numérique spécifiant le nombre d'enregistrements sémantiquement similaires à renvoyer en tant que jeu trouvé. Si elle n'est pas spécifiée, la valeur par défaut est de 10 enregistrements maximum.
-
Condition de similarité cosinus spécifie comment la similarité cosinus des données est comparée à la Valeur de similarité cosinus. Si cette option n'est pas spécifiée, le jeu trouvé n'est pas limité par une condition de similarité cosinus.
-
Valeur de similarité cosinus définit le seuil utilisé avec la Condition de similarité cosinus pour déterminer si les données sont sémantiquement similaires ou opposées. La valeur de cette expression numérique doit être comprise entre -1 (opposé) et 1 (similaire).
-
Enregistrer le résultat enregistre le jeu d'enregistrements trouvés dans une rubrique Texte ou une variable sous la forme d'un tableau JSON d'ID d'enregistrement et de leurs valeurs de similarité cosinus classées par ordre de similarité cosinus décroissante.
Options disponibles uniquement lorsque Requête par est défini sur Langage naturel :
-
Nom de compte est une expression de type texte du compte IA pour cette action de script. Dans le fichier actuel, utilisez l'action de script Configurer le compte IA pour configurer le compte et lui attribuer ce nom avant l'exécution de cette action de script.
-
Modèle d'intégration correspond au nom du modèle utilisé pour générer des vecteurs d'intégration. Spécifiez le nom du modèle en tant qu'expression de type texte, disponible auprès du fournisseur de modèles.
-
Texte est une expression de texte pour la requête de texte en langage naturel. Le texte résultant est envoyé au modèle pour les vecteurs d'intégration, qui sont ensuite comparés aux vecteurs d'intégration dans Rubrique cible.
Options disponibles uniquement lorsque Requête par est défini sur Données vectorielles :
-
Vecteur correspond aux vecteurs d'intégration qui représentent le texte ou l'image à trouver. Il s'agit d'une expression qui renvoie des données de Conteneur, telles qu'une référence à une rubrique Conteneur. Les résultats sont sémantiquement similaires au texte ou à l'image que ces données vectorielles représentent.
Compatibilité
Produit | Prise en charge |
FileMaker Pro | Oui |
FileMaker Go | Oui |
FileMaker WebDirect | Oui |
FileMaker Server | Oui |
FileMaker Cloud | Oui |
FileMaker Data API | Oui |
Publication Web personnalisée | Oui |
Provient de la version
21.0
Description
Cette action de script recherche des enregistrements dans lesquels le contenu de la Rubrique cible est sémantiquement similaire à la requête. Pour le texte, cela peut fournir des résultats plus utiles que la recherche de correspondances de mots littérales, comme le fait Exécuter la recherche.
Lorsque vous recherchez des images, vous pouvez spécifier un texte en langage naturel ou des vecteurs d'intégration de texte qui décrivent les images que vous recherchez. Vous pouvez également spécifier des vecteurs d'intégration pour une image similaire aux images que vous recherchez.
Cette action de script a deux modes de fonctionnement, déterminés par l'option Requête par :
-
Si définie sur Langage naturel, la requête est fournie en tant que texte en langage naturel dans l'option Texte. L'action de script envoie ce texte de requête au modèle spécifié pour conversion en vecteurs d'intégration. C'est pourquoi ce mode nécessite un nom de compte d'IA et un modèle d'intégration.
-
Si définie sur Données vectorielles, les vecteurs d'intégration sont fournis en tant que données de conteneur pour la requête. Si vous utilisez couramment certaines requêtes, il peut s'avérer plus efficace d'obtenir des vecteurs d'intégration pour ces requêtes une fois et de les stocker, plutôt que de les obtenir plusieurs fois à partir du modèle.
Lorsque vous spécifiez des vecteurs d'intégration pour une image à rechercher, utilisez cette option. Vous devez utiliser le même modèle d'intégration d'image pour générer les vecteurs pour l'option Vecteur qu'avec les vecteurs d'intégration d'image de la Rubrique cible.
Pour les vecteurs d'intégration d'image et de texte, vous pouvez utiliser les modèles pris en charge par le serveur de modèle open source fourni séparément avec FileMaker Pro ou installé avec FileMaker Server. Consultez le Claris Engineering Blog.
En commençant par tous les enregistrements de la table active ou seulement les enregistrements du jeu trouvé actuel (en fonction de l'option Jeu d'enregistrements), cette action de script compare les données de la Rubrique cible avec la requête de similarité (ou de dissimilarité) sémantique. Le résultat est un jeu trouvé restreint (réduit) d'un maximum de Nombre de retours d'enregistrements qui répondent aux conditions de similarité cosinus. Le jeu trouvé résultant est classé par ordre de similarité cosinus descendante, de sorte que les enregistrements les plus pertinents soient les premiers.
Remarques
-
Des vecteurs d'intégration normalisés sont nécessaires. Tous les vecteurs d'intégration doivent être générés à partir du même modèle pour garantir une compatibilité et des performances optimales ; le mélange de vecteurs d'intégration depuis différents modèles n'est pas pris en charge.
Exemple 1
Configure un compte IA, active le modèle Détails de la réunion puis, dans tous les enregistrements, effectue une recherche sémantique pour Texte (langage naturel) dans la rubrique Conteneur Meetings::Note_Embedding, qui contient des vecteurs d'intégration pour le contenu de la rubrique Meetings::Note (consultez l'Exemple 1 dans Insérer l'intégration dans le jeu trouvé). Pour obtenir des résultats plus utiles, le nombre de retours est limité à 10 et la similarité cosinus entre Texte et le contenu de la rubrique Meetings::Note_Embedding doit être supérieure à 0,4. Le jeu trouvé résultant est d'abord trié en fonction des enregistrements les plus pertinents.
Configurer le compte IA [ Nom de compte: "mon-compte" ; Fournisseur de modèles: OpenAI ; Clé API : "sk-RZCtpWT..." ]
Activer modèle [ "Détails de la réunion" (Meetings) ; Animation: Aucune ]
Effectuer une recherche sémantique [ Requête par: Langage naturel ; Nom de compte: "mon-compte" ; Modèle d'intégration : "text-embedding-3-small" ; Texte: "Recrutement, définition du poste, plan de formation" ; Jeu d'enregistrements: Tous les enregistrements ; Rubrique cible: Meetings::Note_Embedding ; Nombre de retours: 10 ; Condition de similarité cosinus: est supérieur à ; Valeur de similarité cosinus: ,4 ]
Exemple 2
Configure un compte IA, active le modèle Détails de la réunion, puis demande à l'utilisateur quel texte rechercher. La fonction GetEmbedding envoie ce texte au modèle, puis Définir rubrique stocke les vecteurs d'intégration dans la rubrique Conteneur globale Meetings::Input. En supposant que la rubrique Conteneur Meetings::Note_Embedding contienne des vecteurs d'intégration pour le contenu de Meetings::Note (consultez l'Exemple 1 dans Insérer l'intégration dans le jeu trouvé), la fonction Effectuer une recherche sémantique compare les données vectorielles dans Meetings::Input avec Meetings::Note_Embedding dans tous les enregistrements et renvoie un jeu trouvé qui répond aux critères de nombre de retours et de similarité.
Configurer le compte IA [ Nom de compte: "mon-compte" ; Fournisseur de modèles: OpenAI ; Clé API : "sk-RZCtpWT..." ]
Activer modèle [ "Détails de la réunion" (Meetings) ; Animation: Aucune ]
Ouvrir boîte dial. person. [ "Trouver des réunions avec des remarques sur :" ; $Input ]
Définir rubrique [ Meetings::Input ; GetEmbedding ( "mon-compte" ; "text-embedding-3-small" ; $Input ) ]
Effectuer une recherche sémantique [ Requête par: Données vectorielles ; Meetings::Input ; Jeu d'enregistrements: Tous les enregistrements ; Rubrique cible: Meetings::Note_Embedding ; Nombre de retours: 10 ; Condition de similarité cosinus: est supérieur à ; Valeur de similarité cosinus: ,5 ; Enregistrer le résultat: $$result ]
Lorsque l'option Enregistrer le résultat est sélectionnée, pour une requête donnée qui renvoie trois enregistrements, JSONFormatElement($$result) renvoie :
[
{
"recordId" : "7",
"similarity" : 0.999999947111836
},
{
"recordId" : "1",
"similarity" : 0.529758434458581
},
{
"recordId" : "5",
"similarity" : 0.52463473830414
}
]
Exemple 3
Recherche dans un ensemble d'images celles qui correspondent le mieux à une description de texte. Le script configure un compte IA pour le serveur de modèle open source installé avec FileMaker Server, active le modèle Détails de la réunion, affiche tous les enregistrements, puis obtient des vecteurs d'intégration pour les images dans la rubrique Meetings::Image à l'aide d'un modèle d'intégration d'images et les stocke en tant que données binaires dans la rubrique du conteneur Meetings::Image_Embedding. L'action Effectuer une recherche sémantique envoie un texte de requête en langage naturel (« Personnes assises autour d'une table ») à un modèle d'intégration de texte utilisant le même compte, puis compare le résultat avec Meetings::Image_Embedding dans tous les enregistrements et renvoie un ensemble trouvé qui répond aux critères de similarité.
Configurer le compte IA [ Nom du compte: "mon-compte" ; Fournisseur de modèles: Autre ; Point de terminaison : "https://mon-serveur.exemple.com:8080/" ; Vérifier les certificats SSL ; Clé API : Global::API_Key ]
Activer modèle [ "Détails de la réunion" (Meetings) ; Animation: Aucune ]
Afficher tous les enreg.
Insérer l'intégration dans le jeu trouvé [ Nom du compte: "mon-compte" ; Modèle d'intégration: "clip-ViT-B-32" ; Rubrique source: Meetings::Image ; Rubrique cible: Meetings::Image_Embedding ]
Effectuer une recherche sémantique [ Requête par: Langage naturel ; Nom du compte: "mon-compte" ; Modèle d'intégration : "sentence-transformers/clip-ViT-B-32-multilingual-v1" ; Texte: "Personnes assises autour d'une table" ; Jeu d'enregistrements: Tous les enregistrements ; Rubrique cible: Meetings::Image_Embedding ; Condition de similarité cosinus: est supérieure à ; Valeur de similarité cosinus: ,7 ]