Semantische zoekopdracht uitvoeren

Voert een semantische zoekopdracht uit in het opgegeven veld en beperkt de opgegeven recordset voor de opgegeven zoektekst en het opgegeven te gebruiken model of voor de opgegeven insluitvectoren.

Opties 

  • Zoeken op geeft aan of de zoekopdracht Natuurlijke taal (tekst) is of Vectorgegevens insluit.

  • Met Recordreeks selecteert u of u Alle records of de Huidige gevonden reeks wilt doorzoeken.

  • Doelveld specificeert een tekst- of containerveld waarin moet worden gezocht. De inhoud van het veld moet insluitvectoren bevatten, hetzij als een JSON matrix bij een tekstveld, hetzij als binaire gegevens bij een containerveld.

  • Aantal retourneringen is een numerieke expressie voor het aantal semantisch vergelijkbare records dat wordt geretourneerd als de gevonden reeks. Indien dit niet is opgegeven, is de standaardinstelling maximaal 10 records.

  • De Cosinusgelijkenis voorwaarde specificeert hoe de cosinusgelijkenis van de gegevens wordt vergeleken met de Waarde voor cosinusgelijkenis. Als deze niet is opgegeven, wordt de gevonden reeks niet beperkt door een voorwaarde voor cosinusgelijkenis.

  • De Waarde voor cosinusgelijkenis is de drempel die wordt gebruikt in combinatie met de Cosinusgelijkenis voorwaarde om te bepalen of gegevens semantisch vergelijkbaar of ongelijk zijn. Deze numerieke expressie moet een waarde hebben tussen -1 (ongelijk) en 1 (vergelijkbaar), inclusief.

  • Met Resultaat opslaan wordt de gevonden reeks in een tekstveld of variabele opgeslagen als een JSON-array met record-ID's en de cosinusgelijkeniswaarden gesorteerd op aflopende cosinusgelijkenis.

Opties zijn alleen beschikbaar als Zoeken op Natuurlijke taal is:

  • Accountnaam is een tekstexpressie van het AI-account dat voor deze scriptstap moet worden gebruikt. Gebruik in het huidige bestand de scriptstap AI-account configureren scriptstap om het account in te stellen en deze naam toe te wijzen op elk moment voordat deze scriptstap wordt uitgevoerd.

  • Insluitmodel is de naam van het model waarmee insluitvectoren worden gegenereerd. Geef de modelnaam op als een tekstexpressie, die beschikbaar is bij de modelprovider.

  • Tekst is een tekstexpressie voor de tekstquery in natuurlijke taal. De resulterende tekst wordt naar het model verzonden voor het insluiten van vectoren, die vervolgens worden vergeleken met het insluiten van vectoren in het doelveld voor gelijkenis.

Opties zijn alleen beschikbaar als Zoeken op Vectorgegevens is:

  • Vector betekent de ingesloten vectoren die de te zoeken tekst of afbeelding vertegenwoordigen. Dit is een expressie die containergegevens retourneert, zoals een verwijzing naar een containerveld. Resultaten zullen semantisch vergelijkbaar zijn met de tekst of afbeelding die deze vectorgegevens vertegenwoordigt.

Compatibiliteit 

Product Ondersteund
FileMaker Pro Ja
FileMaker Go Ja
FileMaker WebDirect Ja
FileMaker Server Ja
FileMaker Cloud Ja
FileMaker Data API Ja
Custom Web Publishing Ja

Afkomstig uit versie 

21.0

Beschrijving 

In deze scriptstap wordt gezocht naar records waarin de inhoud van het veld Doel semantisch vergelijkbaar is met de zoekopdracht. Bij het zoeken naar tekst kan dit nuttigere resultaten opleveren dan zoeken naar letterlijke overeenkomsten met trefwoorden zoals bij de scriptstap Zoekopdracht uitvoeren.

Bij het zoeken naar afbeeldingen kunt u tekst in natuurlijke taal of tekstinsluitingsvectoren opgeven die de afbeeldingen beschrijven die u zoekt. U kunt ook vectoren opgeven voor het insluiten van een afbeelding die lijkt op de afbeeldingen die u zoekt.

Deze scriptstap heeft twee werkingsmodi die worden bepaald door de optie Zoeken op:

  • Wanneer deze optie is ingesteld op Natuurlijke taal, geeft u de zoekopdracht op als tekst in natuurlijke taal in de optie Tekst. Deze scriptstap verzendt die zoekopdrachttekst naar het opgegeven model voor conversie naar insluitvectoren. Daarom is voor deze modus een AI-accountnaam en insluitmodel vereist.

  • Als u Vectorgegevens instelt, geeft u de insluitvectoren op als containergegevens voor de zoekopdracht. Als u vaak bepaalde zoekopdrachten gebruikt, kan het efficiënter zijn om vectoren voor die zoekopdrachten één keer in te sluiten en op te slaan in plaats van ze vaak uit het model te halen.

    Gebruik deze optie wanneer u vectoren opgeeft voor het insluiten van een afbeelding waarnaar u wilt zoeken. U moet hetzelfde insluitmodel voor afbeeldingen gebruiken om de vectoren voor de optie (Vector) te genereren zoals voor de insluitvectoren voor afbeeldingen in het veld Doel.

Voor insluitvectoren voor afbeeldingen en tekst kunt u de modellen gebruiken die worden ondersteund door de open source-modelserver die afzonderlijk bij FileMaker Pro of bij FileMaker Server is geïnstalleerd. Zie het technische blog van Claris.

Deze scriptstap begint met alle records in de huidige tabel of alleen met de records in de huidige gevonden set (ingesteld met de optie Recordreeks) en vergelijkt de gegevens in het Doelveld met de zoekopdracht voor semantische gelijkenis (of ongelijkenis). Het resultaat is een beperkte (versmalde) gevonden reeks van niet meer dan het Aantal retourneringen van records dat voldoet aan de voorwaarden voor cosinusgelijkenis. De resulterende gevonden reeks wordt gesorteerd op aflopende cosinusgelijkenissen, zodat de meest relevante records als eerste worden weergegeven.

Opmerkingen 

  • Genormaliseerde insluitvectoren zijn vereist. Alle insluitvectoren moeten worden gegenereerd op basis van hetzelfde model om compatibiliteit en prestaties te garanderen; het mengen van insluitvectoren van verschillende modellen wordt niet ondersteund.

Voorbeeld 1 

Hiermee configureert u een AI-account, gaat u naar de lay-out Bijeenkomstdetails en voert u in alle records een semantische zoekactie uit voor Tekst (als natuurlijke taal) in het containerveld Meetings::Note_Embedding. Dit veld bevat insluitvectoren voor de inhoud van het veld Meetings::Note (zie Voorbeeld 1 in Insluiting invoegen in gevonden reeks). Voor nuttigere resultaten is het geretourneerde aantal beperkt tot 10 en moet de cosinusgelijkenis tussen Tekst en de inhoud van het veld Meetings::Note_Embedding groter zijn dan 0,4. De resulterende gevonden reeks wordt eerst gesorteerd met de meest relevante records.

Kopiëren
AI-account configureren [ Accountnaam: "my-account" ; Modelprovider: OpenAI ; API-sleutel: "sk-RZCtpWT..." ]

Ga naar lay-out [ "Bijeenkomstdetails" (Meetings) ; Animatie: Geen ]

Semantische zoekopdracht uitvoeren [ Zoeken op: Natuurlijke taal ; Accountnaam: "my-account" ; Insluitmodel: "text-embedding-3-small" ; Tekst: "Recruitment, job definition, training plan" ; Recordreeks: Alle records ; Doelveld: Meetings::Note_Embedding ; Aantal retourneringen: 10 ; Cosinusgelijkenis Voorwaarde: groter dan ; Waarde voor cosinusgelijkenis: .4 ]

Voorbeeld 2 

Hiermee configureert u een AI-account, gaat u naar de lay-out Bijeenkomstdetails en vraagt u de gebruiker naar tekst te zoeken. De functie GetEmbedding functie stuurt die tekst naar het model en vervolgens slaat Veld instellen de insluitvectoren op in het globale containerveld Meetings::Input. Ervan uitgaande dat het containerveld Meetings::Note_Embedding insluitvectoren bevat voor de inhoud van het veld Meetings::Note (zie Voorbeeld 1 in Insluiting invoegen in gevonden reeks), vergelijkt Semantische zoekopdracht uitvoeren de vectorgegevens in Meetings::Input met Meetings::Note_Embedding in alle records en wordt een gevonden reeks geretourneerd die voldoet aan de criteria voor aantal en gelijkenis.

Kopiëren
AI-account configureren [ Accountnaam: "mijn-account" ; Modelprovider: OpenAI ; API-sleutel: "sk-RZCtpWT..." ]

Ga naar lay-out [ "Bijeenkomstdetails" (Meetings) ; Animatie: Geen ]
Aangepast dialoogvenster tonen [ "Bijeenkomsten zoeken met notities over:" ; $Input ]

Veld instellen [ Meetings::Input ; GetEmbedding ( "mijn-account" ; "text-embedding-3-small" ; $Input ) ]

Semantische zoekopdracht uitvoeren [ Zoeken op: Vectorgegevens ; Meetings::Input ; Recordreeks: Alle records ; Doelveld: Meetings::Note_Embedding ; Aantal retourneringen: 10 ; Cosinusgelijkenis Voorwaarde: groter dan ; Waarde voor cosinusgelijkenis: .5 ; Resultaat opslaan: $$result]

Als de optie Resultaat opslaan is geselecteerd, retourneert JSONFormatElement($$Result) het volgende voor een bepaalde zoekopdracht die drie records retourneert:

Kopiëren
[
    {
        "recordId" : "7",
        "similarity" : 0.999999947111836
    },
    {
        "recordId" : "1",
        "similarity" : 0.529809641529481
    },
    {
        "recordId" : "5",
        "similarity" : 0.524595621039394
    }
]

Voorbeeld 3 

Hiermee wordt in een set afbeeldingen gezocht naar afbeeldingen die het beste overeenkomen met een tekstbeschrijving. Het script configureert een AI-account voor de open source-modelserver geïnstalleerd met FileMaker Server, gaat naar de lay-out Bijeenkomstdetails, toont alle records, krijgt vervolgens ingesloten vectoren voor de beelden in het veld Meetings::Image met behulp van een image inbedding model en slaat ze op als binaire gegevens in het containerveld Meetings::Image_Embedding. Semantische zoekopdracht uitvoeren verzendt een query-tekst in natuurlijke taal ('Mensen zitten rond een tafel') naar een tekst-insluitmodel met hetzelfde account, vergelijkt het resultaat vervolgens met Meetings::Image_Embedding in alle records en retourneert een gevonden set die voldoet aan de vergelijkingscriteria.

Kopiëren
AI-account configureren [ Accountnaam: "my-account" ; Modelprovider: Aangepast ; Eindpunt: "https://my-server.example.com:8080/" ; SSL-certificaten verifiëren ; API-sleutel: Global::API_Key ]

Ga naar lay-out [ "Bijeenkomstdetails" (Meetings) ; Animatie: Geen ]
Alle records tonen

Insluiting invoegen in gevonden set [ Accountnaam: "my-account" ; Insluitmodel: "clip-ViT-B-32" ; Bronveld: Meetings::Image ; Doelveld: Meetings::Image_Embedding ]

Semantische zoekopdracht uitvoeren [ Zoeken op: Natuurlijke taal ; Accountnaam: "my-account" ; Insluitmodel: "sentence-transformers/clip-ViT-B-32-multilingual-v1" ; Tekst: "Mensen zitten rond een tafel" ; Recordreeks: Alle records ; Doelveld: Meetings::Image_Embedding ; Cosinusgelijkenis Voorwaarde: groter dan ; Waarde voor cosinusgelijkenis: .7 ]