Semantische Suche durchführen

Führt eine semantische Suche im angegebenen Feld durch und beschränkt die angegebene Datensatzmenge für den angegebenen Suchtext und das zu verwendende Modell oder für die angegebenen Einbettungsvektoren.

Optionen 

  • Abfrage nach gibt an, ob die Abfrage Natürliche Sprache (Text) oder Einbettung von Vektordaten aufweist.

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

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

  • Kontoname ist ein Textausdruck des KI-Kontos, das für diesen Scriptschritt verwendet werden soll. 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, der beim Modellanbieter verfügbar 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.

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 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. Sie können auch Einbettungsvektoren für ein Bild angeben, das den gesuchten Bildern ähnelt.

Dieser Scriptschritt hat zwei 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 diesen Abfragetext an das angegebene Modell zur Umwandlung in Einbettungsvektoren. Aus diesem Grund erfordert dieser Modus einen KI-Kontonamen und ein Einbettungsmodell.

  • Bei der Einstellung Vektordaten stellen Sie die Einbettungsvektoren als Containerdaten für die Abfrage bereit. 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.

    Verwenden Sie diese Option, wenn Sie Einbettungsvektoren für ein zu suchendes Bild angeben. 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 vom Open-Source-Modell-Server unterstützt werden, der separat mit FileMaker Pro bereitgestellt oder mit FileMaker Server installiert wird. Siehe Claris Engineering Blog.

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: Keine ]

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: Keine ]
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
[
    {
        "DatensatzId" : "7",
        "Ähnlichkeit" : 0.999999947111836
    },
    {
        "DatensatzId" : "1",
        "Ähnlichkeit" : 0.529809641529481
    },
    {
        "DatensatzId" : "5",
        "Ähnlichkeit" : 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 Open-Source-Modell-Server, 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: Keine ]
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 ]