Det här blogginlägget är skrivet tillsammans med Tuana Çelik från deepset.
Företagssökning är en kritisk komponent för organisatorisk effektivitet genom dokumentdigitalisering och kunskapshantering. Företagssökning omfattar lagring av dokument som digitala filer, indexering av dokument för sökning och tillhandahållande av relevanta resultat baserat på användarfrågor. Med tillkomsten av stora språkmodeller (LLM) kan vi implementera samtalsupplevelser för att ge användarna resultaten. Men vi måste se till att LLM:erna begränsar svaren på företagsdata och därigenom mildrar modellhallucinationer.
I det här inlägget visar vi hur man bygger en end-to-end generativ AI-applikation för företagssökning med Retrieval Augmented Generation (RAG) genom att använda Haystack-pipelines och Falcon-40b-instruktionsmodellen från Amazon SageMaker JumpStart och Amazon OpenSearch Service. Källkoden för exemplet som visas i det här inlägget är tillgänglig i GitHub repository
Lösningsöversikt
För att begränsa de generativa AI-applikationssvaren till enbart företagsdata måste vi använda en teknik som kallas Retrieval Augmented Generation (RAG). En applikation som använder RAG-metoden hämtar information som är mest relevant för användarens begäran från företagets kunskapsbas eller innehåll, paketerar den som sammanhang tillsammans med användarens begäran som en uppmaning och skickar den sedan till LLM för att få ett svar. LLM har begränsningar kring det maximala antalet ord för inmatningsuppmaningarna, så att välja rätt passager bland tusentals eller miljontals dokument i företaget har en direkt inverkan på LLM:s noggrannhet.
RAG-tekniken har blivit allt viktigare i företagssökning. I det här inlägget visar vi ett arbetsflöde som drar fördel av SageMaker JumpStart för att distribuera en Falcon-40b-instruktionsmodell och använder Haystack för att designa och köra en pipeline för att besvara frågor med utökad hämtning. Det sista arbetsflödet för hämtningsförstärkning omfattar följande steg på hög nivå:
- Användarfrågan används för en retrieverkomponent, som gör en vektorsökning, för att hämta det mest relevanta sammanhanget från vår databas.
- Detta sammanhang är inbäddat i en prompt som är utformad för att instruera en LLM att generera ett svar endast från det angivna sammanhanget.
- LLM genererar ett svar på den ursprungliga frågan genom att endast beakta kontexten som är inbäddad i prompten den fick.
SageMaker JumpStart
SageMaker JumpStart fungerar som ett modellnav som kapslar in ett brett utbud av djupinlärningsmodeller för användningsfall för text, vision, ljud och inbäddning. Med över 500 modeller omfattar dess modellnav både publika och proprietära modeller från AWS partners som AI21, Stability AI, Cohere och LightOn. Det är också värd för grundmodeller enbart utvecklade av Amazon, som AlexaTM. Vissa av modellerna erbjuder möjligheter för dig att finjustera dem med dina egna data. SageMaker JumpStart tillhandahåller också lösningsmallar som ställer in infrastruktur för vanliga användningsfall och körbara exempel anteckningsböcker för maskininlärning (ML) med SageMaker.
Höstack
Höstack är ett ramverk med öppen källkod från deepset som tillåter utvecklare att orkestrera LLM-applikationer som består av olika komponenter som modeller, vektor-DB:er, filkonverterare och otaliga andra moduler. Höstack ger rörledningar och Agenter, två kraftfulla strukturer för att designa LLM-applikationer för olika användningsfall inklusive sökning, frågesvar och konversations-AI. Med stort fokus på toppmoderna hämtningsmetoder och solida utvärderingsmått ger den dig allt du behöver för att skicka en pålitlig, pålitlig ansökan. Du kan serialisera pipelines till YAML filer, exponera dem via en REST API, och skala dem flexibelt med dina arbetsbelastningar, vilket gör det enkelt att flytta din applikation från ett prototypskede till produktion.
Amazon OpenSearch
OpenSearch Service är en helt hanterad tjänst som gör det enkelt att distribuera, skala och använda OpenSearch i AWS-molnet. OpenSearch är en skalbar, flexibel och utbyggbar mjukvarusvit med öppen källkod för sökning, analys, säkerhetsövervakning och observerbarhetsapplikationer, licensierad under Apache 2.0-licensen.
Under de senaste åren har ML-tekniker blivit allt populärare för att förbättra sökningen. Bland dem är användningen av inbäddningsmodeller, en typ av modell som kan koda en stor mängd data till ett n-dimensionellt utrymme där varje enhet är kodad till en vektor, en datapunkt i det utrymmet, och organiserad så att liknande enheter är närmare varandra. En vektordatabas tillhandahåller effektiv vektorlikhetssökning genom att tillhandahålla specialiserade index som k-NN-index.
Med vektordatabasfunktionerna i OpenSearch Service kan du implementera semantisk sökning, RAG med LLM, rekommendationsmotorer och sökning i multimedia. I det här inlägget använder vi RAG för att göra det möjligt för oss att komplettera generativa LLM med en extern kunskapsbas som vanligtvis är byggd med hjälp av en vektordatabas hydratiserad med vektorkodade kunskapsartiklar.
Applikationsöversikt
Följande diagram visar strukturen för den slutliga ansökan.
I den här applikationen använder vi Haystack Indexing Pipeline för att hantera uppladdade dokument och indexera dokument och Haystack Query Pipeline för att utföra kunskapshämtning från indexerade dokument.
Haystack Indexing Pipeline inkluderar följande steg på hög nivå:
- Ladda upp ett dokument.
- initialisera
DocumentStore
och indexera dokument.
Vi använder OpenSearch som vår DocumentStore och en höstack indexeringspipeline för att förbehandla och indexera våra filer till OpenSearch. Höstack Filkonverterare och Förprocessor låter dig rengöra och förbereda dina råfiler för att vara i en form och ett format som din pipeline för naturlig språkbehandling (NLP) och språkmodell kan hantera. Indexeringspipelinen vi har använt här använder också sentence-transformers/all-MiniLM-L12-v2
att skapa inbäddningar för varje dokument, som vi använder för effektiv hämtning.
Haystack Query Pipeline innehåller följande steg på hög nivå:
- Vi skickar en förfrågan till RAG pipeline.
- An EmbeddingRetriever komponenten fungerar som ett filter som hämtar de mest relevanta
top_k
dokument från våra indexerade dokument i OpenSearch. Vi använder vårt val av inbäddningsmodell för att bädda in både frågan och dokumenten (vid indexering) för att uppnå detta. - De hämtade dokumenten är inbäddade i vår prompt till Falcon-40b-instruct-modellen.
- LLM återkommer med ett svar som är baserat på de hämtade dokumenten.
För modelldistribution använder vi SageMaker JumpStart, som förenklar implementeringen av modeller genom en enkel knapptryckning. Även om vi har använt och testat Falcon-40b-instruct för det här exemplet, kan du använda valfri Hugging Face-modell som finns på SageMaker.
Den slutliga lösningen finns tillgänglig på höstack-salviemakare arkivet och använder OpenSearch-webbplatsen och dokumentationen (för OpenSearch 2.7) som vår exempeldata för att utföra hämtning av utökade frågor.
Förutsättningar
Det första vi ska göra innan vi kan använda några AWS-tjänster är att se till att vi har registrerat oss för och skapat ett AWS-konto. Då bör du skapa en administrativ användare och grupp. För instruktioner om båda stegen, se Ställ in Amazon SageMaker-förutsättningar.
För att kunna använda Haystack måste du installera farm-haystack
paket med nödvändiga beroenden. För att uppnå detta, använd requirements.txt
fil i GitHub repository genom att springa pip install requirements.txt
.
Indexera dokument till OpenSearch
Haystack erbjuder ett antal kopplingar till databaser, som kallas DocumentStores
. För detta RAG-arbetsflöde använder vi OpenSearchDocumentStore
. Exemplet Repository inkluderar en indexeringspipeline och AWS molnformation mall att ställa in en OpenSearchDocumentStore
med dokument som genomsökts från OpenSearch-webbplatsen och dokumentationssidor.
Ofta, för att få en NLP-applikation att fungera för produktionsanvändningsfall, måste vi ofta tänka på databeredning och rengöring. Detta är täckt med Höstacksindexerande pipelines, som låter dig designa dina egna dataförberedande steg, som i slutändan skriver dina dokument till den databas du väljer.
En indexeringspipeline kan också innehålla ett steg för att skapa inbäddningar för dina dokument. Detta är mycket viktigt för hämtningssteget. I vårt exempel använder vi sats-transformatorer/all-MiniLM-L12-v2 som vår inbäddningsmodell. Denna modell används för att skapa inbäddningar för alla våra indexerade dokument, men även användarens fråga vid frågetillfället.
För att indexera dokument i OpenSearchDocumentStore
ger vi två alternativ med detaljerade instruktioner i README av exempelförvaret. Här går vi igenom stegen för att indexera till en OpenSearch-tjänst som distribueras på AWS.
Starta en OpenSearch-tjänst
Använd den medföljande CloudFormation-mall för att ställa in en OpenSearch-tjänst på AWS. Genom att köra följande kommando får du en tom OpenSearch-tjänst. Du kan sedan antingen välja att indexera de exempeldata vi har tillhandahållit eller använda dina egna data, som du kan rensa och förbearbeta med hjälp av Höstack Indexing Pipeline. Observera att detta skapar en instans som är öppen för internet, vilket inte rekommenderas för produktionsanvändning.
Vänta cirka 30 minuter för stackstarten att slutföras. Du kan kontrollera dess framsteg på AWS CloudFormation-konsolen genom att navigera till Stacks sida och letar efter stacken som heter HaystackOpensearch
.
Indexera dokument till OpenSearch
Nu när vi har en öppen OpenSearch-tjänst kan vi använda klassen OpenSearchDocumentStore för att ansluta till den och skriva våra dokument till den.
För att få värdnamnet för OpenSearch, kör följande kommando:
Exportera först följande:
Sedan kan du använda opensearch_indexing_pipeline.py
skript för att förbearbeta och indexera de tillhandahållna demodata.
Om du vill använda din egen data, ändra indexeringspipelinen i opensearch_indexing_pipeline.py
att inkludera FileConverter och Förprocessor installationssteg du behöver.
Implementera pipelinen för att svara på frågor för hämtning
Nu när vi har indexerat data i OpenSearch kan vi svara på frågor på dessa dokument. För denna RAG-pipeline använder vi Falcon-40b-instruct-modellen som vi har distribuerat på SageMaker JumpStart.
Du har också möjlighet att distribuera modellen programmatiskt från en Jupyter-anteckningsbok. För instruktioner, se GitHub repo.
- Sök efter Falcon-40b-instruct-modellen på SageMaker JumpStart.
- Distribuera din modell på SageMaker JumpStart och notera slutpunktens namn.
- Exportera följande värden:
- Körning
python rag_pipeline.py
.
Detta startar ett kommandoradsverktyg som väntar på en användares fråga. Låt oss till exempel fråga "Hur kan jag installera OpenSearch-klient?"
Detta resultat uppnås eftersom vi har definierat vår prompt i Haystack PromptMall att vara följande:
Ytterligare anpassningar
Du kan göra ytterligare anpassningar av olika element i lösningen, till exempel följande:
- Datan – Vi har tillhandahållit OpenSearch dokumentation och webbplats data som exempeldata. Kom ihåg att ändra
opensearch_indexing_pipeline.py
skript som passar dina behov om du väljer att använda din egen data. - Modellen – I det här exemplet har vi använt Falcon-40b-instruct-modellen. Du är fri att distribuera och använda vilken annan Hugging Face-modell som helst på SageMaker. Observera att om du ändrar en modell kommer det troligtvis att innebära att du bör anpassa din prompt till något den är designad för att hantera.
- uppmaningen – För det här inlägget skapade vi vårt eget
PromptTemplate
som instruerar modellen att svara på frågor baserat på det angivna sammanhanget och svara "Jag vet inte" om sammanhanget inte innehåller relevant information. Du kan ändra denna prompt för att experimentera med olika prompter med Falcon-40b-instruct. Du kan också helt enkelt hämta några av våra uppmaningar från PromptHub. - Inbäddningsmodellen – För hämtningssteget använder vi en lätt inbäddningsmodell: sats-transformatorer/all-MiniLM-L12-v2. Men du kan också ändra detta efter dina behov. Kom ihåg att ändra de förväntade inbäddningsdimensionerna i din
DocumentStore
följaktligen. - Antalet hämtade dokument – Du kan också välja att leka med antalet dokument du frågar
EmbeddingRetriever
att hämta för varje fråga. I vår inställning är detta inställt på top_k=5. Du kan experimentera med att ändra denna siffra för att se om att ge mer sammanhang förbättrar noggrannheten i dina resultat.
Produktionsberedskap
Den föreslagna lösningen i det här inlägget kan påskynda tiden till värde för projektutvecklingsprocessen. Du kan bygga ett projekt som är lätt att skala med säkerhets- och integritetsmiljön på AWS Cloud.
För säkerhet och integritet tillhandahåller OpenSearch Service dataskydd med identitets- och åtkomsthantering och förebyggande av förvirrad proxy över flera tjänster. Du kan använda finkornig användaråtkomstkontroll så att användaren endast kan komma åt de data som de har behörighet att komma åt. Dessutom tillhandahåller SageMaker konfigurerbara säkerhetsinställningar för åtkomstkontroll, dataskyddoch loggning och övervakning. Du kan skydda dina data i vila och under transport med AWS nyckelhanteringstjänst (AWS KMS)-tangenter. Du kan också spåra loggen för SageMaker-modellinstallation eller slutpunktsåtkomst med hjälp av amazoncloudwatch. För mer information, se Övervaka Amazon SageMaker med Amazon CloudWatch.
För den höga skalbarheten på OpenSearch Service kan du justera den med storleksanpassa dina OpenSearch Service-domäner och anställa operativa bästa praxis. Du kan också dra fördel av att automatiskt skala din SageMaker-slutpunkt – du kan automatiskt skala SageMaker-modeller för att justera ändpunkten både när trafiken ökar eller resurserna inte används.
Städa upp
För att spara kostnader, ta bort alla resurser du distribuerade som en del av det här inlägget. Om du startade CloudFormation-stacken kan du ta bort den via AWS CloudFormation-konsolen. På samma sätt kan du ta bort alla SageMaker-slutpunkter som du kan ha skapat via SageMaker-konsolen.
Slutsats
I det här inlägget visade vi upp hur man bygger en end-to-end generativ AI-applikation för företagssökning med RAG genom att använda Haystack-pipelines och Falcon-40b-instruktionsmodellen från SageMaker JumpStart och OpenSearch Service. RAG-metoden är kritisk i företagssökning eftersom den säkerställer att de svar som genereras är inom domänen och därför mildrar hallucinationer. Genom att använda Haystack-pipelines kan vi orkestrera LLM-applikationer som består av olika komponenter som modeller och vektordatabaser. SageMaker JumpStart ger oss en ettklickslösning för att distribuera LLM, och vi använde OpenSearch Service som vektordatabas för våra indexerade data. Du kan börja experimentera och bygga RAG proof of concept för dina företagsgenerativa AI-applikationer, med hjälp av stegen som beskrivs i det här inlägget och källkoden som finns tillgänglig i GitHub repository.
Om författarna
Tuana Celik är Lead Developer Advocate på deepset, där hon fokuserar på open source-gemenskapen för Haystack. Hon leder funktionen utvecklarrelationer och talar regelbundet på evenemang om NLP och skapar läromedel för samhället.
Roy Allela är Senior AI/ML Specialist Solutions Architect på AWS baserad i München, Tyskland. Roy hjälper AWS-kunder – från små startups till stora företag – att träna och distribuera stora språkmodeller effektivt på AWS. Roy brinner för problem med beräkningsoptimering och att förbättra prestanda för AI-arbetsbelastningar.
Mia Chang är en ML Specialist Solutions Architect för Amazon Web Services. Hon arbetar med kunder i EMEA och delar bästa praxis för att köra AI/ML-arbetsbelastningar i molnet med sin bakgrund inom tillämpad matematik, datavetenskap och AI/ML. Hon fokuserar på NLP-specifika arbetsbelastningar och delar med sig av sin erfarenhet som konferenstalare och bokförfattare. På fritiden tycker hon om att vandra, brädspel och brygga kaffe.
Inamn Syed är en Startup Solutions Architect på AWS, med stort fokus på att hjälpa B2B- och SaaS-startups att skala och uppnå tillväxt. Han har en djup passion för serverlösa arkitekturer och AI/ML. På sin fritid njuter Inaam av kvalitetsstunder med sin familj och ägnar sig åt sin kärlek till cykling och badminton.
David Tippett är Senior Developer Advocate som arbetar med OpenSearch med öppen källkod på AWS. Hans arbete involverar alla områden av OpenSearch från sökning och relevans till observerbarhet och säkerhetsanalys.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- PlatoData.Network Vertical Generative Ai. Styrka dig själv. Tillgång här.
- PlatoAiStream. Web3 Intelligence. Kunskap förstärkt. Tillgång här.
- Platoesg. Fordon / elbilar, Kol, CleanTech, Energi, Miljö, Sol, Avfallshantering. Tillgång här.
- PlatoHealth. Biotech och kliniska prövningar Intelligence. Tillgång här.
- ChartPrime. Höj ditt handelsspel med ChartPrime. Tillgång här.
- BlockOffsets. Modernisera miljökompensation ägande. Tillgång här.
- Källa: https://aws.amazon.com/blogs/machine-learning/build-production-ready-generative-ai-applications-for-enterprise-search-using-haystack-pipelines-and-amazon-sagemaker-jumpstart-with-llms/
- : har
- :är
- :inte
- :var
- $UPP
- 100
- 12
- 13
- 30
- 500
- 7
- 8
- a
- Able
- Om oss
- accelerera
- tillgång
- åstadkomma
- i enlighet med detta
- Konto
- noggrannhet
- Uppnå
- uppnås
- uppnå
- handlingar
- anpassa
- Annat
- Dessutom
- administrativa
- Fördel
- första advent
- förespråkare
- AI
- AI / ML
- Alla
- tillåter
- tillåter
- längs
- också
- Även
- amason
- Amazon SageMaker
- Amazon SageMaker JumpStart
- Amazon Web Services
- bland
- an
- analytics
- och
- svara
- vilken som helst
- Apache
- Ansökan
- tillämpningar
- tillämpas
- tillvägagångssätt
- cirka
- ÄR
- områden
- runt
- array
- Konst
- artiklar
- AS
- bistå
- At
- audio
- augmented
- Författaren
- tillstånd
- bil
- tillgänglig
- AWS
- AWS molnformation
- B2B
- bakgrund
- bas
- baserat
- BE
- därför att
- blir
- innan
- Där vi får lov att vara utan att konstant prestera,
- nedan
- BÄST
- bästa praxis
- Stor
- Blogg
- ombord
- Brädspel
- kropp
- boken
- båda
- bred
- SLUTRESULTAT
- Byggnad
- byggt
- buntar
- men
- Knappen
- by
- kallas
- KAN
- kapacitet
- fall
- byta
- byte
- ta
- val
- Välja
- välja
- valde
- klass
- Rengöring
- närmare
- cloud
- koda
- Kaffe
- Gemensam
- samfundet
- företag
- Komplement
- fullborda
- komponent
- komponenter
- innefattar
- dator
- Datavetenskap
- begrepp
- Konferens
- förväxlas
- Kontakta
- med tanke på
- Konsol
- innehöll
- innehåll
- sammanhang
- kontroll
- konversera
- konversations AI
- Kostar
- omfattas
- Täcker
- skapa
- skapas
- skapar
- kritisk
- Kunder
- datum
- Förberedelse av data
- dataskydd
- Databas
- databaser
- DBS
- behandla
- djup
- djupt lärande
- definierade
- demo
- beroenden
- distribuera
- utplacerade
- utplacera
- utplacering
- Designa
- utformade
- design
- detaljerad
- utvecklade
- Utvecklare
- utvecklare
- Utveckling
- olika
- digital
- digitalisering
- dimensioner
- rikta
- do
- dokumentera
- dokumentation
- dokument
- gör
- inte
- donation
- inte
- varje
- lätt
- effektivitet
- effektiv
- effektivt
- antingen
- element
- embed
- inbäddade
- inbäddning
- EMEA
- möjliggöra
- änden
- början till slut
- Slutpunkt
- Motorer
- förbättra
- säkerställa
- säkerställer
- Företag
- enheter
- enhet
- Miljö
- utvärdering
- händelser
- allt
- exempel
- förväntat
- erfarenhet
- Erfarenheter
- experimentera
- export
- extern
- Ansikte
- familj
- Figur
- Fil
- Filer
- filtrera
- slutlig
- Förnamn
- passa
- flexibel
- flexibelt
- Fokus
- fokuserar
- efter
- För
- format
- fundament
- Ramverk
- Fri
- från
- fullständigt
- fungera
- Games
- generera
- genereras
- genererar
- generering
- generativ
- Generativ AI
- Tyskland
- skaffa sig
- ges
- Grupp
- Tillväxt
- hantera
- Har
- har
- he
- hjälper
- här
- här.
- Hög
- högnivå
- höggradigt
- hans
- värdar
- Hur ser din drömresa ut
- How To
- Men
- html
- http
- HTTPS
- Nav
- i
- Identitet
- if
- Inverkan
- genomföra
- med Esport
- förbättra
- in
- innefattar
- innefattar
- Inklusive
- ökat
- alltmer
- index
- indexeras
- index
- informationen
- Infrastruktur
- ingång
- installera
- exempel
- instruktioner
- Internet
- in
- IT
- DESS
- jpg
- Nyckel
- nycklar
- Vet
- kunskap
- Kunskapshantering
- språk
- Large
- lansera
- lanserades
- leda
- Leads
- inlärning
- Licens
- Licensierade
- lättvikt
- tycka om
- sannolikt
- BEGRÄNSA
- begränsningar
- linje
- LLM
- log
- skogsavverkning
- du letar
- älskar
- Maskinen
- maskininlärning
- gjord
- göra
- GÖR
- Framställning
- hantera
- förvaltade
- ledning
- material
- matematik
- maximal
- Maj..
- betyda
- Media
- metoder
- Metrics
- miljoner
- minuter
- förmildrande
- ML
- modell
- modeller
- modifiera
- Moduler
- Ögonblick
- övervakning
- mer
- mest
- flytta
- namn
- Som heter
- Natural
- Naturlig språkbehandling
- navigerande
- Behöver
- behov
- nlp
- anteckningsbok
- antal
- of
- erbjudanden
- Erbjudanden
- on
- endast
- öppet
- öppen källkod
- Programvara med öppen källkod
- driva
- optimering
- Alternativet
- Tillbehör
- or
- organisatoriska
- Organiserad
- ursprungliga
- Övriga
- vår
- skisse
- över
- egen
- paket
- sida
- sidor
- del
- partner
- brinner
- brinner
- Utföra
- prestanda
- rörledning
- plato
- Platon Data Intelligence
- PlatonData
- Spela
- snälla du
- Punkt
- Populära
- Inlägg
- den mäktigaste
- praxis
- beredning
- Förbered
- privatpolicy
- problem
- process
- bearbetning
- Produktion
- Framsteg
- projektet
- korrektur
- föreslagen
- proprietary
- skydda
- skydd
- Prototypen
- ge
- förutsatt
- ger
- tillhandahålla
- ombud
- allmän
- Tryck
- kvalitet
- sökfrågor
- fråga
- frågor
- Raw
- mottagna
- senaste
- Rekommendation
- rekommenderas
- regelbundet
- relationer
- relevans
- relevanta
- pålitlig
- ihåg
- Repository
- begära
- kräver
- Obligatorisk
- Krav
- Resurser
- respons
- svar
- REST
- begränsa
- resultera
- Resultat
- återgår
- Rik
- höger
- roy
- Körning
- rinnande
- SaaS
- sagemaker
- Save
- säga
- skalbarhet
- skalbar
- Skala
- skalning
- Vetenskap
- Sök
- säkerhet
- se
- sända
- sänder
- senior
- Server
- serverar
- service
- Tjänster
- in
- inställningar
- inställning
- Forma
- aktier
- hon
- FARTYG
- skall
- show
- visa
- utställningsmonter
- signerad
- liknande
- Liknande
- Enkelt
- helt enkelt
- Small
- So
- Mjukvara
- enbart
- fast
- lösning
- Lösningar
- några
- något
- Källa
- källkod
- Utrymme
- Högtalare
- talar
- specialist
- specialiserad
- Stabilitet
- stapel
- Etapp
- starta
- start
- Startups
- Steg
- Steg
- misslyckande
- stark
- struktur
- sådana
- svit
- säker
- Ta
- tar
- tekniker
- mallar
- testade
- den där
- Smakämnen
- källan
- Dem
- sedan
- vari
- därför
- Dessa
- de
- sak
- tror
- detta
- tusentals
- Genom
- tid
- till
- tillsammans
- spår
- trafik
- transitering
- trovärdig
- två
- Typ
- typiskt
- Ytterst
- under
- uppladdad
- us
- användning
- Begagnade
- Användare
- användare
- användningar
- med hjälp av
- verktyg
- värde
- Värden
- olika
- via
- syn
- väntar
- we
- webb
- webbservice
- Webbplats
- när
- som
- kommer
- med
- inom
- ord
- Arbete
- arbetsflöde
- arbetssätt
- fungerar
- skulle
- skriva
- jaml
- år
- Om er
- Din
- zephyrnet