Esegui ricerca semantica

Esegue una ricerca semantica nel campo specificato e limita il gruppo di record specificato per il testo di ricerca dato e il modello da utilizzare o per i vettori di embedding dati.

Opzioni 

  • Query per specifica se la query è Linguaggio naturale (testo) o Dati vettoriali di embedding.

  • 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:

  • Nome account è un'espressione di testo dell'account AI per questa istruzione di script 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, disponibile presso il fornitore del modello.

  • 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.

Compatibilità 

Prodotto Supportata
FileMaker Pro
FileMaker Go
FileMaker WebDirect
FileMaker Server
FileMaker Cloud
FileMaker Data API
Pubblicazione Web personalizzata

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 i vettori di embedding per un'immagine simile alle immagini che si stanno cercando.

Questa istruzione di script ha due 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. Per questo motivo questa modalità richiede un nome account AI e un modello di embedding.

  • Se viene impostato Dati vettoriali, l'utente fornisce i vettori di embedding come dati contenitore per la query. 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.

    Quando si specificano i vettori di embedding per un'immagine da cercare, utilizzare questa opzione. È necessario utilizzare lo stesso modello di embedding di immagini per generare i vettori per l'opzione Vettore come si fa per i vettori di embedding di immagini nel Campo di destinazione.

Per i vettori di embedding sia di immagini che testo, è possibile utilizzare i modelli supportati dal server modello open source fornito separatamente con FileMaker Pro o installato con FileMaker Server. Vedere il Claris Engineering Blog.

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.

Copia
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à.

Copia
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:

Copia
[
    {
        "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 open source 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à.

Copia
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 ]