Esegui ricerca semantica
Esegue una ricerca semantica in un campo di destinazione per il testo, l'immagine o i vettori di embedding specificati.
Vedere anche
Opzioni
-
Query per specifica se la query è Linguaggio naturale (testo), Dati vettoriali di embedding o una Immagine (dati Contenitore).
-
Gruppo di record seleziona se cercare Tutti i record o Gruppo trovato corrente.
-
Campo di destinazione specifica un campo di testo o Contenitore in cui eseguire la ricerca. Il contenuto del campo deve essere costituito da vettori di embedding, sia come array JSON se si tratta di un campo di testo, sia come dati binari se si tratta di un campo Contenitore.
-
Restituisci conteggio è un'espressione numerica per il numero di record semanticamente simili da restituire come gruppo trovato. Se non specificato, l'impostazione predefinita è un massimo di 10 record.
-
Condizione similarità del coseno specifica come la similarità del coseno dei dati viene confrontata con Valore similarità del coseno. Se non specificato, il gruppo trovato non è limitato da una condizione di similarità del coseno.
-
Valore similarità del coseno è la soglia utilizzata insieme a Condizione similarità del coseno per determinare se i dati sono semanticamente simili o dissimili. Questa espressione numerica deve avere un valore compreso tra -1 (dissimile) e 1 (simile), incluso.
-
Salva risultato salva il gruppo trovato in un campo di testo o in una variabile come un array JSON di ID dei record e i loro valori di similarità del coseno, ordinati in ordine di similarità del coseno decrescente.
Opzioni disponibili solo quando Query per è Linguaggio naturale o Immagine:
-
Nome account è un'espressione di testo per il nome dell'account AI da utilizzare. Nel file corrente, utilizzare l'istruzione di script Configura account AI per configurare l'account e assegnargli questo nome in qualsiasi momento prima che questa istruzione di script venga eseguita.
-
Modello di Embedding è il nome del modello per generare vettori di embedding. Specificare il nome del modello come espressione di testo. Per i modelli supportati, vedere le Specifiche tecniche di FileMaker.
Opzioni disponibili solo quando Query per è Linguaggio naturale:
-
Testo è un'espressione di testo per la query di testo in linguaggio naturale. Il testo risultante viene inviato al modello per i vettori di embedding, che vengono poi confrontati con quelli in Campo di destinazione per la similarità.
Opzioni disponibili solo quando Query per è Dati vettoriali:
-
Vettore si riferisce ai vettori di embedding che rappresentano il testo o le immagini da trovare. Si tratta di un'espressione che restituisce i dati contenitore, ad esempio un riferimento a un campo Contenitore. I risultati saranno semanticamente simili al testo o all'immagine rappresentati da questo dato vettoriale.
Opzioni disponibili solo quando Query per è Immagine:
-
Immagine è qualsiasi espressione che restituisce dati Contenitore che rappresentano l'immagine da trovare.
Compatibilità
Prodotto | Supportata |
FileMaker Pro | Sì |
FileMaker Go | Sì |
FileMaker WebDirect | Sì |
FileMaker Server | Sì |
FileMaker Cloud | Sì |
FileMaker Data API | Sì |
Pubblicazione Web personalizzata | Sì |
Creata nella versione
21.0
Descrizione
Questa istruzione di script cerca i record in cui il contenuto del Campo di destinazione è semanticamente simile alla query. Nella ricerca di testo, questo può fornire risultati più utili rispetto alla ricerca di corrispondenze letterali per parole chiave come fa l'Esegui la ricerca.
Nella ricerca di immagini, è possibile specificare testo in linguaggio naturale o vettori di embedding di testo che descrivano le immagini che si stanno cercando. Oppure è possibile specificare un'immagine (o vettori di embedding per un'immagine) che sia simile alle immagini che si stanno cercando.
Questa istruzione di script ha queste modalità di funzionamento determinate dall'opzione Query per:
-
Se viene impostato Linguaggio naturale, l'utente immette la query come testo in linguaggio naturale nell'opzione Testo. Questa istruzione di script invia il testo della query al modello specificato per la conversione in vettori di embedding.
-
Se viene impostato Immagine, la query viene fornita come dati Contenitore per un'immagine nell'opzione Immagine. Questa istruzione di script invia l'immagine della query al modello specificato per la conversione in vettori di embedding dell'immagine.
-
Se viene impostato Dati vettoriali, i vettori di embedding vengono forniti come dati Contenitore per la query nell'opzione Vettore. In caso di utilizzo ricorrente di determinate query, potrebbe essere più efficiente ottenere i vettori di embedding per tali query una prima volta e salvarli anziché riottenerli frequentemente dal modello.
È necessario utilizzare lo stesso modello di embedding per generare i vettori per l'opzione Vettore come si fa per i vettori di embedding nel Campo di destinazione.
Per i vettori di embedding di immagini e di testo è possibile utilizzare i modelli supportati dal Server modello AI installato con FileMaker Server. Vedere Configurazione dei servizi di AI nella Guida di FileMaker Server.
Partendo da tutti i record della tabella corrente oppure solo dai record del gruppo trovato corrente (impostato tramite l'opzione Gruppo di record), questa istruzione di script confronta i dati nel Campo di destinazione con la query per similarità (o dissimilarità) semantica. Il risultato è un gruppo trovato limitato (ristretto) che non supera il numero di record di Restituisci conteggio che soddisfano le condizioni di similarità del coseno. Il gruppo trovato risultante viene ordinato in ordine di similarità del coseno decrescente, in modo che i primi record siano quelli più rilevanti.
Note
-
Sono necessari vettori di embedding normalizzati. Per garantire compatibilità e performance, tutti i vettori di embedding devono essere generati dallo stesso modello; la combinazione di vettori di embedding generati da modelli diversi non è supportata.
Esempio 1
Configura un account AI, passa al formato Dettagli riunioni, quindi esegue in tutti i record una ricerca semantica per Testo (come linguaggio naturale) nel campo Contenitore Riunioni::Appunto_Embedding, che contiene vettori di embedding per il contenuto del campo Riunioni::Appunto (vedere Esempio 1 in Inserisci Embedding nel gruppo trovato). Per risultati più utili, il numero di risultati è limitato a 10 e la similarità del coseno tra Testo e il contenuto del campo Riunioni::Appunto_Embedding deve essere maggiore di 0,4. Il gruppo trovato risultante viene ordinato con i record più rilevanti all'inizio.
Configura account AI [ Nome account: "my-account" ; Fornitore modello: OpenAI ; Chiave API: "sk-RZCtpWT..." ]
Vai al formato [ "Dettagli riunioni" (Riunioni) ; Animazione: Nessuna ]
Esegui ricerca semantica [ Query per: Linguaggio naturale ; Nome account: "my-account" ; Modello di Embedding: "text-embedding-3-small" ; Testo: "Reclutamento, definizione lavoro, piano di training" ; Gruppo di record: Tutti i record ; Campo di destinazione: Riunioni::Appunto_Embedding ; Restituisci conteggio: 10 ; Condizione similarità del coseno: maggiore di ; Valore similarità del coseno: .4 ]
Esempio 2
Configura un account AI, va al formato Dettagli riunioni, quindi chiede all'utente il testo da trovare. La funzione GetEmbedding invia quel testo al modello, quindi Imposta campo salva i vettori di embedding nel campo Contenitore globale Riunioni::Input. Supponendo che il campo Contenitore Riunioni::Appunto_Embedding contenga vettori di embedding per i contenuti del campo Riunioni::Appunto (vedere Esempio 1 in Inserisci Embedding nel gruppo trovato), Esegui ricerca semantica confronta i dati vettoriali in Riunioni::Input con Riunioni::Appunto_Embedding in tutti i record e restituisce un gruppo trovato che soddisfa i criteri del numero di risultati restituiti e della similarità.
Configura account AI [ Nome account: "my-account" ; Fornitore modello: OpenAI ; Chiave API: "sk-RZCtpWT..." ]
Vai al formato [ "Dettagli riunioni" (Riunioni) ; Animazione: Nessuna ]
Mostra finestra personalizz. [ "Trova riunioni con appunti su:" ; $Input ]
Imposta campo [ Riunioni::Input ; GetEmbedding ( "my-account" ; "text-embedding-3-small" ; $Input ) ]
Esegui ricerca semantica [ Query per: Dati vettoriali ; Riunioni::Input ; Gruppo di record: Tutti i record ; Campo di destinazione: Riunioni::Appunto_Embedding ; Restituisci conteggio: 10 ; Condizione similarità del coseno: maggiore di ; Valore similarità del coseno: .5 ; Salva risultato: $$risultato]
Con l'opzione Salva risultato selezionata, per una determinata query che restituisce tre record, JSONFormatElement($$risultato) restituisce:
[
{
"recordId" : "7",
"similarity" : 0.999999947111836
},
{
"recordId" : "1",
"similarity" : 0.529809641529481
},
{
"recordId" : "5",
"similarity" : 0.524595621039394
}
]
Esempio 3
In un gruppo di immagini, cerca quelle che corrispondono maggiormente a una descrizione di testo. Lo script configura un account AI per il Server modello AI installato con FileMaker Server, va al formato Dettagli riunioni, mostra tutti i record, quindi ricava i vettori di embedding per le immagini del campo Riunioni::Immagine utilizzando un modello di embedding di immagini e le memorizza come dati binari nel campo Contenitore Riunioni::Embedding_Immagine. Esegui Ricerca semantica invia un testo di query in linguaggio naturale ("Persone sedute attorno a un tavolo") a un modello di embedding di testo utilizzando lo stesso account, quindi confronta il risultato con Riunioni::Embedding_Immagine in tutti i record e restituisce un gruppo trovato che soddisfa i criteri di similarità.
Configura account AI [ Nome account: "my-account" ; Fornitore modello: Personalizzato ; Endpoint: "https://my-server.example.com:8080/" ; Verifica certificati SSL ; Chiave API: Globale::Chiave_API ]
Vai al formato [ "Dettagli riunioni" (Riunioni) ; Animazione: Nessuna ]
Mostra tutti i record
Inserisci Embedding nel gruppo trovato [ Nome account: "my-account" ; Modello di Embedding: "clip-ViT-B-32" ; Campo di origine: Riunioni::Immagine ; Campo di destinazione: Riunioni::Embedding_Immagine ]
Esegui ricerca semantica [ Query per: Linguaggio naturale ; Nome account: "my-account" ; Modello di Embedding: "sentence-transformers/clip-ViT-B-32-multilingual-v1" ; Testo: "Persone sedute attorno a un tavolo" ; Gruppo di record: Tutti i record ; Campo di destinazione: Riunioni::Embedding_Immagine ; Condizione similarità del coseno: maggiore di ; Valore similarità del coseno: .7 ]
Esempio 4
In un insieme di immagini cerca quelle più simili all'immagine specificata. Lo script effettua le stesse operazioni preliminari dell'esempio precedente, ma in questo esempio Esegui ricerca semantica esegue la query in base all'immagine del campo Contenitore Globale::Immagine_Temp. Si noti che il modello di embedding utilizzato per l'immagine di query è lo stesso di quello che ha creato i vettori di embedding per le immagini cercate. Lo script restituisce un gruppo trovato che soddisfa i criteri di similarità.
Configura account AI [ Nome account: "my-account" ; Fornitore modello: Personalizzato ; Endpoint: "https://my-server.example.com:8080/" ; Verifica certificati SSL ; Chiave API: Globale::Chiave_API ]
Vai al formato [ "Dettagli riunioni" (Riunioni) ; Animazione: Nessuna ]
Mostra tutti i record
Inserisci Embedding nel gruppo trovato [ Nome account: "my-account" ; Modello di Embedding: "clip-ViT-B-32" ; Campo di origine: Riunioni::Immagine ; Campo di destinazione: Riunioni::Embedding_Immagine ]
Esegui ricerca semantica [ Query per: Linguaggio naturale ; Nome account: "my-account" ; Modello di Embedding: "/clip-ViT-B-32-" ; Immagine: Globale::Immagine_Temp ; Gruppo di record: Tutti i record ; Campo di destinazione: Riunioni::Embedding_Immagine ; Condizione similarità del coseno: maggiore di ; Valore similarità del coseno: .7 ]