Når man arbeider med store datasett, er det viktig å bruke kraftige verktøy for å kunne hente ut meningsfull innsikt og analysere informasjonen på en effektiv måte. Et av de mest effektive verktøyene for dette formålet er Elastic Stack, som kombinerer Elasticsearch, Logstash, og Kibana for å håndtere, transformere og visualisere data i sanntid. Denne artikkelen tar deg gjennom prosessen med å sette opp et datastrøm, hente data fra Rennes trafikkdata, og utforske dem i Kibana.
For å følge med i denne veiledningen, må du ha en fungerende Elastic-deployment med Elasticsearch og Kibana. Hvis du ikke har satt opp en Elastic Stack-installasjon ennå, kan du følge de nødvendige stegene i kapittel 1, der vi viser hvordan du setter opp Elastic Stack på Elastic Cloud. Sørg også for at du har en aktiv Logstash-instans, som er nødvendig for å hente og transformere data. Hvis du trenger hjelp med Logstash-oppsett, kan du referere til oppskriften i kapittel 5.
I denne artikkelen vil vi jobbe med et datasett som vi allerede har blitt kjent med: Rennes Trafikkdata. Tidligere i kapittel 5 opprettet vi en tidsseriedatastrøm (TSDS) og brukte Logstash for å hente, transformere og sende sanntids trafikkdata til Elasticsearch. I denne artikkelen skal vi opprette en ny datastrøm kalt metrics-rennes_traffic-raw, som skiller seg fra TSDS ved at den lar oss utforske avanserte funksjoner som Elasticsearch Query Language (ES|QL), runtime-felter og andre funksjoner som ikke støttes i TSDS.
For å sette opp datastrømmen, følg disse trinnene:
-
Åpne Kibana og gå til "Management | Dev Tools", og kjør de nødvendige kommandoene for å forberede den nye datastrømmen
metrics-rennes_traffic-raw. Dette vil sette opp index lifecycle policy, index mapping, index settings og index template. -
Når du har konfigurert nødvendige innstillinger for datastrømmen i Kibana, gå til Logstash-serveren og opprett en Logstash-konfigurasjonsfil som vil sende trafikkdataene til Elasticsearch. Hvis du er usikker på hvor konfigurasjonsfilene befinner seg, kan du finne informasjon om dette i kapittel 5.
-
Når konfigurasjonen er klar, må du sørge for at Logstash er koblet til Elastic-deploymenten din. Deretter kan du starte Logstash på nytt for å aktivere oppsettet.
Når du har konfigurert Logstash, kan du begynne å utforske dataene i Kibana ved å opprette en "data view" for datastrømmen. En "data view" er en ny betegnelse for det som tidligere ble kalt en "index pattern". Dette konseptet hjelper Kibana med å finne dataene i Elasticsearch og gjøre dem tilgjengelige for analyse.
For å opprette en ny data view i Kibana, naviger til "Kibana | Analytics | Discover" og velg "Create a data view". Gi data viewen et navn, for eksempel metrics-rennes_traffic-raw, og koble den til den relevante datastrømmen. Når data viewen er opprettet, kan du begynne å utforske dataene.
I Kibana Discover-panel vil du kunne se de tilgjengelige feltene i datasettet. Hvert felt har et ikon som viser hvilken datatype det tilhører (for eksempel tekst, numerisk, geografisk, dato, etc.). Du kan begynne å analysere spesifikke felt, for eksempel average_vehicle_speed, og utforske de vanligste verdiene og fordelingen for dette feltet.
En praktisk funksjon i Kibana er muligheten til å visualisere data i et histogram. Dette kan være nyttig når du ønsker å se hvordan dataene fordeler seg over tid. I vårt tilfelle kan du analysere hastigheten på kjøretøyene ved å bruke et histogram som viser gjennomsnittlig kjøretøyhastighet på forskjellige tidspunkter. For eksempel kan du se at de fleste trafikkdataene viser en gjennomsnittshastighet på 40 km/t.
Når du har valgt et bestemt felt som du ønsker å analysere, kan du bruke distribusjonsverktøyene for å få en oversikt over hvordan verdiene er fordelt i datasettet. Dette kan være spesielt nyttig når du arbeider med numeriske verdier eller datotidspunkter, og ønsker å forstå hvordan verdiene sprer seg over tid.
I tillegg til de grunnleggende analysene i Discover, kan Kibana 8.1 og nyere versjoner tilby maskinlæringsegenskaper som "Field Statistics", som gir deg en rask oversikt over statistikken for et spesifikt felt, inkludert dets toppverdier og kardinalitet. Dette kan være svært nyttig når du jobber med store datamengder og ønsker en rask analyse av hvordan dataene fordeler seg.
For mer avansert analyse kan du bruke Elasticsearch Query Language (ES|QL) til å lage komplekse spørringer som kan hente ut spesifik informasjon fra datasettet. Dette kan være en nyttig ferdighet når du jobber med store datasett og ønsker å utføre dypere analyser.
Det er også viktig å forstå hvordan Kibana gir deg muligheten til å tilpasse og manipulere feltene i datasettet. Ved å bruke runtime-felter kan du lage nye felter basert på eksisterende data, noe som kan være svært nyttig for spesifikke analyser og visualiseringer.
I tillegg til de tekniske aspektene er det viktig å huske på at arbeid med Elastic Stack og Kibana krever en systematisk tilnærming til datainnsamling, prosessering og visualisering. Hver del av prosessen, fra opprettelsen av datastrømmen til selve analysen, krever presisjon og god forståelse av de verktøyene du bruker. For å få mest mulig ut av verktøyene, er det essensielt å forstå hvordan Elastic Stack fungerer sammen og hvordan du kan bruke Kibana til å skape kraftige visualiseringer og innsikter.
Hvordan lage visuelle arbeidsflater for trafikkdata i Canvas
Canvas gir brukeren muligheten til å lage tilpassede visuelle arbeidsflater ved å bruke forskjellige typer elementer som kan visualisere data på en effektiv og informativ måte. En vanlig brukssituasjon for Canvas er å vise sanntidsdata om trafikkbelastning, hastigheter og andre relevante trafikkmålinger. For å illustrere prosessen kan vi bruke et konkret eksempel, hvor dataene er hentet fra Elasticsearch ved hjelp av SQL-spørringer, og hvordan vi kan bygge opp et visuelt arbeidsområde for å analysere trafikkstatus og relaterte metrikker.
Først lager vi et diagram for å visualisere trafikkbelastningen over tid. Ved å bruke spørringen:
kan vi hente data om trafikkbelastning i forskjellige tidsperioder. Når dataene er lastet inn, kan vi endre diagrammets visuelle innstillinger ved å navigere til Display-fanen. Her kan vi sette X-aksen til timeverdier og Y-aksen til lokasjoner. Fargen på diagrammet kan endres til en grønn nyanse for å gi et visuelt preg som er lett å følge. Videre kan vi justere diagrammets opasitet og legge til en tittel, som for eksempel "TRAFFIC JAM OVER TIME", for å gi kontekst til hva dataene representerer.
Neste trinn involverer å bruke et bilde for å visualisere den totale trafikkbelastningen. Dette oppnås ved å klone tekstelementet og endre det til "TOTAL TRAFFIC JAM", og deretter legge til et bilde ved hjelp av funksjonen "Image repeat". For å vise hvor mange steder som er rammet av trafikkbelastning, kan vi bruke en annen Elasticsearch SQL-spørring:
Bildet kan tilpasses ved å sette størrelsen på bildene og antallet repetisjoner for å sikre at det vises riktig i diagrammet.
Deretter kan vi bruke et stolpediagram for å vise gjennomsnittlig trafikkhastighet over tid. Ved å bruke spørringen:
kan vi visualisere hvordan hastigheten varierer i løpet av dagen. Diagrammet kan tilpasses ved å endre fargen, aksenes synlighet og containerens opasitet for å gjøre det mer oversiktlig.
I tillegg til disse elementene kan vi bruke metriske diagrammer for å gi et sammendrag av trafikkmålinger. For eksempel kan vi bruke en metrik til å vise gjennomsnittlig kjøretøyhastighet:
og en annen metrik for å vise antall steder hvor kjøretøyene kjører raskere enn makshastigheten:
Ved å bruke flere metrikker som dette kan vi raskt få innsikt i ulike trafikkforhold.
For å gjøre det lettere å analysere dataene over tid, kan vi legge til et tidsfilter som gir brukeren muligheten til å justere hvilke tidsintervall dataene skal vises for. Dette kan gi en mer dynamisk analyse, spesielt når det gjelder sanntidsdata og endringer i trafikkmønstre.
Det er også viktig å merke seg at Canvas gir mulighet for å bruke både lagrede paneler og elementer som kan opprettes på stedet. Dette betyr at du kan integrere eksisterende visualiseringer fra Kibana Lens, maskinlæring, kart, og andre datakilder direkte i arbeidsflaten.
En annen funksjon som er verdt å fremheve, er muligheten for å lage flerdimensjonale arbeidsflater. Ved å kombinere forskjellige typer elementer som diagrammer, bilder og metrikker, kan man lage en kompleks og dynamisk visualisering som gir et detaljert bilde av trafikkforholdene. Canvas gir dermed et fleksibelt verktøy for å utforske og presentere store mengder data på en visuell og forståelig måte.
Til slutt bør leseren være klar over at visualiseringer laget i Canvas kan deles med andre brukere, og Canvas støtter også lagring og gjenbruk av elementer i et felles bibliotek. Dette gjør det mulig å bygge opp standardiserte arbeidsflater som kan brukes i forskjellige sammenhenger, noe som er spesielt nyttig i teamarbeid og organisasjonsmiljøer der flere personer trenger tilgang til samme sett med data.
Hvordan bygge effektive RAG-applikasjoner: En dyptgående tilnærming til minne- og databehandlingsteknikker
RAG (Retriever-Augmented Generation) er en tilnærming som bruker både informasjonsgjenfinning og generativ kunstig intelligens for å gi kontekstuelle og relevante svar i samtaleapplikasjoner. Gjennom en sammensatt kjede av teknologier og prosesser, er RAG i stand til å skape chatbots og andre applikasjoner som gir informasjon fra en rekke datakilder, samtidig som de genererer nøyaktige og relevante svar.
Kjernen i RAG-applikasjoner ligger i integrasjonen mellom informasjonsgjenfinning, som Elasticsearch, og den generative modellen, som et stort språkmodell (LLM). Prosessen begynner med at en samtalehistorikk kombineres med den siste brukerforespørselen for å danne en enhetlig spørsmålsprompt. Denne prompten fungerer som grunnlaget for å hente kontekstuell informasjon fra Elasticsearch. Deretter blir informasjonen brukt til å generere et svar via LLM, som kan tilby et mer dyptgående og sammenhengende svar enn en enkel spørsmålsbesvarelse.
Et viktig aspekt ved å bygge slike applikasjoner er hvordan man håndterer og administrerer samtalehistorikk. For å sikre at brukerne får en kontinuerlig opplevelse, er det viktig å lagre samtalehistorikken på en varig måte, som kan brukes både for analyser og for å tilby en mer personlig opplevelse ved senere interaksjoner. Ved hjelp av LangChain-rammeverket kan chatthistorikk lagres i dedikerte indekser i Elasticsearch, noe som gir både fleksibilitet og kraft i håndteringen av dataene.
En annen utfordring som ofte oppstår i RAG-applikasjoner er hvordan man håndterer fragmentering av informasjon. Når store datamengder deles opp i mindre deler, kan det hende at hver del ikke inneholder nok kontekst til å gi en helhetlig forståelse. For å løse dette problemet, kan det være nødvendig å hente den overordnede dokumentasjonen som binder sammen de mindre fragmentene. Med introduksjonen av funksjonen for "nested k-NN search" i Elasticsearch 8.11, kan man utføre effektive søk på tette vektorer samtidig som man beholder informasjonen i en enkelt dokumentstruktur, noe som forbedrer både hastigheten og nøyaktigheten av søkene.
LangChain gir flere teknikker for å håndtere komplekse kjeder i RAG-applikasjoner. En enkel kjede kan være tilstrekkelig for enkle oppgaver med smale datakilder, men når man håndterer flere datakilder eller trenger flere runder med informasjonsinnhenting og generering, kan mer avanserte kjedesystemer være nødvendige. Eksempler på slike systemer inkluderer kjeder som tar flere steg med informasjonshenting eller kjeder som kombinerer flere generasjonsprosesser, som sammendrag, oversettelse og tekstgenerering.
Cache-håndtering er også et kritisk element i RAG-applikasjoner. Når man jobber med generative språkmodeller, kan kostnadene og latensene knyttet til API-kall til LLM-er være betydelige. Ved å bruke Elasticsearch både som en dataoppbevaringslag og som en cache-løsning, kan man redusere både kostnader og ventetid. Elasticsearch tilbyr flere mekanismer for å cache resultater, og LangChain integrerer sømløst med disse teknikkene for å forbedre ytelsen i applikasjonen.
For å få et optimalt resultat i RAG-applikasjoner, er det nødvendig å forstå samspillet mellom disse ulike komponentene og hvordan de kan brukes for å bygge en mer effektiv og skalerbar løsning. Mens noen grunnleggende teknikker, som hybrid søk og promptbehandling, kan være tilstrekkelige for enkle bruksområder, krever mer komplekse applikasjoner en grundigere forståelse og mer sofistikerte verktøy for kjedehåndtering og databehandling.
Endtext
Hvordan vurdere varianse og feil i stokastiske metoder for matriseinversjon
Når bør du stole på AI i utvikling og når skal du stole på menneskelig ferdighet?
Hvordan planlegge og gjennomføre en effektiv migrasjon til Azure SQL?
Hvordan håndtere plattformspesifikke filnavn i Rust: En praktisk guide for utviklere

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский