Op ElasticON werd gepresenteerd waar de organisatie achter Elastic zoal mee bezig is, en wat hun meest recente ontwikkelingen zijn. Vanuit Carthago was Yuri daarbij, samen met Gilang van CAPE groep. Op 22 november 2022, een dagje Amsterdam met Elastic, wat zijn we te weten gekomen?
Elasticsearch is in de kern een database waarin ‘documenten’ kunnen worden opgeslagen; korte stukjes tekst in JSON-formaat. De zoekmachine die Elasticsearch heeft is echter het component dat het zo krachtig maakt. Zoeken door petabytes aan documenten is volgens Elastic een fluitje van een cent.
Beurs van Berlage
Deze conferentie werd gehouden in de fenomenale Beurs van Berlage, pal naast het Centraal Station van Amsterdam. Het in 1903 opgeleverde handelsgebouw was toneel van zo veel ontwikkelaars en Elasticsearch ambassadeurs, het ademde geekyness en gretigheid om nieuwe dingen te leren. Hongerig voor nieuwe informatie begon de dag keurig op tijd met de eerste keynote om 9:30.
Vanaf de opening was de weg naar de koffie al gauw gevonden. De Beurs van Berlage, haar personeel en catering zijn uitstekend in de smaak gevallen: de verse koffie, ontbijt en lunchhapjes waren voortreffelijk. Wat waren de meest indrukwekkende presentaties en bijeenkomsten op de dag zelf?
Vector search
Heb je wel eens nagedacht over wat zoeken echt betekent in de moderne zin van het woord? In de traditionele zin van het woord beschouwen we zoeken als
-
- “Gebruiker geeft een zoekterm op” en
- de computer geeft als resultaat “exacte overeenkomsten met de zoekterm”.
Stel dat je wil weten op hoeveel graden de oven moet als je een appeltaart wil bakken, dan kun je zoeken op “Temperatuur oven appeltaart”. Waarschijnlijk ziet een resultaat er dan zo uit:
In principe vinden we het antwoord op onze vraag redelijk snel, maar stel dat je zocht op “Hoe heet moet een appeltaart gebakken worden?” dan ziet het resultaat er al wat minder fijnmazig uit:
De enige overeenkomst is de appeltaart, en het antwoord op de vraag die we hadden komt eigenlijk niet voort uit het zoekresultaat.
Daarom wordt tegenwoordig ook gezocht naar de intentie van een zoekopdracht. Door een zoekopdracht tegen een model aan te houden dat een representatie is van de natuurlijke taal die wij mensen spreken, kunnen we erachter komen waar een gebruiker naar zoekt. Dat wordt gedaan door de zoekopdracht om te rekenen naar vectoren (een numerieke representatie), en vervolgens in de bak met data te zoeken naar welke set van vectoren het beste overeen komen.
In de praktijk kan dat er als volgt uit zien:
Op deze manier kunnen we uit een zoekopdracht een intentie destilleren, en tegen de databank aanhouden met ‘getrainde’ data. Als we dan een resultaat vinden die op veel gebieden overeen komt met de intentie van de zoekopdracht, dan komen we waarschijnlijk in de buurt van het daadwerkelijke antwoord. Hier is te zien dat de enige daadwerkelijke overeenkomst het woord ‘appeltaart’ is, en de rest van de informatie komt uit het getrainde model. Desalniettemin kunnen we het antwoord op de zoekvraag destilleren met een dergelijk model: 190 graden it is!
Elastic is ook bezig met dit soort modellen ondersteunen in hun Elastic platform. Zij geven het als volgt weer:
Zoals je in de afbeelding ziet, is het zelfs mogelijk om op de inhoud van foto’s te zoeken of om nieuwe informatie te genereren. Aan de hand van een query kan een AI bijvoorbeeld zelf een schilderij genereren, door middel van deze vector-overeenkomsten.
Dat we vergelijkbare foto’s en afbeeldingen konden vinden uit een andere afbeelding als input is niet nieuw; Google doet dit al een tijdje. Wat wel nieuw is, is dat het in ElasticSearch te gebruiken is voor alle developers. De belofte is dat als je een getraind model aanlevert, de integratie van vector search, AI en Elasticsearch een stuk dichterbij komt.
Dit soort modellen zijn te vinden op bijvoorbeeld https://huggingface.co; echt het bekijken waard!
Wil jij ook jezelf on the job blijven ontwikkelen?
Kijk dan bij onze openstaande vacatures:
Universal Profiling
Voor veel softwareontwikkelaars is profiling waarschijnlijk een bekende term. Het gaat bij profilen om uitvinden welke functies van jouw software een grote belasting op het totale product vormen. Tegenwoordig wordt wat minder aandacht besteed aan de performance en efficiëntie van software, omdat we systemen hebben die ruimschoots voldoende resources hebben om performant onze software te draaien. Elke micro-optimalisatie in je software heeft dus niet extreem veel effect, dus profilers komen vaak pas om de hoek kijken als er echte performanceproblemen zijn. Echter, in de nabije toekomst wordt het ineens weer relevant om vanuit de basis je software te optimaliseren voor performance en efficiëntie. Daarmee worden goede profiling-tools ook weer ontzettend relevant. Waarom?
Steeds meer bedrijven gaan hun software in de cloud draaien, en dat brengt bepaalde afwegingen met zich mee. Voorbeelden daarvan zijn: ga ik mijn software draaien in een virtuele machine die ik zelf manage, of draai ik mijn software in een omgeving die wordt gemanaged door de Cloud-provider? Voor een virtuele machine die voortdurend aanstaat betaalt de gebruiker voor de tijd dat die ingeschakeld is (24/7), voor een managed omgeving betaalt de gebruiker voor de daadwerkelijke belasting van de software op de omgeving (hoeveel CPU/RAM/etc. of daadwerkelijke tijd). Deze managed omgeving wordt steeds interessanter, men heeft namelijk geen overhead meer van het onderhouden van hun eigen omgevingen. Het is dus super relevant dat software zo efficiënt mogelijk draait op deze managed omgevingen, want elke CPU cycle kost geld!
Elastic heeft met Universal Profiling een tool gebouwd die men op een systeem kan installeren, en die onder water de belasting van élke functie op het systeem bijhoudt. Van elke regel code is dus te achterhalen wat de belasting is op het systeem, en dús de kosten van die regel code. Dat gaat zelfs zo ver dat in pull requests gevisualiseerd kan worden wat de kosten zijn die een regel code teweeg brengt, in dollars per maand.
Naarmate meer software naar de cloud migreert, krijgen developers te maken met continue afwegingen tussen verschillende opties om de software te runnen. Managed, unmanaged of serverless, welke kosten komen daarbij kijken, welke optie werkt het beste voor de business en de klant, noem maar op.
Universal Profiling van Elastic helpt ontwikkelaars met het terugbrengen van de lopende kosten van hun softwareoplossing. Wie wil dat nu niet?
Waarom Elasticsearch?
Was Elasticsearch niet voornamelijk een zoekdatabase met JSON-documenten? Ja dat klopt! Maar stel dat je heel uitgebreid gaat filosoferen over wat zoeken precies is, en wat voor patronen te herkennen zijn in gigantische bakken aan data, dan kom je vanzelf tot allerlei toepassingen voor het begrip zoeken.
Hoe kunnen we intelligentie halen uit data? Hoe kunnen we onze beveiliging verbeteren, simpelweg door te zoekenen patronen te herkennen? Hoe kunnen we operationele kosten van software terugbrengen door te zoeken?
Elastic is in beginsel een zoekdatabase, maar ontwikkelt allerlei tools om meer intelligentie uit de data te halen. Dat is tegelijk ook hun verdienmodel, want voor deze tools moet je uiteraard betalen. Dat neemt niet weg dat deze ontwikkelingen super interessant zijn en developers steeds meer handvatten geven om waarde te creeëren uit allerlei bedrijfs- en systeemdata.
Het Talent & Expertise programma
Carthago’s talent & expertise programma zorgt er voor dat jij je kan blijven ontwikkelen tijdens je werkzaamheden. Op deze manier sta je nooit stil en wordt je elke dag nog beter!