Semantische zoekopdracht uitvoeren
Voert een semantische zoekactie uit in een doelveld voor de opgegeven tekst-, afbeeldings- of insluitvectoren.
Zie ook
Opties
-
Zoeken op geeft aan of de query Natuurlijke taal (tekst) is, Vectorgegevens insluit of een Afbeelding (containergegevens).
-
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 of Afbeelding is:
-
Accountnaam is een tekstexpressie voor de naam van de te gebruiken AI-account. 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 tekstexpressie. Zie de technische specificaties van FileMaker voor ondersteunde modellen.
Opties zijn alleen beschikbaar als Zoeken op Natuurlijke taal is:
-
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.
Opties zijn alleen beschikbaar als Zoeken op Afbeelding is:
-
Afbeelding is elke expressie die containergegevens retourneert die de te zoeken afbeelding vertegenwoordigen.
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 een afbeelding opgeven (of insluitvectoren voor een afbeelding) die lijkt op de afbeeldingen waarnaar 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 voor tekst.
-
Wanneer deze optie is ingesteld op Afbeelding, geeft u de zoekopdracht op als containergegevens voor een beeld in de optie Afbeelding. Deze scriptstap verzendt die zoekopdrachttekst naar het opgegeven model voor conversie naar afbeeldingsinsluitvectoren.
-
Wanneer u Vectorgegevens instelt, geeft u de insluitvectoren als containergegevens voor de zoekopdracht op in de optie Vector. 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.
U moet hetzelfde insluitmodel 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 AI Model Server die samen met FileMaker Server is geïnstalleerd. Zie de Help bij FileMaker Server voor meer informatie over het Configureren van AI-services.
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.
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.
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:
[
{
"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 AI-modelserver geïnstalleerd met FileMaker Server, gaat naar de lay-out Bijeenkomstdetails, toont alle records, krijgt vervolgens insluitvectoren voor de afbeeldingen in het veld Meetings::Image met behulp van een afbeeldingsinsluitmodel 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.
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 ]
Voorbeeld 4
Hiermee wordt in een reeks afbeeldingen gezocht naar afbeeldingen die het meest lijken op de opgegeven afbeelding. Het script maakt dezelfde voorbereidingen als in het vorige voorbeeld, maar in dit voorbeeld voert u semantische zoekopdrachten uit op de afbeelding in het veld Global::Temp_Image Container. Houd er rekening mee dat het insluitmodel dat wordt gebruikt voor de query-afbeelding hetzelfde is als het model waarmee insluitvectoren zijn gemaakt voor de afbeeldingen die worden gezocht. Het script retourneert een gevonden reeks die voldoet aan de vergelijkingscriteria.
AI-account configureren [ Accountnaam: "mijn-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 reeks [ Accountnaam: "mijn-account" ; Insluitmodel: "clip-ViT-B-32" ; Bronveld: Meetings::Image ; Doelveld: Meetings::Image_Embedding ]
Semantische zoekopdracht uitvoeren [ Zoeken op: Natuurlijke taal ; Accountnaam: "mijn-account" ; Insluitmodel: "/clip-ViT-B-32-" ; Afbeelding: Global::Temp_Image ; Recordreeks: Alle records ; Doelveld: Meetings::Image_Embedding ; Cosinusgelijkenis Voorwaarde: groter dan ; Waarde voor cosinusgelijkenis: .7 ]