Semantische Suche durchführen

Führt eine semantische Suche in einem Zielfeld nach dem angegebenen Text, Bild oder Einbettungsvektoren durch.

Optionen 

  • Abfrage nach gibt an, ob es sich bei der Abfrage um natürliche Sprache (Text), eingebettete Vektordaten oder ein Bild (Containerdaten) handelt.

  • Datensatzmenge gibt an, ob Alle Datensätze oder Aktuelle Ergebnismenge gesucht werden sollen.

  • Zielfeld gibt ein Text- oder Containerfeld an, in dem gesucht werden soll. Der Inhalt des Felds muss Einbettungsvektoren enthalten, entweder als JSON-Array, wenn es sich um ein Textfeld handelt, oder als Binärdaten, wenn es sich um ein Containerfeld handelt.

  • Anzahl der Rückgaben ist ein numerischer Ausdruck für die Anzahl der semantisch ähnlichen Datensätze, die als Ergebnismenge zurückgegeben werden sollen. Wenn nichts angegeben wird, ist die Standardeinstellung maximal 10 Datensätze.

  • Die Bedingung für Cosinus-Ähnlichkeit gibt an, wie die Cosinus-Ähnlichkeit der Daten mit dem Wert für Cosinus-Ähnlichkeit verglichen wird. Wenn nicht angegeben, wird die Ergebnismenge nicht durch eine Bedingung für Cosinus-Ähnlichkeit eingeschränkt.

  • Wert für Cosinus-Ähnlichkeit ist der Schwellenwert, der zusammen mit der Bedingung für Cosinus-Ähnlichkeit verwendet wird, um festzustellen, ob die Daten semantisch ähnlich oder unähnlich sind. Dieser numerische Ausdruck muss einen Wert zwischen -1 (unähnlich) und 1 (ähnlich) aufweisen.

  • Ergebnis speichern speichert die Ergebnismenge in einem Textfeld oder einer Variablen als JSON-Array von Datensatz-IDs und ihren Werten für Cosinus-Ähnlichkeit, sortiert nach absteigender Cosinus-Ähnlichkeit.

Optionen nur verfügbar, wenn Abfrage nach Natürliche Sprache oder Bild ist:

  • Kontoname ist ein Textausdruck für den Namen des zu verwendenden KI-Kontos. Verwenden Sie in der aktuellen Datei den Scriptschritt „KI-Konto konfigurieren“, um das Konto einzurichten und ihm diesen Namen zuzuweisen, bevor dieser Scriptschritt ausgeführt wird.

  • Einbettungsmodell ist der Name des Modells zur Generierung von Einbettungsvektoren. Geben Sie den Modellnamen als Textausdruck an. Informationen zu den unterstützten Modellen finden Sie unter FileMaker – Technische Daten.

Die Optionen sind nur verfügbar, wenn für Abfrage nach die Option Natürliche Sprache festgelegt ist:

  • Text ist ein Textausdruck für die Textabfrage in natürlicher Sprache. Der resultierende Text wird an das Modell für Einbettungsvektoren gesendet, die dann mit den Einbettungsvektoren im Zielfeld auf Ähnlichkeit verglichen werden.

Die Optionen sind nur verfügbar, wenn für Abfrage nach die Option Vektordaten festgelegt ist:

  • Vektor bezeichnet die Einbettungsvektoren, die den zu suchenden Text oder die zu suchenden Bilder darstellen. Dies ist ein Ausdruck, der Containerdaten zurückgibt, z. B. einen Verweis auf ein Containerfeld. Die Ergebnisse werden dem Text oder Bild, die diese Vektordaten darstellen, semantisch ähnlich sein.

Optionen nur verfügbar, wenn Abfrage nach Bild ist:

  • Bild ist ein beliebiger Ausdruck, der Containerdaten zurückgibt, die das zu suchende Bild darstellen.

Kompatibilität 

Produkt Unterstützt
FileMaker Pro Ja
FileMaker Go Ja
FileMaker WebDirect Ja
FileMaker Server Ja
FileMaker Cloud Ja
FileMaker Data API Ja
Custom Web Publishing Ja

Ursprung in Version 

21.0

Beschreibung 

Dieser Scriptschritt sucht nach Datensätzen, in denen der Inhalt des Zielfelds semantisch mit der Abfrage übereinstimmt. Bei der Suche nach Text kann dies nützlichere Ergebnisse liefern als die Suche nach wörtlichen Übereinstimmungen mit Schlüsselwörtern, wie mit dem Scriptschritt Ergebnismenge suchen.

Bei der Suche nach Bildern können Sie Text in natürlicher Sprache oder Text mit Einbettungsvektoren angeben, die die gesuchten Bilder beschreiben. Oder Sie können ein Bild (oder Einbettungsvektoren für ein Bild) angeben, das den gesuchten Bildern ähnelt.

Dieser Scriptschritt hat diese Betriebsmodi, die durch die Option Abfrage nach bestimmt werden:

  • Bei der Einstellung Natürliche Sprache geben Sie die Abfrage als Text in natürlicher Sprache in der Option Text an. Dieser Scriptschritt sendet Abfragetext an das angegebene Modell zur Umwandlung in Text-Einbettungsvektoren.

  • Bei der Einstellung Bild geben Sie die Abfrage als Containerdaten für ein Bild in der Option Bild an. Dieser Scriptschritt sendet dieses Abfragebild an das angegebene Modell zur Umwandlung in Bild-Einbettungsvektoren.

  • Bei der Einstellung Vektordaten geben Sie die Einbettungsvektoren als Containerdaten für die Abfrage in der Option Vektor an. Wenn Sie bestimmte Abfragen häufig verwenden, kann es effizienter sein, die Einbettungsvektoren für diese Abfragen einmal abzurufen und zu speichern, als sie häufig aus dem Modell abzurufen.

    Sie müssen dasselbe Einbettungsmodell verwenden, um die Vektoren für die Option Vektor zu generieren, wie für die Einbettungsvektoren im Zielfeld.

Für Bild- und Text-Einbettungsvektoren können Sie die Modelle verwenden, die von dem mit FileMaker Server installierten KI-Modellserver unterstützt werden. Weitere Informationen finden Sie unter Konfigurieren von KI-Diensten in der FileMaker Server Hilfe.

Ausgehend von entweder allen Datensätzen in der aktuellen Tabelle oder nur den Datensätzen in der aktuellen Ergebnismenge (festgelegt durch die Option Datensatzmenge), vergleicht dieser Scriptschritt die Daten in Zielfeld mit der Abfrage auf semantische Ähnlichkeit (oder Unähnlichkeit). Das Ergebnis ist eine eingeschränkte Ergebnismenge von nicht mehr als Anzahl der Rückgaben Datensätzen, die die Bedingungen für Cosinus-Ähnlichkeit erfüllen. Die resultierende Ergebnismenge wird nach absteigender Cosinus-Ähnlichkeit sortiert, sodass die relevantesten Datensätze an erster Stelle stehen.

Hinweise 

  • Normalisierte Einbettungsvektoren sind erforderlich. Alle Einbettungsvektoren müssen aus demselben Modell generiert werden, um Kompatibilität und Leistung zu gewährleisten. Das Mischen von Einbettungsvektoren aus verschiedenen Modellen wird nicht unterstützt.

Beispiel 1 

Konfiguriert ein KI-Konto, geht zum Layout „Meetingdetails“ und führt dann in allen Datensätzen eine semantische Suche nach Text (als natürliche Sprache) im Containerfeld „Meetings::Notiz_Einbettung“ durch, das Einbettungsvektoren für den Inhalt des Felds „Besprechung::Notiz“ enthält (siehe Beispiel 1 in Einbettung in Ergebnismenge einfügen). Um nützlichere Ergebnisse zu erhalten, ist die Anzahl der Rückgaben auf 10 begrenzt und die Cosinus-Ähnlichkeit zwischen Text und dem Inhalt des Felds „Meetings::Notiz_Einbettung“ muss größer als 0,4 sein. Die Ergebnismenge wird so sortiert, dass die relevantesten Datensätze an erster Stelle stehen.

Kopieren
KI-Konto konfigurieren [ Kontoname: "mein-Konto" ; Modellanbieter: OpenAI ; API-Schlüssel: "sk-RZCtpWT..." ]

Gehe zu Layout [ "Meetingdetails" (Meetings) ; Animation: Ohne ]

Semantische Suche durchführen [ Abfrage nach: Natürliche Sprache ; Kontoname: "mein-Konto" ; Einbettungsmodell: "Text-Einbettung-3-klein" ; Text: "Rekrutierung, Stellenbeschreibung, Schulungsplan" ; Datensatzmenge: Alle Datensätze ; Zielfeld: Meetings::Notiz_Einbettung ; Anzahl der Rückgaben: 10 ; Bedingung für Cosinus-Ähnlichkeit: ist größer als ; Wert für Cosinus-Ähnlichkeit: .4 ]

Beispiel 2

Konfiguriert ein KI-Konto, wechselt zum Layout „Meetingdetails“ und fragt den Benutzer dann nach dem zu suchenden Text. Die Funktion „GetEmbedding“ sendet diesen Text an das Modell, dann speichert „Feldwert setzen“ die Einbettungsvektoren im globalen Containerfeld „Meetings::Eingabe“. Angenommen, das Containerfeld „Meetings::Notiz_Einbettung“ enthält Einbettungsvektoren für den Inhalt des Felds „Meetings::Notiz“ (siehe Beispiel 1 in Einbettung in Ergebnismenge einfügen). Dann vergleicht „Semantische Suche durchführen“ die Vektordaten in „Meetings::Eingabe“ mit „Meetings::Notiz_Einbettung“ in allen Datensätzen und liefert eine Ergebnismenge, die die Anzahl der Rückgaben und die Ähnlichkeitskriterien erfüllt.

Kopieren
KI-Konto konfigurieren [ Kontoname: "mein-Konto" ; Modellanbieter: OpenAI ; API-Schlüssel: "sk-RZCtpWT..." ]

Gehe zu Layout [ "Meetingdetails" (Meetings) ; Animation: Ohne ]
Eigenes Dialogfeld anzeigen [ "Meetings suchen mit Notizen zu:" ; $Eingabe ]

Feldwert setzen [ Meetings::Eingabe ; GetEmbedding ( "mein-Konto" ; "Text-Einbettung-3-klein" ; $Eingabe ) ]

Semantische Suche durchführen [ Abfrage nach: Vektordaten ; Meetings::Eingabe ; Datensatzmenge: Alle Datensätze ; Zielfeld: Meetings::Notiz_Einbettung ; Anzahl der Rückgaben: 10 ; Bedingung für Cosinus-Ähnlichkeit: ist größer als ; Wert für Cosinus-Ähnlichkeit: .5 ; Ergebnis speichern: $$Ergebnis]

Wenn die Option Ergebnis speichern ausgewählt ist, gibt JSONFormatElement($$Ergebnis) für eine gegebene Abfrage, die drei Datensätze zurückgibt, Folgendes zurück:

Kopieren
[
    {
        "recordId" : "7",
        "similarity" : 0.999999947111836
    },
    {
        "recordId" : "1",
        "similarity" : 0.529809641529481
    },
    {
        "recordId" : "5",
        "similarity" : 0.524595621039394
    }
]

Beispiel 3 

Durchsucht eine Reihe von Bildern nach denjenigen, die am besten zu einer Textbeschreibung passen. Das Script konfiguriert ein KI-Konto für den mit FileMaker Server installierten KI-Modellserver, wechselt zum Layout „Meetingdetails“, zeigt alle Datensätze an, ruft dann mithilfe eines Bild-Einbettungsmodells Einbettungsvektoren für die Bilder im Feld „Meetings::Bild“ ab und speichert sie als Binärdaten im Containerfeld „Meetings::Bild_Einbettung“. „Semantische Suche durchführen“ sendet einen Abfragetext in natürlicher Sprache („Menschen, die um einen Tisch sitzen“) an ein Einbettungsmodell, das dasselbe Konto verwendet, vergleicht dann das Ergebnis mit „Meetings::Bild_Einbettung“ in allen Datensätzen und gibt eine Ergebnismenge zurück, die die Ähnlichkeitskriterien erfüllt.

Kopieren
KI-Konto konfigurieren [ Kontoname: "mein-Konto" ; Modellanbieter: Benutzerdefiniert ; Endpunkt: "https://mein-server.beispiel.com:8080/" ; SSL-Zertifikate verifizieren ; API-Schlüssel: Global::API_Schlüssel ]

Gehe zu Layout [ "Meetingdetails" (Meetings) ; Animation: Ohne ]
Alle Datensätze anzeigen

Einbettung in Ergebnismenge einfügen [ Kontoname: "mein-Konto" ; Einbettungsmodell: "clip-ViT-B-32" ; Quellfeld: Meetings::Image ; Target Field: Meetings::Bild_Einbettung ]

Semantische Suche durchführen [ Abfrage nach: Natürliche Sprache ; Kontoname: "mein-Konto" ; Einbettungsmodell: "sentence-transformers/clip-ViT-B-32-multilingual-v1" ; Text: "sentence-transformers/clip-ViT-B-32-multilingual-v1" ; Datensatzmenge: Alle Datensätze ; Zielfeld: Meetings::Bild_Einbettung ; Bedingung für Cosinus-Ähnlichkeit: ist größer als ; Wert für Cosinus-Ähnlichkeit: .7 ]

Beispiel 4 

Sucht in einer Reihe von Bildern nach denen, die dem angegebenen Bild am ähnlichsten sind. Das Script trifft dieselben Vorbereitungen wie im vorherigen Beispiel, jedoch in diesem Beispiel fragt „Semantische Suche durchführen“ anhand des Bildes im Containerfeld Global::Temp_Bild. Beachten Sie, dass das für das Abfragebild verwendete Einbettungsmodell dasselbe ist wie dasjenige, das Einbettungsvektoren für die zu durchsuchenden Bilder erstellt hat. Das Script gibt eine Ergebnismenge zurück, die den Ähnlichkeitskriterien entspricht.

Kopieren
KI-Konto konfigurieren [ Kontoname: "mein-Konto" ; Modellanbieter: Benutzerdefiniert ; Endpunkt: "https://mein-server.beispiel.com:8080/" ; SSL-Zertifikate verifizieren ; API-Schlüssel: Global::API_Schlüssel ]

Gehe zu Layout [ "Meetingdetails" (Meetings) ; Animation: Ohne ]
Alle Datensätze anzeigen

Einbettung in Ergebnismenge einfügen [ Kontoname: "mein-Konto" ; Einbettungsmodell: "clip-ViT-B-32" ; Quellfeld: Meetings::Bild ; Zielfeld: Meetings::Bild_Einbettung ]

Semantische Suche durchführen [ Abfrage nach: Bild ; Kontoname: "mein-Konto" ; Einbettungsmodell: "/clip-ViT-B-32-" ; Bild: "Global::Temp_Bild ; Datensatzmenge: Alle Datensätze ; Zielfeld: Meetings::Bild_Einbettung ; Bedingung für Cosinus-Ähnlichkeit: ist größer als ; Wert für Cosinus-Ähnlichkeit: .7 ]