CINXE.COM
First on-device Vector Database (aka Semantic Index) for iOS
<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <link rel="pingback" href="https://objectbox.io/wordpress/xmlrpc.php" /> <script type="text/javascript"> document.documentElement.className = 'js'; </script> <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> <!-- This site is optimized with the Yoast SEO plugin v23.7 - https://yoast.com/wordpress/plugins/seo/ --> <title>First on-device Vector Database (aka Semantic Index) for iOS</title> <meta name="description" content="Semantic Index for swift iOS & MacOS apps with fast, private, & sustainable AI features, like on-device RAG, local genAI" /> <link rel="canonical" href="https://objectbox.io/swift-ios-on-device-vector-database-aka-semantic-index/" /> <meta property="og:locale" content="en_US" /> <meta property="og:type" content="article" /> <meta property="og:title" content="First on-device Vector Database (aka Semantic Index) for iOS" /> <meta property="og:description" content="Semantic Index for swift iOS & MacOS apps with fast, private, & sustainable AI features, like on-device RAG, local genAI" /> <meta property="og:url" content="https://objectbox.io/swift-ios-on-device-vector-database-aka-semantic-index/" /> <meta property="og:site_name" content="ObjectBox" /> <meta property="article:publisher" content="https://www.facebook.com/objectboxTeam/" /> <meta property="article:published_time" content="2024-07-24T08:12:58+00:00" /> <meta property="article:modified_time" content="2024-09-10T14:01:25+00:00" /> <meta property="og:image" content="https://objectbox.io/wordpress/wp-content/uploads/2024/07/FirstIoSVectorDatabase-Swift2.jpg" /> <meta property="og:image:width" content="800" /> <meta property="og:image:height" content="463" /> <meta property="og:image:type" content="image/jpeg" /> <meta name="author" content="Uwe" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:creator" content="@objectbox_io" /> <meta name="twitter:site" content="@objectbox_io" /> <meta name="twitter:label1" content="Written by" /> <meta name="twitter:data1" content="Uwe" /> <meta name="twitter:label2" content="Est. reading time" /> <meta name="twitter:data2" content="6 minutes" /> <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"Article","@id":"https://objectbox.io/swift-ios-on-device-vector-database-aka-semantic-index/#article","isPartOf":{"@id":"https://objectbox.io/swift-ios-on-device-vector-database-aka-semantic-index/"},"author":{"name":"Uwe","@id":"https://objectbox.io/#/schema/person/743b5551652ae212361d8f6847dd96ef"},"headline":"First on-device Vector Database (aka Semantic Index) for iOS","datePublished":"2024-07-24T08:12:58+00:00","dateModified":"2024-09-10T14:01:25+00:00","mainEntityOfPage":{"@id":"https://objectbox.io/swift-ios-on-device-vector-database-aka-semantic-index/"},"wordCount":1113,"commentCount":0,"publisher":{"@id":"https://objectbox.io/#organization"},"image":{"@id":"https://objectbox.io/swift-ios-on-device-vector-database-aka-semantic-index/#primaryimage"},"thumbnailUrl":"https://objectbox.io/wordpress/wp-content/uploads/2024/07/FirstIoSVectorDatabase-Swift2.jpg","keywords":["iOS","Mobile Database","Release","vector database"],"articleSection":["AI","Edge AI","Edge Database","Mobile Database","ObjectBox","Swift","vector database"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https://objectbox.io/swift-ios-on-device-vector-database-aka-semantic-index/#respond"]}]},{"@type":"WebPage","@id":"https://objectbox.io/swift-ios-on-device-vector-database-aka-semantic-index/","url":"https://objectbox.io/swift-ios-on-device-vector-database-aka-semantic-index/","name":"First on-device Vector Database (aka Semantic Index) for iOS","isPartOf":{"@id":"https://objectbox.io/#website"},"primaryImageOfPage":{"@id":"https://objectbox.io/swift-ios-on-device-vector-database-aka-semantic-index/#primaryimage"},"image":{"@id":"https://objectbox.io/swift-ios-on-device-vector-database-aka-semantic-index/#primaryimage"},"thumbnailUrl":"https://objectbox.io/wordpress/wp-content/uploads/2024/07/FirstIoSVectorDatabase-Swift2.jpg","datePublished":"2024-07-24T08:12:58+00:00","dateModified":"2024-09-10T14:01:25+00:00","description":"Semantic Index for swift iOS & MacOS apps with fast, private, & sustainable AI features, like on-device RAG, local genAI","breadcrumb":{"@id":"https://objectbox.io/swift-ios-on-device-vector-database-aka-semantic-index/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://objectbox.io/swift-ios-on-device-vector-database-aka-semantic-index/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https://objectbox.io/swift-ios-on-device-vector-database-aka-semantic-index/#primaryimage","url":"https://objectbox.io/wordpress/wp-content/uploads/2024/07/FirstIoSVectorDatabase-Swift2.jpg","contentUrl":"https://objectbox.io/wordpress/wp-content/uploads/2024/07/FirstIoSVectorDatabase-Swift2.jpg","width":800,"height":463},{"@type":"BreadcrumbList","@id":"https://objectbox.io/swift-ios-on-device-vector-database-aka-semantic-index/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"ObjectBox","item":"https://objectbox.io/"},{"@type":"ListItem","position":2,"name":"vector database","item":"https://objectbox.io/category/vector-database/"},{"@type":"ListItem","position":3,"name":"First on-device Vector Database (aka Semantic Index) for iOS"}]},{"@type":"WebSite","@id":"https://objectbox.io/#website","url":"https://objectbox.io/","name":"ObjectBox","description":"Fast on-Device database with vector search for Mobike, IoT & other embedded device","publisher":{"@id":"https://objectbox.io/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://objectbox.io/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https://objectbox.io/#organization","name":"ObjectBox","url":"https://objectbox.io/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://objectbox.io/#/schema/logo/image/","url":"https://objectbox.io/wordpress/wp-content/uploads/2021/06/objectbox-logo.png","contentUrl":"https://objectbox.io/wordpress/wp-content/uploads/2021/06/objectbox-logo.png","width":559,"height":186,"caption":"ObjectBox"},"image":{"@id":"https://objectbox.io/#/schema/logo/image/"},"sameAs":["https://www.facebook.com/objectboxTeam/","https://x.com/objectbox_io","https://www.instagram.com/objectbox_io/","https://www.linkedin.com/company/objectbox","https://www.youtube.com/channel/UCLs3F3Lhh8pjC66WZIopJ6Q"]},{"@type":"Person","@id":"https://objectbox.io/#/schema/person/743b5551652ae212361d8f6847dd96ef","name":"Uwe","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://objectbox.io/#/schema/person/image/","url":"https://secure.gravatar.com/avatar/4ef24893004f919d126513e50946da03?s=96&d=mm&r=g","contentUrl":"https://secure.gravatar.com/avatar/4ef24893004f919d126513e50946da03?s=96&d=mm&r=g","caption":"Uwe"},"url":"https://objectbox.io/author/greenrobot-team/"}]}</script> <!-- / Yoast SEO plugin. --> <link rel='dns-prefetch' href='//js.hs-scripts.com' /> <link rel="alternate" type="application/rss+xml" title="ObjectBox » Feed" href="https://objectbox.io/feed/" /> <link rel="alternate" type="application/rss+xml" title="ObjectBox » Comments Feed" href="https://objectbox.io/comments/feed/" /> <script type="text/javascript"> /* <![CDATA[ */ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/objectbox.io\/wordpress\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.5.5"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); /* ]]> */ </script> <meta content="ObjectBox Divi v.1.0.1" name="generator"/><link rel='stylesheet' id='validate-engine-css-css' href='https://objectbox.io/wordpress/wp-content/plugins/wysija-newsletters/css/validationEngine.jquery.css?ver=2.22' type='text/css' media='all' /> <link rel='stylesheet' id='crayon-theme-objectbox-dark-css' href='https://objectbox.io/wordpress/wp-content/uploads/urvanov-syntax-highlighter/themes/objectbox-dark/objectbox-dark.css?ver=2.8.34' type='text/css' media='all' /> <link rel='stylesheet' id='crayon-font-monospace-css' href='https://objectbox.io/wordpress/wp-content/plugins/urvanov-syntax-highlighter/fonts/monospace.css?ver=2.8.34' type='text/css' media='all' /> <style id='wp-emoji-styles-inline-css' type='text/css'> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='wp-block-library-css' href='https://objectbox.io/wordpress/wp-includes/css/dist/block-library/style.min.css?ver=6.5.5' type='text/css' media='all' /> <style id='wp-block-library-theme-inline-css' type='text/css'> .wp-block-audio figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-audio figcaption{color:#ffffffa6}.wp-block-audio{margin:0 0 1em}.wp-block-code{border:1px solid #ccc;border-radius:4px;font-family:Menlo,Consolas,monaco,monospace;padding:.8em 1em}.wp-block-embed figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-embed figcaption{color:#ffffffa6}.wp-block-embed{margin:0 0 1em}.blocks-gallery-caption{color:#555;font-size:13px;text-align:center}.is-dark-theme .blocks-gallery-caption{color:#ffffffa6}.wp-block-image figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-image figcaption{color:#ffffffa6}.wp-block-image{margin:0 0 1em}.wp-block-pullquote{border-bottom:4px solid;border-top:4px solid;color:currentColor;margin-bottom:1.75em}.wp-block-pullquote cite,.wp-block-pullquote footer,.wp-block-pullquote__citation{color:currentColor;font-size:.8125em;font-style:normal;text-transform:uppercase}.wp-block-quote{border-left:.25em solid;margin:0 0 1.75em;padding-left:1em}.wp-block-quote cite,.wp-block-quote footer{color:currentColor;font-size:.8125em;font-style:normal;position:relative}.wp-block-quote.has-text-align-right{border-left:none;border-right:.25em solid;padding-left:0;padding-right:1em}.wp-block-quote.has-text-align-center{border:none;padding-left:0}.wp-block-quote.is-large,.wp-block-quote.is-style-large,.wp-block-quote.is-style-plain{border:none}.wp-block-search .wp-block-search__label{font-weight:700}.wp-block-search__button{border:1px solid #ccc;padding:.375em .625em}:where(.wp-block-group.has-background){padding:1.25em 2.375em}.wp-block-separator.has-css-opacity{opacity:.4}.wp-block-separator{border:none;border-bottom:2px solid;margin-left:auto;margin-right:auto}.wp-block-separator.has-alpha-channel-opacity{opacity:1}.wp-block-separator:not(.is-style-wide):not(.is-style-dots){width:100px}.wp-block-separator.has-background:not(.is-style-dots){border-bottom:none;height:1px}.wp-block-separator.has-background:not(.is-style-wide):not(.is-style-dots){height:2px}.wp-block-table{margin:0 0 1em}.wp-block-table td,.wp-block-table th{word-break:normal}.wp-block-table figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-table figcaption{color:#ffffffa6}.wp-block-video figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-video figcaption{color:#ffffffa6}.wp-block-video{margin:0 0 1em}.wp-block-template-part.has-background{margin-bottom:0;margin-top:0;padding:1.25em 2.375em} </style> <style id='global-styles-inline-css' type='text/css'> body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--font-family--inter: "Inter", sans-serif;--wp--preset--font-family--cardo: Cardo;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}body { margin: 0;--wp--style--global--content-size: 823px;--wp--style--global--wide-size: 1080px; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}a:where(:not(.wp-element-button)){text-decoration: underline;}.wp-element-button, .wp-block-button__link{background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;line-height: inherit;padding: calc(0.667em + 2px) calc(1.333em + 2px);text-decoration: none;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-inter-font-family{font-family: var(--wp--preset--font-family--inter) !important;}.has-cardo-font-family{font-family: var(--wp--preset--font-family--cardo) !important;} .wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;} :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} .wp-block-pullquote{font-size: 1.5em;line-height: 1.6;} </style> <link rel='stylesheet' id='cookie-notice-front-css' href='https://objectbox.io/wordpress/wp-content/plugins/cookie-notice/css/front.min.css?ver=2.4.18' type='text/css' media='all' /> <link rel='stylesheet' id='dvmd-tm-public-module-style-css' href='https://objectbox.io/wordpress/wp-content/plugins/divi-modules-table-maker/extensions/styles/public-module-style.css?ver=3.1.2' type='text/css' media='all' /> <link rel='stylesheet' id='woocommerce-layout-css' href='https://objectbox.io/wordpress/wp-content/plugins/woocommerce/assets/css/woocommerce-layout.css?ver=9.3.3' type='text/css' media='all' /> <link rel='stylesheet' id='woocommerce-smallscreen-css' href='https://objectbox.io/wordpress/wp-content/plugins/woocommerce/assets/css/woocommerce-smallscreen.css?ver=9.3.3' type='text/css' media='only screen and (max-width: 768px)' /> <link rel='stylesheet' id='woocommerce-general-css' href='https://objectbox.io/wordpress/wp-content/plugins/woocommerce/assets/css/woocommerce.css?ver=9.3.3' type='text/css' media='all' /> <style id='woocommerce-inline-inline-css' type='text/css'> .woocommerce form .form-row .required { visibility: visible; } </style> <link rel='stylesheet' id='divi-torque-lite-modules-style-css' href='https://objectbox.io/wordpress/wp-content/plugins/addons-for-divi/assets/css/modules-style.css?ver=4.0.5' type='text/css' media='all' /> <link rel='stylesheet' id='divi-torque-lite-magnific-popup-css' href='https://objectbox.io/wordpress/wp-content/plugins/addons-for-divi/assets/libs/magnific-popup/magnific-popup.min.css?ver=4.0.5' type='text/css' media='all' /> <link rel='stylesheet' id='divi-torque-lite-frontend-css' href='https://objectbox.io/wordpress/wp-content/plugins/addons-for-divi/assets/css/frontend.css?ver=4.0.5' type='text/css' media='all' /> <link rel='stylesheet' id='divi-modules-table-maker-styles-css' href='https://objectbox.io/wordpress/wp-content/plugins/divi-modules-table-maker/extensions/divi-4/styles/style.min.css?ver=3.1.2' type='text/css' media='all' /> <link rel='stylesheet' id='divi-style-parent-css' href='https://objectbox.io/wordpress/wp-content/themes/Divi/style-static.min.css?ver=4.22.0' type='text/css' media='all' /> <link rel='stylesheet' id='divi-style-css' href='https://objectbox.io/wordpress/wp-content/themes/obx-divi-child/style.css?ver=4.22.0' type='text/css' media='all' /> <style id='divi-style-inline-css' type='text/css'> picture#logo { display: inherit; } picture#logo source, picture#logo img { width: auto; max-height: 45%; vertical-align: middle; } @media (min-width: 981px) { .et_vertical_nav #main-header picture#logo source, .et_vertical_nav #main-header picture#logo img { margin-bottom: 28px; } } </style> <link rel='stylesheet' id='select2-css' href='https://objectbox.io/wordpress/wp-content/plugins/woocommerce/assets/css/select2.css?ver=9.3.3' type='text/css' media='all' /> <script type="text/javascript" id="cookie-notice-front-js-before"> /* <![CDATA[ */ var cnArgs = {"ajaxUrl":"https:\/\/objectbox.io\/wordpress\/wp-admin\/admin-ajax.php","nonce":"bd61c772f3","hideEffect":"none","position":"top","onScroll":true,"onScrollOffset":500,"onClick":true,"cookieName":"cookie_notice_accepted","cookieTime":31536000,"cookieTimeRejected":2592000,"globalCookie":false,"redirection":false,"cache":true,"revokeCookies":false,"revokeCookiesOpt":"automatic"}; /* ]]> */ </script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/plugins/cookie-notice/js/front.min.js?ver=2.4.18" id="cookie-notice-front-js"></script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/plugins/woocommerce/assets/js/jquery-blockui/jquery.blockUI.min.js?ver=2.7.0-wc.9.3.3" id="jquery-blockui-js" defer="defer" data-wp-strategy="defer"></script> <script type="text/javascript" id="wc-add-to-cart-js-extra"> /* <![CDATA[ */ var wc_add_to_cart_params = {"ajax_url":"\/wordpress\/wp-admin\/admin-ajax.php","wc_ajax_url":"\/?wc-ajax=%%endpoint%%","i18n_view_cart":"View cart","cart_url":"https:\/\/objectbox.io\/?page_id=37328","is_cart":"","cart_redirect_after_add":"no"}; /* ]]> */ </script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart.min.js?ver=9.3.3" id="wc-add-to-cart-js" defer="defer" data-wp-strategy="defer"></script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/plugins/woocommerce/assets/js/js-cookie/js.cookie.min.js?ver=2.1.4-wc.9.3.3" id="js-cookie-js" defer="defer" data-wp-strategy="defer"></script> <script type="text/javascript" id="woocommerce-js-extra"> /* <![CDATA[ */ var woocommerce_params = {"ajax_url":"\/wordpress\/wp-admin\/admin-ajax.php","wc_ajax_url":"\/?wc-ajax=%%endpoint%%"}; /* ]]> */ </script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/plugins/woocommerce/assets/js/frontend/woocommerce.min.js?ver=9.3.3" id="woocommerce-js" defer="defer" data-wp-strategy="defer"></script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/plugins/woocommerce/assets/js/selectWoo/selectWoo.full.min.js?ver=1.0.9-wc.9.3.3" id="selectWoo-js" defer="defer" data-wp-strategy="defer"></script> <link rel="https://api.w.org/" href="https://objectbox.io/wp-json/" /><link rel="alternate" type="application/json" href="https://objectbox.io/wp-json/wp/v2/posts/259074" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://objectbox.io/wordpress/xmlrpc.php?rsd" /> <meta name="generator" content="WordPress 6.5.5" /> <meta name="generator" content="WooCommerce 9.3.3" /> <link rel='shortlink' href='https://objectbox.io/?p=259074' /> <link rel="alternate" type="application/json+oembed" href="https://objectbox.io/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fobjectbox.io%2Fswift-ios-on-device-vector-database-aka-semantic-index%2F" /> <link rel="alternate" type="text/xml+oembed" href="https://objectbox.io/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fobjectbox.io%2Fswift-ios-on-device-vector-database-aka-semantic-index%2F&format=xml" /> <style>.dbcs-clipboard-button { position: absolute; right: 1em; margin-top: 0.7em; font-family: 'ETmodules' !important; font-size: 16pt; opacity: 0.4; cursor: pointer; } .dbcs-clipboard-button:before { content: '\69'; } .dbcs-clipboard-button:hover { opacity: 1; } .dbcs-clipboard-button.dbcs-copied-to-clipboard { color: green; opacity: 1; } .dbcs-clipboard-button.dbcs-copied-to-clipboard:before { content: '\4e'; } .dbcs-clipboard-enabled .hljs-table td.hljs-line { padding-right: 55px; } .dbcs-clipboard-enabled .dbcs-clipboard-button { opacity: 1; background: rgba(240, 240, 240, 0.9) !important; padding: 7px; right: 0.35em; margin-top: 0.35em; border-radius: 4px } .dbcs-clipboard-enabled .dbcs-clipboard-button:before { opacity: 0.8; } .dbcs-clipboard-enabled .dbcs-clipboard-button:hover:before { opacity: 1; }</style><style> .et_pb_dmb_code_snippet pre code:before, #et_builder_outer_content .et_pb_dmb_code_snippet pre code:before{ font-family: monospace; } .et_pb_dmb_code_snippet pre code table.hljs-table td.hljs-line-number, #et_builder_outer_content .et_pb_dmb_code_snippet pre code table.hljs-table td.hljs-line-number { user-select: none; text-align: right; white-space: nowrap; vertical-align: top; } .et_pb_dmb_code_snippet pre code:not(.show_linenums) table.hljs-table td.hljs-line-number, #et_builder_outer_content .et_pb_dmb_code_snippet pre code:not(.show_linenums) table.hljs-table td.hljs-line-number, .et_pb_dmb_code_snippet pre code:not(.show_linenums) table.hljs-table col.hljs-line-numbers, #et_builder_outer_content .et_pb_dmb_code_snippet pre code:not(.show_linenums) table.hljs-table col.hljs-line-numbers { display: none; } </style> <style> .et_pb_dmb_code_snippet code.dbcs-wrap-lines .hljs-line * { white-space: pre-wrap; overflow-wrap: anywhere; } </style> <style> .et_pb_dmb_code_snippet { visibility: hidden; } </style> <!-- DO NOT COPY THIS SNIPPET! Start of Page Analytics Tracking for HubSpot WordPress plugin v11.1.66--> <script class="hsq-set-content-id" data-content-id="blog-post"> var _hsq = _hsq || []; _hsq.push(["setContentType", "blog-post"]); </script> <!-- DO NOT COPY THIS SNIPPET! End of Page Analytics Tracking for HubSpot WordPress plugin --> <script type="text/javascript"> (function(url){ if(/(?:Chrome\/26\.0\.1410\.63 Safari\/537\.31|WordfenceTestMonBot)/.test(navigator.userAgent)){ return; } var addEvent = function(evt, handler) { if (window.addEventListener) { document.addEventListener(evt, handler, false); } else if (window.attachEvent) { document.attachEvent('on' + evt, handler); } }; var removeEvent = function(evt, handler) { if (window.removeEventListener) { document.removeEventListener(evt, handler, false); } else if (window.detachEvent) { document.detachEvent('on' + evt, handler); } }; var evts = 'contextmenu dblclick drag dragend dragenter dragleave dragover dragstart drop keydown keypress keyup mousedown mousemove mouseout mouseover mouseup mousewheel scroll'.split(' '); var logHuman = function() { if (window.wfLogHumanRan) { return; } window.wfLogHumanRan = true; var wfscr = document.createElement('script'); wfscr.type = 'text/javascript'; wfscr.async = true; wfscr.src = url + '&r=' + Math.random(); (document.getElementsByTagName('head')[0]||document.getElementsByTagName('body')[0]).appendChild(wfscr); for (var i = 0; i < evts.length; i++) { removeEvent(evts[i], logHuman); } }; for (var i = 0; i < evts.length; i++) { addEvent(evts[i], logHuman); } })('//objectbox.io/?wordfence_lh=1&hid=3BC69936DDCF96BCD99C9C7C443D266C'); </script><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" /><style type="text/css" id="tve_global_variables">:root{--tcb-color-0:rgb(125, 220, 125);--tcb-color-0-h:120;--tcb-color-0-s:57%;--tcb-color-0-l:67%;--tcb-color-0-a:1;--tcb-gradient-0:linear-gradient(54deg, rgb(230, 25, 85) 0%, rgb(245, 150, 45) 64%, rgb(249, 229, 5) 100%, var(--tcb-color-0) 100%);--tcb-background-author-image:url(https://secure.gravatar.com/avatar/4ef24893004f919d126513e50946da03?s=256&d=mm&r=g);--tcb-background-user-image:url();--tcb-background-featured-image-thumbnail:url(https://objectbox.io/wordpress/wp-content/uploads/2024/07/FirstIoSVectorDatabase-Swift2.jpg);}</style> <noscript><style>.woocommerce-product-gallery{ opacity: 1 !important; }</style></noscript> <style type="text/css" id="custom-background-css"> body.custom-background { background-color: #f7f7f7; } </style> <script id='nitro-telemetry-meta' nitro-exclude>window.NPTelemetryMetadata={missReason: (!window.NITROPACK_STATE ? 'request type not allowed' : 'hit'),pageType: 'post',isEligibleForOptimization: false,}</script><script id='nitro-generic' nitro-exclude>(()=>{window.NitroPack=window.NitroPack||{coreVersion:"na",isCounted:!1};let e=document.createElement("script");if(e.src="https://nitroscripts.com/JNiKLBzGPsfbQJqUQoZqIbUrxBklWopT",e.async=!0,e.id="nitro-script",document.head.appendChild(e),!window.NitroPack.isCounted){window.NitroPack.isCounted=!0;let t=()=>{navigator.sendBeacon("https://to.getnitropack.com/p",JSON.stringify({siteId:"JNiKLBzGPsfbQJqUQoZqIbUrxBklWopT",url:window.location.href,isOptimized:!!window.IS_NITROPACK,coreVersion:"na",missReason:window.NPTelemetryMetadata?.missReason||"",pageType:window.NPTelemetryMetadata?.pageType||"",isEligibleForOptimization:!!window.NPTelemetryMetadata?.isEligibleForOptimization}))};(()=>{let e=()=>new Promise(e=>{"complete"===document.readyState?e():window.addEventListener("load",e)}),i=()=>new Promise(e=>{document.prerendering?document.addEventListener("prerenderingchange",e,{once:!0}):e()}),a=async()=>{await i(),await e(),t()};a()})(),window.addEventListener("pageshow",e=>{if(e.persisted){let i=document.prerendering||self.performance?.getEntriesByType?.("navigation")[0]?.activationStart>0;"visible"!==document.visibilityState||i||t()}})}})();</script><!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-68353717-3"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-68353717-3'); gtag('config', 'G-PNBER16ZJB'); </script> <!-- GitHub Buttons. --> <!-- <script async defer src="https://buttons.github.io/buttons.js"></script> --><style id='wp-fonts-local' type='text/css'> @font-face{font-family:Inter;font-style:normal;font-weight:300 900;font-display:fallback;src:url('https://objectbox.io/wordpress/wp-content/plugins/woocommerce/assets/fonts/Inter-VariableFont_slnt,wght.woff2') format('woff2');font-stretch:normal;} @font-face{font-family:Cardo;font-style:normal;font-weight:400;font-display:fallback;src:url('https://objectbox.io/wordpress/wp-content/plugins/woocommerce/assets/fonts/cardo_normal_400.woff2') format('woff2');} </style> <style type="text/css" id="thrive-default-styles"></style><link rel="icon" href="https://objectbox.io/wordpress/wp-content/uploads/2022/11/cropped-OB-square-transparent-logo-teal-48x48-1-32x32.png" sizes="32x32" /> <link rel="icon" href="https://objectbox.io/wordpress/wp-content/uploads/2022/11/cropped-OB-square-transparent-logo-teal-48x48-1-192x192.png" sizes="192x192" /> <link rel="apple-touch-icon" href="https://objectbox.io/wordpress/wp-content/uploads/2022/11/cropped-OB-square-transparent-logo-teal-48x48-1-180x180.png" /> <meta name="msapplication-TileImage" content="https://objectbox.io/wordpress/wp-content/uploads/2022/11/cropped-OB-square-transparent-logo-teal-48x48-1-270x270.png" /> <link rel="stylesheet" id="et-divi-customizer-global-cached-inline-styles" href="https://objectbox.io/wordpress/wp-content/et-cache/global/et-divi-customizer-global.min.css?ver=1730962523" /></head> <body class="post-template-default single single-post postid-259074 single-format-standard custom-background theme-Divi et-tb-has-template et-tb-has-header cookies-not-set woocommerce-no-js et_button_no_icon et_pb_button_helper_class et_pb_footer_columns3 et_cover_background windows et_pb_gutters3 et_pb_pagebuilder_layout et_right_sidebar et_divi_theme et-db"> <div id="page-container"> <div id="et-boc" class="et-boc"> <header class="et-l et-l--header"> <div class="et_builder_inner_content et_pb_gutters3"><div class="et_pb_with_border et_pb_section et_pb_section_0_tb_header et_pb_sticky_module et_pb_with_background et_section_regular et_pb_section--with-menu" > <div class="et_pb_row et_pb_row_0_tb_header et_pb_row--with-menu"> <div class="et_pb_column et_pb_column_3_4 et_pb_column_0_tb_header et_pb_css_mix_blend_mode_passthrough et_pb_column--with-menu"> <div class="et_pb_module et_pb_code et_pb_code_0_tb_header"> <div class="et_pb_code_inner"><style> .dfh-2 .et_mobile_menu li:not(:last-child) a, .dfh-2 .nav li li:not(:last-child), .dfh-2 .et-menu-nav li.mega-menu>ul>li>a:first-child, .dfh-2 .et-menu-nav li.mega-menu ul li ul li:not(:last-child) a { border-bottom: 1px solid rgb(255,255,255,0.2) !important; } @media screen and (min-width: 981px) { .dfh-2 .sub-menu:before { color: #ffffff; } } </style></div> </div><div class="et_pb_module et_pb_code et_pb_code_1_tb_header"> <div class="et_pb_code_inner"><script> (function($) { function dfh_collapse_menu() { var ParentMenuItem = $('.dfh-2 .et_mobile_menu .menu-item-has-children > a'); ParentMenuItem.off('click').click(function() { $(this).attr('href', '#/'); $(this).parent().children().children().toggleClass('dfh-show-menu-items'); $(this).toggleClass('dfh-menu-switched-icon'); }); } $(window).load(function() { setTimeout(function() { dfh_collapse_menu(); }, 700); }); })(jQuery); </script> <style> .dfh-2 .et_mobile_menu .menu-item-has-children > a:after { content: '\50'; display: block !important; font-family: 'ETmodules'; font-size: 16px; font-weight: normal; position: absolute; right: 10px; top: 13px; } .dfh-2 .et_mobile_menu .menu-item-has-children > .dfh-menu-switched-icon:after { content: '\4f'; } .dfh-2 .et_mobile_menu .menu-item-has-children > a { position: relative; } .dfh-2 .et_mobile_menu .menu-item-has-children .sub-menu li { display: none; } .dfh-2 .et_mobile_menu .menu-item-has-children .sub-menu .dfh-show-menu-items { display: block; } .dfh-2 .nav li li { padding: 0 !important; } .dfh-2 .et_pb_menu .et_mobile_menu, .dfh-2 .et_mobile_menu { padding: 0 !important; border-width: 2px; border-radius: 5px; } .dfh-2 .et_pb_menu .et_mobile_menu a, .dfh-2 .et_mobile_menu a { padding: 12px 20px !important; } .dfh-2.et_pb_menu .et-menu-nav li.mega-menu ul.sub-menu { border-width: 2px !important; border-radius: 5px !important; padding: 10px 20px !important; width: 100% !important; } .dfh-2 .nav li.mega-menu li { border-bottom: none !important; } .et-db #et-boc .et-l .dfh-2 .et-menu-nav li.mega-menu li>a { width: 140px !important; } .dfh-2.et_pb_menu .et-menu-nav li.mega-menu ul.sub-menu a { padding: 12px 0 !important; } @media screen and (min-width: 981px) { .dfh-2 .et-menu > .menu-item-has-children > .sub-menu:before { font-family: ETmodules; content: '\42'; position: absolute; right: 20px; top: -17px; font-size: 30px; } .dfh-2 .et-menu > .menu-item-has-children.mega-menu > .sub-menu:before { content: ''; } .dfh-2 .et-menu .sub-menu .menu-item-has-children>a:first-child:after { content: "\35" !important; } .et-db #et-boc .et-l .dfh-2.et_pb_menu .et-menu-nav li ul.sub-menu li ul.sub-menu { left: 200px !important; top: 0; } .et-db #et-boc .et-l .dfh-2.et_pb_menu .et-menu-nav li.mega-menu ul.sub-menu li ul.sub-menu { left: 0 !important; padding: 0 !important; } } @media screen and (max-width: 980px) { .dfh-2 .et_pb_menu__wrap { margin-top: -8px; } } </style></div> </div><div class="et_pb_with_border et_pb_module et_pb_menu et_pb_menu_0_tb_header dfh-2 et_pb_bg_layout_light et_pb_text_align_left et_dropdown_animation_fade et_pb_menu--with-logo et_pb_menu--style-left_aligned"> <div class="et_pb_menu_inner_container clearfix"> <div class="et_pb_menu__logo-wrap"> <div class="et_pb_menu__logo"> <a href="https://objectbox.io/" ><img decoding="async" width="500" height="120" src="https://objectbox.io/wordpress/wp-content/uploads/2024/09/logo-white-500pxf.png" alt="" class="wp-image-259569" data-et-multi-view="{"schema":{"attrs":{"desktop":{"src":"https:\/\/objectbox.io\/wordpress\/wp-content\/uploads\/2024\/09\/logo-white-500pxf.png","alt":"","class":"wp-image-259569"},"tablet":{"src":"https:\/\/objectbox.io\/wordpress\/wp-content\/uploads\/2021\/01\/logo-white-500px-300x72.png"}}},"slug":"et_pb_menu","hover_selector":".et_pb_menu_0_tb_header .et_pb_menu__logo-wrap .et_pb_menu__logo img"}" /></a> </div> </div> <div class="et_pb_menu__wrap"> <div class="et_pb_menu__menu"> <nav class="et-menu-nav"><ul id="menu-main-menu" class="et-menu nav"><li class="first-level et_pb_menu_page_id-35279 menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-35279"><a>Product</a> <ul class="sub-menu"> <li class="et_pb_menu_page_id-257334 menu-item menu-item-type-post_type menu-item-object-page menu-item-257919"><a href="https://objectbox.io/vector-database-for-ondevice-ai/">The vector database for on-device AI</a></li> <li class="second-level et_pb_menu_page_id-33019 menu-item menu-item-type-post_type menu-item-object-page menu-item-33433"><a href="https://objectbox.io/sync/">Data Sync</a></li> <li class="second-level et_pb_menu_page_id-223067 menu-item menu-item-type-post_type menu-item-object-page menu-item-223155"><a title="Embedded Database for Embedded Devices" href="https://objectbox.io/embedded-database/">Embedded Database</a></li> <li class="second-level et_pb_menu_page_id-35148 menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-35277"><a href="https://objectbox.io/mobile-database/">Mobile Database</a> <ul class="sub-menu"> <li class="et_pb_menu_page_id-222066 menu-item menu-item-type-post_type menu-item-object-page menu-item-222378"><a href="https://objectbox.io/swift-database-for-ios/">Swift Database for iOS</a></li> <li class="et_pb_menu_page_id-223156 menu-item menu-item-type-post_type menu-item-object-page menu-item-223274"><a title="Android Database" href="https://objectbox.io/android-database/">Android Database</a></li> <li class="et_pb_menu_page_id-223479 menu-item menu-item-type-post_type menu-item-object-page menu-item-223868"><a href="https://objectbox.io/flutter-database/">Flutter Database</a></li> </ul> </li> <li class="et_pb_menu_page_id-258495 menu-item menu-item-type-post_type menu-item-object-page menu-item-258707"><a href="https://objectbox.io/time-series-database/">Time Series DB</a></li> <li class="second-level et_pb_menu_page_id-34014 menu-item menu-item-type-post_type menu-item-object-page menu-item-34399"><a href="https://objectbox.io/iot-edge-computing-database-decentralized-data-flows/">IoT DB for the edge</a></li> <li class="second-level et_pb_menu_page_id-35961 menu-item menu-item-type-post_type menu-item-object-page menu-item-41668"><a href="https://objectbox.io/edgex/">ObjectBox EdgeX</a></li> </ul> </li> <li class="first-level et_pb_menu_page_id-39185 menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-39185"><a>Solutions</a> <ul class="sub-menu"> <li class="second-level et_pb_menu_page_id-260370 menu-item menu-item-type-post_type menu-item-object-page menu-item-260694"><a href="https://objectbox.io/connected-car-data-storage-and-sync/">Connected Cars</a></li> <li class="second-level et_pb_menu_page_id-38910 menu-item menu-item-type-post_type menu-item-object-page menu-item-39178"><a href="https://objectbox.io/iiot-edge-computing/">Industrial IoT</a></li> <li class="second-level et_pb_menu_page_id-49453 menu-item menu-item-type-post_type menu-item-object-page menu-item-49867"><a href="https://objectbox.io/energy-edge-computing/">Energy Industry</a></li> <li class="second-level et_pb_menu_page_id-38644 menu-item menu-item-type-post_type menu-item-object-page menu-item-39005"><a href="https://objectbox.io/smart-mobility/">Smart Mobility</a></li> <li class="second-level et_pb_menu_page_id-46718 menu-item menu-item-type-post_type menu-item-object-page menu-item-48012"><a href="https://objectbox.io/retail-edge-computing/">Retail Services</a></li> <li class="second-level et_pb_menu_page_id-50045 menu-item menu-item-type-post_type menu-item-object-page menu-item-50291"><a href="https://objectbox.io/games/">Games</a></li> <li class="second-level et_pb_menu_page_id-34759 menu-item menu-item-type-post_type menu-item-object-page menu-item-35893"><a href="https://objectbox.io/iot-edge-computing-database-decentralized-data-flows/iot-use-cases-edge-computing/">IoT Use Cases</a></li> </ul> </li> <li class="first-level et_pb_menu_page_id-28602 menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-28602"><a>Developers</a> <ul class="sub-menu"> <li class="second-level et_pb_menu_page_id-35049 menu-item menu-item-type-post_type menu-item-object-page menu-item-35212"><a href="https://objectbox.io/offline-first-mobile-database/">Overview</a></li> <li class="second-level et_pb_menu_page_id-53043 menu-item menu-item-type-custom menu-item-object-custom menu-item-53043"><a href="https://sync.objectbox.io/">Sync Docs</a></li> <li class="second-level et_pb_menu_page_id-35273 menu-item menu-item-type-custom menu-item-object-custom menu-item-35273"><a href="https://docs.objectbox.io/">Java Docs</a></li> <li class="second-level et_pb_menu_page_id-35275 menu-item menu-item-type-custom menu-item-object-custom menu-item-35275"><a href="https://cpp.objectbox.io/">C / C++ Docs</a></li> <li class="second-level et_pb_menu_page_id-35364 menu-item menu-item-type-custom menu-item-object-custom menu-item-35364"><a href="https://golang.objectbox.io/">Go Docs</a></li> <li class="second-level et_pb_menu_page_id-35281 menu-item menu-item-type-custom menu-item-object-custom menu-item-35281"><a href="https://docs.objectbox.io/kotlin-support">Kotlin Docs</a></li> <li class="second-level et_pb_menu_page_id-35274 menu-item menu-item-type-custom menu-item-object-custom menu-item-35274"><a href="https://swift.objectbox.io/">Swift Docs</a></li> <li class="second-level et_pb_menu_page_id-50071 menu-item menu-item-type-custom menu-item-object-custom menu-item-50071"><a href="https://github.com/objectbox/objectbox-dart">Flutter / Dart</a></li> <li class="second-level et_pb_menu_page_id-50463 menu-item menu-item-type-post_type menu-item-object-page menu-item-50484"><a href="https://objectbox.io/offline-docs-pdf-download/">Offline Docs / PDF Download</a></li> <li class="second-level et_pb_menu_page_id-30804 menu-item menu-item-type-post_type menu-item-object-page menu-item-30829"><a href="https://objectbox.io/faq/">FAQ</a></li> </ul> </li> <li class="first-level et_pb_menu_page_id-33340 menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-33736"><a href="https://objectbox.io/about-us/">Company</a> <ul class="sub-menu"> <li class="second-level et_pb_menu_page_id-33340 menu-item menu-item-type-post_type menu-item-object-page menu-item-33737"><a href="https://objectbox.io/about-us/">About Us</a></li> <li class="second-level et_pb_menu_page_id-32135 menu-item menu-item-type-post_type menu-item-object-page menu-item-32157"><a href="https://objectbox.io/jobs/">Jobs</a></li> <li class="second-level et_pb_menu_page_id-35211 menu-item menu-item-type-post_type menu-item-object-page menu-item-35268"><a href="https://objectbox.io/events/">Events</a></li> <li class="second-level et_pb_menu_page_id-35703 menu-item menu-item-type-post_type menu-item-object-page menu-item-35730"><a href="https://objectbox.io/iot-mobile-insights-learnings-research-studies/">Insights</a></li> <li class="et_pb_menu_page_id-50886 menu-item menu-item-type-post_type menu-item-object-page menu-item-223175"><a href="https://objectbox.io/software-we-love/">Software we 🤍</a></li> <li class="et_pb_menu_page_id-257704 menu-item menu-item-type-post_type menu-item-object-page menu-item-257890"><a href="https://objectbox.io/contact-us/">Contact us</a></li> </ul> </li> <li class="first-level et_pb_menu_page_id-31231 menu-item menu-item-type-post_type menu-item-object-page menu-item-31319"><a href="https://objectbox.io/blog/">Blog</a></li> <li class="et_pb_menu_page_id-259820 menu-item menu-item-type-post_type menu-item-object-page menu-item-260029"><a href="https://objectbox.io/mongodb/"><font color="#17A6A6">MongoDB Connector</font></a></li> </ul></nav> </div> <div class="et_mobile_nav_menu"> <div class="mobile_nav closed"> <span class="mobile_menu_bar"></span> </div> </div> </div> </div> </div> </div><div class="et_pb_column et_pb_column_1_4 et_pb_column_1_tb_header et_pb_css_mix_blend_mode_passthrough et-last-child"> <div class="et_pb_button_module_wrapper et_pb_button_0_tb_header_wrapper et_pb_button_alignment_center et_pb_module "> <a class="et_pb_button et_pb_button_0_tb_header et_pb_bg_layout_dark" href="https://github.com/objectbox/" target="_blank" data-icon="">45.8k</a> </div><div class="et_pb_button_module_wrapper et_pb_button_1_tb_header_wrapper et_pb_button_alignment_center et_pb_module "> <a class="et_pb_button et_pb_button_1_tb_header et_pb_bg_layout_dark" href="https://objectbox.io/offline-first-mobile-database/">Get started</a> </div> </div> </div> </div> </div> </header> <div id="et-main-area"> <div id="main-content"> <div class="container"> <div id="content-area" class="clearfix"> <div id="left-area"> <article id="post-259074" class="et_pb_post post-259074 post type-post status-publish format-standard has-post-thumbnail hentry category-ai category-edge-ai category-edge-database category-mobile-database category-objectbox category-swift category-vector-database tag-ios tag-mobile-database tag-release tag-vector-database"> <div class="et_post_meta_wrapper"> <h1 class="entry-title">First on-device Vector Database (aka Semantic Index) for iOS</h1> <p class="post-meta"><span class="published">Jul 24, 2024</span> | <a href="https://objectbox.io/category/ai/" rel="category tag">AI</a>, <a href="https://objectbox.io/category/edge-ai/" rel="category tag">Edge AI</a>, <a href="https://objectbox.io/category/edge-database/" rel="category tag">Edge Database</a>, <a href="https://objectbox.io/category/mobile-database/" rel="category tag">Mobile Database</a>, <a href="https://objectbox.io/category/mobile-database/objectbox/" rel="category tag">ObjectBox</a>, <a href="https://objectbox.io/category/mobile-database/swift/" rel="category tag">Swift</a>, <a href="https://objectbox.io/category/vector-database/" rel="category tag">vector database</a></p> </div> <div class="entry-content"> <div class="et-l et-l--post"> <div class="et_builder_inner_content et_pb_gutters3"><div class="et_pb_section et_pb_section_0 et_section_regular" > <div class="et_pb_row et_pb_row_0"> <div class="et_pb_column et_pb_column_4_4 et_pb_column_0 et_pb_css_mix_blend_mode_passthrough et-last-child"> <div class="et_pb_module et_pb_text et_pb_text_0 et_pb_text_align_left et_pb_bg_layout_light"> <div class="et_pb_text_inner"><p>Easily empower your iOS and macOS apps with fast, private, and sustainable AI features. All you need is a Small Language Model (SLM; aka “small LLM”) and ObjectBox – our <a href="https://objectbox.io/">on-device vector database</a> built for <strong>Swift</strong> apps. This gives you a local semantic index for fast on-device AI features like RAG or GenAI that run without an internet connection and keep data private.</p><p>The recently demonstrated “Apple Intelligence” features are precisely that: a combination of on-device AI models and a vector database (semantic index). Now, <a href="https://swift.objectbox.io/"><strong>ObjectBox Swift</strong></a> enables you to add the same kind of AI features easily and quickly to your iOS apps right now.</p><p><br>Not developing with Swift? We also have a <a href="https://pub.dev/packages/objectbox">Flutter / Dart binding</a> (works on iOS, Android, desktop), a <a href="https://github.com/objectbox/objectbox-java">Java / Kotlin binding</a> (works on Android and JVM), or <a href="https://github.com/objectbox/objectbox-c">one in C++</a> for embedded devices.</p><h2 class="wp-block-heading"><strong>Enabling Advanced AI Anywhere, Anytime</strong></h2><p>Typical AI apps use data (e.g. user-specific data, or company-specific data) and multiple queries to enhance and personalize the quality of the model’s response and perform complex tasks. And now, for the very first time, with the release of ObjectBox 4.0, this will be possible locally on restricted devices.</p><figure class="wp-block-image aligncenter size-full"><img decoding="async" width="980" height="450" src="https://objectbox.io/wordpress/wp-content/uploads/2024/07/localAiTechStack.png" alt="" class="wp-image-259105"/><figcaption class="wp-element-caption">Local AI Tech Stack Example for on-device RAG</figcaption></figure><h2 class="wp-block-heading">Swift <strong>on-device Vector Database and search for iOS and MacOS</strong></h2><p>With the ObjectBox Swift 4.0 release, it is possible to create a scalable vector index on floating point vector properties. It’s a very special index that uses an algorithm called HNSW. It’s scalable because it can find relevant data within millions of entries in a matter of milliseconds.<br>Let’s pick up the cities example from our <a href="https://docs.objectbox.io/ann-vector-search">vector search documentation</a>. Here, we use cities with a location vector and want to find the closest cities (a proximity search). The Swift class for the City entity shows how to define an HNSW index on the location:</p><!-- Urvanov Syntax Highlighter v2.8.34 --> <div id="urvanov-syntax-highlighter-6742d9eeaec72470604216" class="urvanov-syntax-highlighter-syntax crayon-theme-objectbox-dark urvanov-syntax-highlighter-font-monospace urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" no-popup minimize scroll-always" style=" font-size: 15px !important; line-height: 18px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="hide"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 15px !important; line-height: 18px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec72470604216-1">1</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec72470604216-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec72470604216-3">3</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec72470604216-4">4</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec72470604216-5">5</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec72470604216-6">6</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec72470604216-7">7</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec72470604216-8">8</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec72470604216-9">9</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec72470604216-10">10</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec72470604216-11">11</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 15px !important; line-height: 18px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec72470604216-1"> </div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec72470604216-2"><span class="crayon-c">// objectbox: entity</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec72470604216-3"><span class="crayon-t">class</span><span class="crayon-h"> </span><span class="crayon-e">City</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec72470604216-4"><span class="crayon-h"> </span><span class="crayon-t">var</span><span class="crayon-h"> </span><span class="crayon-v">id</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-v">Id</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-cn">0</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec72470604216-5"><span class="crayon-h"> </span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec72470604216-6"><span class="crayon-h"> </span><span class="crayon-t">var</span><span class="crayon-h"> </span><span class="crayon-v">name</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-t">String</span><span class="crayon-sy">?</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec72470604216-7"><span class="crayon-h"> </span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec72470604216-8"><span class="crayon-h"> </span><span class="crayon-c">// objectbox:hnswIndex: dimensions=2</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec72470604216-9"><span class="crayon-h"> </span><span class="crayon-t">var</span><span class="crayon-h"> </span><span class="crayon-v">location</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-sy">[</span><span class="crayon-t">Float</span><span class="crayon-sy">]</span><span class="crayon-sy">?</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec72470604216-10"><span class="crayon-sy">}</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec72470604216-11"> </div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0009 seconds] --> <p>Inserting City objects with a float vector and HNSW index works as usual, the indexing happens behind the scenes:</p><!-- Urvanov Syntax Highlighter v2.8.34 --> <div id="urvanov-syntax-highlighter-6742d9eeaec7e928109119" class="urvanov-syntax-highlighter-syntax crayon-theme-objectbox-dark urvanov-syntax-highlighter-font-monospace urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" no-popup minimize scroll-always" style=" font-size: 15px !important; line-height: 18px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="hide"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 15px !important; line-height: 18px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec7e928109119-1">1</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec7e928109119-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec7e928109119-3">3</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec7e928109119-4">4</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec7e928109119-5">5</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec7e928109119-6">6</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec7e928109119-7">7</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec7e928109119-8">8</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 15px !important; line-height: 18px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec7e928109119-1"> </div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec7e928109119-2"><span class="crayon-e">let </span><span class="crayon-v">box</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-v">Box</span><span class="crayon-o"><</span><span class="crayon-v">City</span><span class="crayon-o">></span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-v">store</span><span class="crayon-sy">.</span><span class="crayon-e">box</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec7e928109119-3"><span class="crayon-st">try</span><span class="crayon-h"> </span><span class="crayon-v">box</span><span class="crayon-sy">.</span><span class="crayon-e">put</span><span class="crayon-sy">(</span><span class="crayon-sy">[</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec7e928109119-4"><span class="crayon-h"> </span><span class="crayon-e">City</span><span class="crayon-sy">(</span><span class="crayon-s">"Barcelona"</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-sy">[</span><span class="crayon-cn">41.385063</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-cn">2.173404</span><span class="crayon-sy">]</span><span class="crayon-sy">)</span><span class="crayon-sy">,</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec7e928109119-5"><span class="crayon-h"> </span><span class="crayon-e">City</span><span class="crayon-sy">(</span><span class="crayon-s">"Nairobi"</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-sy">[</span><span class="crayon-o">-</span><span class="crayon-cn">1.292066</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-cn">36.821945</span><span class="crayon-sy">]</span><span class="crayon-sy">)</span><span class="crayon-sy">,</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec7e928109119-6"><span class="crayon-h"> </span><span class="crayon-e">City</span><span class="crayon-sy">(</span><span class="crayon-s">"Salzburg"</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-sy">[</span><span class="crayon-cn">47.809490</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-cn">13.055010</span><span class="crayon-sy">]</span><span class="crayon-sy">)</span><span class="crayon-sy">,</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec7e928109119-7"><span class="crayon-sy">]</span><span class="crayon-sy">)</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec7e928109119-8"> </div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0003 seconds] --> <p>To then find cities closest to a location, we do a nearest neighbor search using the new query condition and “find with scores” methods. The nearest neighbor condition accepts a query vector, e.g. the coordinates of Madrid, and a count to limit the number of results of the nearest neighbor search, here we want at max 2 cities. The find with score methods are like a regular find, but in addition return a score. This score is the distance of each result to the query vector. In our case, it is the distance of each city to Madrid.</p><!-- Urvanov Syntax Highlighter v2.8.34 --> <div id="urvanov-syntax-highlighter-6742d9eeaec82734628587" class="urvanov-syntax-highlighter-syntax crayon-theme-objectbox-dark urvanov-syntax-highlighter-font-monospace urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" no-popup minimize scroll-always" style=" font-size: 15px !important; line-height: 18px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="hide"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 15px !important; line-height: 18px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec82734628587-1">1</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec82734628587-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec82734628587-3">3</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec82734628587-4">4</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec82734628587-5">5</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec82734628587-6">6</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec82734628587-7">7</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec82734628587-8">8</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec82734628587-9">9</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec82734628587-10">10</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec82734628587-11">11</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-6742d9eeaec82734628587-12">12</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 15px !important; line-height: 18px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec82734628587-1"> </div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec82734628587-2"><span class="crayon-e">let </span><span class="crayon-v">madrid</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-sy">[</span><span class="crayon-cn">40.416775</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-o">-</span><span class="crayon-cn">3.703790</span><span class="crayon-sy">]</span><span class="crayon-h"> </span><span class="crayon-c">// query vector</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec82734628587-3"><span class="crayon-c">// Prepare a Query object to search for the 2 closest neighbors:</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec82734628587-4"><span class="crayon-e">let </span><span class="crayon-v">query</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-st">try</span><span class="crayon-h"> </span><span class="crayon-i">box</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec82734628587-5"><span class="crayon-h"> </span><span class="crayon-sy">.</span><span class="crayon-i">query</span><span class="crayon-h"> </span><span class="crayon-sy">{</span><span class="crayon-h"> </span><span class="crayon-v">City</span><span class="crayon-sy">.</span><span class="crayon-v">location</span><span class="crayon-sy">.</span><span class="crayon-e">nearestNeighbors</span><span class="crayon-sy">(</span><span class="crayon-v">queryVector</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-v">madrid</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">maxCount</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">2</span><span class="crayon-sy">)</span><span class="crayon-h"> </span><span class="crayon-sy">}</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec82734628587-6"><span class="crayon-h"> </span><span class="crayon-sy">.</span><span class="crayon-e">build</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec82734628587-7"> </div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec82734628587-8"><span class="crayon-e">let </span><span class="crayon-v">results</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-st">try</span><span class="crayon-h"> </span><span class="crayon-v">query</span><span class="crayon-sy">.</span><span class="crayon-e">findWithScores</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec82734628587-9"><span class="crayon-st">for</span><span class="crayon-h"> </span><span class="crayon-e">result</span><span class="crayon-h"> </span><span class="crayon-st">in</span><span class="crayon-h"> </span><span class="crayon-e">results</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec82734628587-10"><span class="crayon-h"> </span><span class="crayon-e">print</span><span class="crayon-sy">(</span><span class="crayon-s">"City: <span class="crayon-sy">\</span><span class="crayon-sy">(</span><span class="crayon-v">result</span><span class="crayon-sy">.</span><span class="crayon-t">object</span><span class="crayon-sy">.</span><span class="crayon-v ">name</span><span class="crayon-sy">)</span>, distance: <span class="crayon-sy">\</span><span class="crayon-sy">(</span><span class="crayon-v">result</span><span class="crayon-sy">.</span><span class="crayon-v ">score</span><span class="crayon-sy">)</span>"</span><span class="crayon-sy">)</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec82734628587-11"><span class="crayon-sy">}</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-6742d9eeaec82734628587-12"> </div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0135 seconds] --> <p>The ObjectBox on-device vector database empowers AI models to seamlessly interact with user-specific data — like texts and images — directly on the device, without relying on an internet connection. With ObjectBox, data never needs to leave the device, ensuring data privacy. </p><p>Thus, it’s the perfect solution for developers looking to create smarter apps that are efficient and reliable in any environment. It enhances everything from personalized banking apps to robust automotive systems.</p><h2 class="wp-block-heading"><strong>ObjectBox: Optimized for Resource Efficiency</strong></h2><p>At ObjectBox, we specialize on efficiency that comes from optimized code. Our hearts beat for creating highly efficient and capable software that outperforms alternatives on small and big hardware. ObjectBox maximizes speed while minimizing resource use, extending battery life, and reducing CO<sub>2</sub> emissions.</p><p>With this expertise, we took a unique approach to vector search. The result is not only a vector database that runs efficiently on constrained devices but also one that outperforms server-side vector databases (<a href="https://objectbox.io/python-on-device-vector-and-object-database-for-local-ai/">see first benchmark results</a>; on-device benchmarks coming soon). We believe this is a significant achievement, especially considering that ObjectBox still upholds full ACID properties (guaranteeing data integrity).</p><figure class="wp-block-image aligncenter size-full"><img decoding="async" width="1488" height="920" src="https://objectbox.io/wordpress/wp-content/uploads/2024/07/vectorDatabases_local_server_edgeAI.png" alt="" class="wp-image-259106"/><figcaption class="wp-element-caption">Cloud/server vector databases vs. On-device/Edge vector databases</figcaption></figure><p>Also, keep in mind that ObjectBox is a fully capable database. It allows you to store complex data objects along with vectors. Thus, you have the full feature set of a database at hand. It empowers hybrid search, traceability, and powerful queries.</p><h2 class="wp-block-heading"><strong>Use Cases / App ideas</strong></h2><p>ObjectBox can be used for a million different things, from empowering generative AI features in mobile apps to predictive maintenance on ECUs in cars to AI-enhanced games. For iOS apps, we expect to see the following on-device AI use cases very soon:</p><ul><li>Across all categories we’ll see <strong>Chat-with-files</strong> apps:<ul><li><strong>Travel</strong>: Imagine chatting to your favorite <strong>travel </strong>guide offline, anytime, anywhere. No need to carry bulky paper books, or scroll through a long PDF on your mobile.</li> <li><strong>Research</strong>: Picture yourself chatting with all the research papers in your field. Easily compare studies and findings, and quickly locate original quotes.</li></ul></li> <li>Lifestyle:<ul><li><strong>Health:</strong> Apps offering personalized recommendations based on scientific research, your preferences, habits, and individual health data. This includes data tracked from your device, lab results, and doctoral diagnosis. </li></ul></li> <li>Productivity: <strong>Personal assistants</strong> for all areas of life.<ul><li><strong>Family Management:</strong> Interact with assistants tailored to specific roles. Imagine a parent’s assistant that monitors school channels, chat groups, emails, and calendars. Its goal is to automatically add events like school plays, remind you about forgotten gym bags, and even suggest birthday gifts for your child’s friends.</li> <li><strong>Professional Assistants:</strong> Imagine being a busy sales rep on the go, juggling appointments and travel. A powerful on-device sales assistant can do more than just automation. It can <strong>prepare contextual and personalized follow-ups instantly</strong>. For example, by summarizing talking points, attaching relevant company documents, and even suggesting who to CC in your emails.</li></ul></li> <li>Educational:<ul><li>Educational apps featuring “chat-with-your-files” functionality for learning materials and research papers. But going beyond that, they generate quizzes and practice questions to help people solidify knowledge.</li></ul></li></ul><h2 class="wp-block-heading"><strong>Run the local AI Stack with a Language Model</strong> (SLM, LLM)</h2><p>Recent Small Language Models (SMLs) already demonstrate impressive capabilities while being small enough to run on e.g. mobile phones. To run the model on-device of an iPhone or a macOS computer, you need a model runtime. On Apple Silicone the best choice in terms of performance typically <a href="https://github.com/ml-explore/mlx">MLX</a> – a framework brought to you by Apple machine learning research. It supports the hardware very efficiently by supporting CPU/GPU and unified memory.</p><p>To summarize, you need these three components to run on-device AI with an semantic index:</p><ul><li>ObjectBox: vector database for the semantic index</li> <li>Models: choose an embedding model and a language model to matching your requirements</li> <li>MLX as the model runtime</li></ul><p>Start building next generation on-device AI apps today! Head over to our <a href="https://docs.objectbox.io/on-device-vector-search">vector search documentation</a> and <a href="https://swift.objectbox.io/">Swift documentation</a> for details.</p></div> </div> </div> </div> </div> </div> </div> </div> <div class="et_post_meta_wrapper"> </div> </article> </div> </div> </div> </div> <script nitro-exclude> var heartbeatData = new FormData(); heartbeatData.append('nitroHeartbeat', '1'); fetch(location.href, {method: 'POST', body: heartbeatData, credentials: 'omit'}); </script> <script nitro-exclude> document.cookie = 'nitroCachedPage=' + (!window.NITROPACK_STATE ? '0' : '1') + '; path=/; SameSite=Lax'; </script> <span class="et_pb_scroll_top et-pb-icon"></span> <footer id="main-footer"> <div id="footer-bottom"> <div class="container clearfix"> <div id="footer-info">Ⓒ Copyright 2024 ObjectBox Limited. All rights reserved. | <a href="https://objectbox.io/wordpress/wp-content/uploads/2024/10/2024_10_23_Object-Box-Privacy-Notice.docx.pdf" target="_blank" rel="nofollow">Privacy notice</a> | <a href="https://objectbox.io/wordpress/wp-content/uploads/2024/10/ObjectBox-Terms-Of-UseAC2024.pdf" target="_blank" rel="nofollow">Terms of use & Imprint</a></div> </div> </div> </footer> </div> </div> </div> <script type='text/javascript'>( $ => { /** * Displays toast message from storage, it is used when the user is redirected after login */ if ( window.sessionStorage ) { $( window ).on( 'tcb_after_dom_ready', () => { const message = sessionStorage.getItem( 'tcb_toast_message' ); if ( message ) { tcbToast( sessionStorage.getItem( 'tcb_toast_message' ), false ); sessionStorage.removeItem( 'tcb_toast_message' ); } } ); } /** * Displays toast message * * @param {string} message - message to display * @param {Boolean} error - whether the message is an error or not * @param {Function} callback - callback function to be called after the message is closed */ function tcbToast( message, error, callback ) { /* Also allow "message" objects */ if ( typeof message !== 'string' ) { message = message.message || message.error || message.success; } if ( ! error ) { error = false; } TCB_Front.notificationElement.toggle( message, error ? 'error' : 'success', callback ); } } )( typeof ThriveGlobal === 'undefined' ? jQuery : ThriveGlobal.$j ); </script><style type="text/css" id="tve_notification_styles"></style> <div class="tvd-toast tve-fe-message" style="display: none"> <div class="tve-toast-message tve-success-message"> <div class="tve-toast-icon-container"> <span class="tve_tick thrv-svg-icon"></span> </div> <div class="tve-toast-message-container"></div> </div> </div> <script type='text/javascript'> (function () { var c = document.body.className; c = c.replace(/woocommerce-no-js/, 'woocommerce-js'); document.body.className = c; })(); </script> <!-- Start of HubSpot Embed Code --> <script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/3772993.js"></script> <!-- End of HubSpot Embed Code --><link rel='stylesheet' id='wc-blocks-style-css' href='https://objectbox.io/wordpress/wp-content/plugins/woocommerce/assets/client/blocks/wc-blocks.css?ver=wc-9.3.3' type='text/css' media='all' /> <link rel='stylesheet' id='urvanov_syntax_highlighter-css' href='https://objectbox.io/wordpress/wp-content/plugins/urvanov-syntax-highlighter/css/min/urvanov_syntax_highlighter.min.css?ver=2.8.34' type='text/css' media='all' /> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/plugins/divi-modules-table-maker/extensions/scripts/public-module-script-min.js?ver=3.1.2" id="dvmd-tm-public-module-script-js"></script> <script type="text/javascript" id="leadin-script-loader-js-js-extra"> /* <![CDATA[ */ var leadin_wordpress = {"userRole":"visitor","pageType":"post","leadinPluginVersion":"11.1.66"}; /* ]]> */ </script> <script type="text/javascript" src="https://js.hs-scripts.com/3772993.js?integration=WordPress&ver=11.1.66" id="leadin-script-loader-js-js"></script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/plugins/addons-for-divi/assets/libs/magnific-popup/magnific-popup.js?ver=4.0.5" id="divi-torque-lite-magnific-popup-js"></script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/plugins/addons-for-divi/assets/libs/slick/slick.min.js?ver=4.0.5" id="divi-torque-lite-slick-js"></script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/plugins/addons-for-divi/assets/libs/counter-up/counter-up.min.js?ver=4.0.5" id="divi-torque-lite-counter-up-js"></script> <script type="text/javascript" id="divi-torque-lite-frontend-js-extra"> /* <![CDATA[ */ var diviTorqueLiteFrontend = {"ajaxurl":"https:\/\/objectbox.io\/wordpress\/wp-admin\/admin-ajax.php"}; /* ]]> */ </script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/plugins/addons-for-divi/assets/js/frontend.js?ver=4.0.5" id="divi-torque-lite-frontend-js"></script> <script type="text/javascript" id="divi-custom-script-js-extra"> /* <![CDATA[ */ var DIVI = {"item_count":"%d Item","items_count":"%d Items"}; var et_builder_utils_params = {"condition":{"diviTheme":true,"extraTheme":false},"scrollLocations":["app","top"],"builderScrollLocations":{"desktop":"app","tablet":"app","phone":"app"},"onloadScrollLocation":"app","builderType":"fe"}; var et_frontend_scripts = {"builderCssContainerPrefix":"#et-boc","builderCssLayoutPrefix":"#et-boc .et-l"}; var et_pb_custom = {"ajaxurl":"https:\/\/objectbox.io\/wordpress\/wp-admin\/admin-ajax.php","images_uri":"https:\/\/objectbox.io\/wordpress\/wp-content\/themes\/Divi\/images","builder_images_uri":"https:\/\/objectbox.io\/wordpress\/wp-content\/themes\/Divi\/includes\/builder\/images","et_frontend_nonce":"5de0a110a2","subscription_failed":"Please, check the fields below to make sure you entered the correct information.","et_ab_log_nonce":"4645a079c6","fill_message":"Please, fill in the following fields:","contact_error_message":"Please, fix the following errors:","invalid":"Invalid email","captcha":"Captcha","prev":"Prev","previous":"Previous","next":"Next","wrong_captcha":"You entered the wrong number in captcha.","wrong_checkbox":"Checkbox","ignore_waypoints":"no","is_divi_theme_used":"1","widget_search_selector":".widget_search","ab_tests":[],"is_ab_testing_active":"","page_id":"259074","unique_test_id":"","ab_bounce_rate":"5","is_cache_plugin_active":"no","is_shortcode_tracking":"","tinymce_uri":"https:\/\/objectbox.io\/wordpress\/wp-content\/themes\/Divi\/includes\/builder\/frontend-builder\/assets\/vendors","accent_color":"#17a6a6","waypoints_options":[]}; var et_pb_box_shadow_elements = []; /* ]]> */ </script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/themes/Divi/js/scripts.min.js?ver=4.22.0" id="divi-custom-script-js"></script> <script type="text/javascript" id="tve-dash-frontend-js-extra"> /* <![CDATA[ */ var tve_dash_front = {"ajaxurl":"https:\/\/objectbox.io\/wordpress\/wp-admin\/admin-ajax.php","force_ajax_send":"1","is_crawler":"","recaptcha":[],"turnstile":[],"post_id":"259074"}; /* ]]> */ </script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/plugins/thrive-leads/thrive-dashboard/js/dist/frontend.min.js?ver=10.3" id="tve-dash-frontend-js"></script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/themes/Divi/includes/builder/feature/dynamic-assets/assets/js/jquery.fitvids.js?ver=4.22.0" id="fitvids-js"></script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-includes/js/comment-reply.min.js?ver=6.5.5" id="comment-reply-js" async="async" data-wp-strategy="async"></script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/themes/Divi/includes/builder/feature/dynamic-assets/assets/js/jquery.mobile.js?ver=4.22.0" id="jquery-mobile-js"></script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/themes/Divi/includes/builder/feature/dynamic-assets/assets/js/magnific-popup.js?ver=4.22.0" id="magnific-popup-js"></script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/themes/Divi/includes/builder/feature/dynamic-assets/assets/js/easypiechart.js?ver=4.22.0" id="easypiechart-js"></script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/themes/Divi/includes/builder/feature/dynamic-assets/assets/js/salvattore.js?ver=4.22.0" id="salvattore-js"></script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/plugins/divi-modules-table-maker/extensions/divi-4/scripts/frontend-bundle.min.js?ver=3.1.2" id="divi-modules-table-maker-frontend-bundle-js"></script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/plugins/woocommerce/assets/js/sourcebuster/sourcebuster.min.js?ver=9.3.3" id="sourcebuster-js-js"></script> <script type="text/javascript" id="wc-order-attribution-js-extra"> /* <![CDATA[ */ var wc_order_attribution = {"params":{"lifetime":1.0000000000000000818030539140313095458623138256371021270751953125e-5,"session":30,"base64":false,"ajaxurl":"https:\/\/objectbox.io\/wordpress\/wp-admin\/admin-ajax.php","prefix":"wc_order_attribution_","allowTracking":true},"fields":{"source_type":"current.typ","referrer":"current_add.rf","utm_campaign":"current.cmp","utm_source":"current.src","utm_medium":"current.mdm","utm_content":"current.cnt","utm_id":"current.id","utm_term":"current.trm","utm_source_platform":"current.plt","utm_creative_format":"current.fmt","utm_marketing_tactic":"current.tct","session_entry":"current_add.ep","session_start_time":"current_add.fd","session_pages":"session.pgs","session_count":"udata.vst","user_agent":"udata.uag"}}; /* ]]> */ </script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/plugins/woocommerce/assets/js/frontend/order-attribution.min.js?ver=9.3.3" id="wc-order-attribution-js"></script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/themes/Divi/core/admin/js/common.js?ver=4.22.0" id="et-core-common-js"></script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/plugins/divi-module-code-snippet/features/DBCSCopyToClipboardFeature/script.js?ver=1.4.4" id="dbcs-copy-to-clipboard-js"></script> <script type="text/javascript" id="urvanov_syntax_highlighter_js-js-extra"> /* <![CDATA[ */ var UrvanovSyntaxHighlighterSyntaxSettings = {"version":"2.8.34","is_admin":"0","ajaxurl":"https:\/\/objectbox.io\/wordpress\/wp-admin\/admin-ajax.php","prefix":"urvanov-syntax-highlighter-","setting":"urvanov-syntax-highlighter-setting","selected":"urvanov-syntax-highlighter-setting-selected","changed":"urvanov-syntax-highlighter-setting-changed","special":"urvanov-syntax-highlighter-setting-special","orig_value":"data-orig-value","debug":""}; var UrvanovSyntaxHighlighterSyntaxStrings = {"copy":"Copied to the clipboard","minimize":"Click To Expand Code"}; /* ]]> */ </script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/plugins/urvanov-syntax-highlighter/js/min/urvanov_syntax_highlighter.min.js?ver=2.8.34" id="urvanov_syntax_highlighter_js-js"></script> <script type="text/javascript" id="et-builder-modules-script-motion-js-extra"> /* <![CDATA[ */ var et_pb_motion_elements = {"desktop":[],"tablet":[],"phone":[]}; /* ]]> */ </script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/themes/Divi/includes/builder/feature/dynamic-assets/assets/js/motion-effects.js?ver=4.22.0" id="et-builder-modules-script-motion-js"></script> <script type="text/javascript" id="et-builder-modules-script-sticky-js-extra"> /* <![CDATA[ */ var et_pb_sticky_elements = {"et_pb_section_0_tb_header":{"id":"et_pb_section_0_tb_header","selector":".et_pb_section_0_tb_header","position":{"desktop":"top","tablet":"none","phone":"none"},"topOffset":"0px","bottomOffset":"0px","topLimit":"none","bottomLimit":"none","offsetSurrounding":"on","transition":"on","styles":{"module_alignment":{"desktop":"","tablet":"","phone":""},"positioning":"relative"},"stickyStyles":{"position_origin_r":"top_left","horizontal_offset":"","vertical_offset":""}}}; /* ]]> */ </script> <script type="text/javascript" src="https://objectbox.io/wordpress/wp-content/themes/Divi/includes/builder/feature/dynamic-assets/assets/js/sticky-elements.js?ver=4.22.0" id="et-builder-modules-script-sticky-js"></script> <script type="text/javascript">var tcb_current_post_lists=JSON.parse('[]'); var tcb_post_lists=tcb_post_lists?[...tcb_post_lists,...tcb_current_post_lists]:tcb_current_post_lists;</script><script type="text/javascript">/*<![CDATA[*/if ( !window.TL_Const ) {var TL_Const={"security":"f4512e0ff7","ajax_url":"https:\/\/objectbox.io\/wordpress\/wp-admin\/admin-ajax.php","forms":[],"action_conversion":"tve_leads_ajax_conversion","action_impression":"tve_leads_ajax_impression","ajax_load":0,"main_group_id":30848,"display_options":{"allowed_post_types":[],"flag_url_match":false},"custom_post_data":[],"current_screen":{"screen_type":4,"screen_id":259074},"ignored_fields":["email","_captcha_size","_captcha_theme","_captcha_type","_submit_option","_use_captcha","g-recaptcha-response","__tcb_lg_fc","__tcb_lg_msg","_state","_form_type","_error_message_option","_back_url","_submit_option","url","_asset_group","_asset_option","mailchimp_optin","tcb_token","tve_labels","tve_mapping","_api_custom_fields","_sendParams","_autofill"]};} else { window.TL_Front && TL_Front.extendConst && TL_Front.extendConst({"security":"f4512e0ff7","ajax_url":"https:\/\/objectbox.io\/wordpress\/wp-admin\/admin-ajax.php","forms":[],"action_conversion":"tve_leads_ajax_conversion","action_impression":"tve_leads_ajax_impression","ajax_load":0,"main_group_id":30848,"display_options":{"allowed_post_types":[],"flag_url_match":false},"custom_post_data":[],"current_screen":{"screen_type":4,"screen_id":259074},"ignored_fields":["email","_captcha_size","_captcha_theme","_captcha_type","_submit_option","_use_captcha","g-recaptcha-response","__tcb_lg_fc","__tcb_lg_msg","_state","_form_type","_error_message_option","_back_url","_submit_option","url","_asset_group","_asset_option","mailchimp_optin","tcb_token","tve_labels","tve_mapping","_api_custom_fields","_sendParams","_autofill"]})} /*]]> */</script><style id="et-builder-module-design-tb-256727-259074-cached-inline-styles">.et_pb_section_0_tb_header{border-bottom-width:1px;margin-bottom:-11px;z-index:10;box-shadow:0px 2px 18px 0px rgba(0,0,0,0.1)}.et_pb_section_0_tb_header.et_pb_section{padding-top:0px;padding-bottom:0px;background-color:#1B1815!important}.et_pb_sticky.et_pb_section_0_tb_header{box-shadow:0px 2px 18px 0px rgba(0,0,0,0.1);box-shadow:0px 5px 80px rgba(0,0,0,0.1)!important}.et_pb_row_0_tb_header:before{@media only screen and (min-width:981px){.et_pb_column_0{width:15%!important}.et_pb_column_1{width:15%!important}.et_pb_column_2{width:40%!important}.et_pb_column_3{width:15%!important}.et_pb_column_4{width:15%!important}}}.et_pb_row_0_tb_header{display:flex;align-items:center;flex-wrap:wrap}.et_pb_code_0_tb_header,.et_pb_code_1_tb_header{padding-top:0px;padding-bottom:0px;margin-top:0px!important;margin-bottom:0px!important}.et_pb_menu_0_tb_header.et_pb_menu ul li a{font-weight:500;font-size:15px;color:#ffffff!important}.et_pb_menu_0_tb_header.et_pb_menu{background-color:rgba(0,0,0,0)}.et_pb_menu_0_tb_header .et_pb_menu__logo-wrap .et_pb_menu__logo img{border-top-color:#1B1815;width:auto}.et_pb_menu_0_tb_header{padding-top:10px;padding-right:0px;margin-right:840px!important;margin-bottom:0px!important}.et_pb_menu_0_tb_header.et_pb_menu .et-menu-nav li ul.sub-menu{border-width:2px;border-radius:5px;left:auto!important;padding:0;right:0;width:200px}.et_pb_menu_0_tb_header.et_pb_menu .et-menu-nav li ul.sub-menu a{padding:12px 20px}.et_pb_menu_0_tb_header.et_pb_menu .et_pb_menu__logo{margin-bottom:10px}.et_pb_menu_0_tb_header.et_pb_menu ul li.current-menu-item a{color:#ffffff!important}.et_pb_menu_0_tb_header.et_pb_menu .nav li ul{background-color:#393939!important;border-color:#ffffff}.et_pb_menu_0_tb_header.et_pb_menu .et_mobile_menu{border-color:#ffffff}.et_pb_menu_0_tb_header.et_pb_menu .nav li ul.sub-menu a,.et_pb_menu_0_tb_header.et_pb_menu .et_mobile_menu a{color:#F7F7F7!important}.et_pb_menu_0_tb_header.et_pb_menu .nav li ul.sub-menu li.current-menu-item a{color:#17A6A6!important}.et_pb_menu_0_tb_header.et_pb_menu .et_mobile_menu,.et_pb_menu_0_tb_header.et_pb_menu .et_mobile_menu ul{background-color:#383838!important}.et_pb_menu_0_tb_header .et_pb_menu_inner_container>.et_pb_menu__logo-wrap,.et_pb_menu_0_tb_header .et_pb_menu__logo-slot{width:auto;max-width:100%}.et_pb_menu_0_tb_header .et_pb_menu_inner_container>.et_pb_menu__logo-wrap .et_pb_menu__logo img,.et_pb_menu_0_tb_header .et_pb_menu__logo-slot .et_pb_menu__logo-wrap img{height:35px;max-height:none}.et_pb_menu_0_tb_header .mobile_nav .mobile_menu_bar:before{color:#ffffff}.et_pb_menu_0_tb_header .et_pb_menu__icon.et_pb_menu__search-button,.et_pb_menu_0_tb_header .et_pb_menu__icon.et_pb_menu__close-search-button,.et_pb_menu_0_tb_header .et_pb_menu__icon.et_pb_menu__cart-button{color:#17a6a6}.et_pb_button_0_tb_header_wrapper .et_pb_button_0_tb_header,.et_pb_button_0_tb_header_wrapper .et_pb_button_0_tb_header:hover{padding-top:9px!important;padding-right:10px!important;padding-bottom:9px!important;padding-left:29px!important}.et_pb_button_0_tb_header_wrapper{margin-top:4px!important;margin-right:7px!important;margin-bottom:0px!important}body #page-container .et_pb_section .et_pb_button_0_tb_header{color:#BCBCBC!important;border-width:0px!important;border-color:RGBA(255,255,255,0);border-radius:8px;letter-spacing:0px;font-size:14px;background-color:RGBA(255,255,255,0)}body #page-container .et_pb_section .et_pb_button_0_tb_header:hover{color:#ffffff!important;border-color:#17A6A6!important;border-width:1px!important;background-image:initial;background-color:RGBA(255,255,255,0)}body #page-container .et_pb_section .et_pb_button_0_tb_header:after{display:none}body #page-container .et_pb_section .et_pb_button_0_tb_header:before{content:attr(data-icon);font-family:FontAwesome!important;font-weight:400!important;color:#F7F7F7;line-height:inherit;font-size:inherit!important;opacity:1;margin-left:-1.3em;right:auto;display:inline-block;font-family:FontAwesome!important;font-weight:400!important}body #page-container .et_pb_section .et_pb_button_0_tb_header:hover:before{margin-left:.3em;right:auto;margin-left:-1.3em}.et_pb_button_0_tb_header,.et_pb_button_1_tb_header{transition:color 300ms ease 0ms,background-color 300ms ease 0ms,border 300ms ease 0ms}.et_pb_button_0_tb_header,.et_pb_button_0_tb_header:after,.et_pb_button_1_tb_header,.et_pb_button_1_tb_header:after{transition:all 300ms ease 0ms}.et_pb_button_1_tb_header_wrapper .et_pb_button_1_tb_header,.et_pb_button_1_tb_header_wrapper .et_pb_button_1_tb_header:hover{padding-top:7px!important;padding-right:21px!important;padding-bottom:7px!important;padding-left:21px!important}.et_pb_button_1_tb_header_wrapper{margin-top:5px!important;margin-bottom:0px!important}body #page-container .et_pb_section .et_pb_button_1_tb_header{color:#F7F7F7!important;border-width:1px!important;border-color:#17A6A6;border-radius:8px;letter-spacing:0px;font-size:15px;background-image:linear-gradient(195deg,#17a6a6 24%,#006e70 100%);background-color:RGBA(255,255,255,0)}body #page-container .et_pb_section .et_pb_button_1_tb_header:hover{color:#ffffff!important;border-color:#23ffec!important;background-image:linear-gradient(195deg,#1cdddd 0%,#129694 100%);background-color:#ffffff}body #page-container .et_pb_section .et_pb_button_1_tb_header:before,body #page-container .et_pb_section .et_pb_button_1_tb_header:after{display:none!important}.et_pb_row_0_tb_header.et_pb_row{padding-top:0px!important;padding-bottom:0px!important;margin-left:auto!important;margin-right:auto!important;padding-top:0px;padding-bottom:0px}.et_pb_menu_0_tb_header.et_pb_module{margin-left:auto!important;margin-right:auto!important}@media only screen and (min-width:981px){.et_pb_row_0_tb_header,body #page-container .et-db #et-boc .et-l .et_pb_row_0_tb_header.et_pb_row,body.et_pb_pagebuilder_layout.single #page-container #et-boc .et-l .et_pb_row_0_tb_header.et_pb_row,body.et_pb_pagebuilder_layout.single.et_full_width_page #page-container #et-boc .et-l .et_pb_row_0_tb_header.et_pb_row{width:95%}.et_pb_column_1_tb_header{display:flex;justify-content:flex-end}}@media only screen and (max-width:980px){.et_pb_section_0_tb_header{border-bottom-width:1px}.et_pb_row_0_tb_header,body #page-container .et-db #et-boc .et-l .et_pb_row_0_tb_header.et_pb_row,body.et_pb_pagebuilder_layout.single #page-container #et-boc .et-l .et_pb_row_0_tb_header.et_pb_row,body.et_pb_pagebuilder_layout.single.et_full_width_page #page-container #et-boc .et-l .et_pb_row_0_tb_header.et_pb_row,.et_pb_button_0_tb_header,.et_pb_button_1_tb_header{width:100%}.et_pb_column_0_tb_header{order:2;margin-bottom:0}.et_pb_menu_0_tb_header .et_pb_menu__logo-wrap .et_pb_menu__logo img{border-top-color:#1B1815}.et_pb_menu_0_tb_header{padding-top:10px;padding-right:0px;padding-bottom:0px;width:80%}.et_pb_column_1_tb_header{order:1}.et_pb_button_0_tb_header_wrapper{margin-right:0px!important}body #page-container .et_pb_section .et_pb_button_0_tb_header,body #page-container .et_pb_section .et_pb_button_1_tb_header{border-radius:0px}body #page-container .et_pb_section .et_pb_button_0_tb_header:before{line-height:inherit;font-size:inherit!important;margin-left:-1.3em;right:auto;display:inline-block;opacity:1;content:attr(data-icon);font-family:FontAwesome!important;font-weight:400!important}body #page-container .et_pb_section .et_pb_button_0_tb_header:after{display:none}body #page-container .et_pb_section .et_pb_button_0_tb_header:hover:before{margin-left:.3em;right:auto;margin-left:-1.3em}}@media only screen and (min-width:768px) and (max-width:980px){.et_pb_button_0_tb_header,.et_pb_button_1_tb_header{display:none!important}}@media only screen and (max-width:767px){.et_pb_section_0_tb_header{border-bottom-width:1px}.et_pb_column_0_tb_header{order:2;margin-bottom:0}.et_pb_menu_0_tb_header .et_pb_menu__logo-wrap .et_pb_menu__logo img{border-top-color:#1B1815}.et_pb_menu_0_tb_header{width:90%}.et_pb_column_1_tb_header{order:1}body #page-container .et_pb_section .et_pb_button_0_tb_header:before{line-height:inherit;font-size:inherit!important;margin-left:-1.3em;right:auto;display:inline-block;opacity:1;content:attr(data-icon);font-family:FontAwesome!important;font-weight:400!important}body #page-container .et_pb_section .et_pb_button_0_tb_header:after{display:none}body #page-container .et_pb_section .et_pb_button_0_tb_header:hover:before{margin-left:.3em;right:auto;margin-left:-1.3em}.et_pb_button_0_tb_header,.et_pb_button_1_tb_header{width:100%;display:none!important}}.et_pb_row_0:before{@media only screen and (min-width:981px){.et_pb_column_0{width:15%!important}.et_pb_column_1{width:15%!important}.et_pb_column_2{width:40%!important}.et_pb_column_3{width:15%!important}.et_pb_column_4{width:15%!important}}}.ba_logo_grid_child_0 .dtq-logo-grid__item,.ba_logo_grid_child_1 .dtq-logo-grid__item,.ba_logo_grid_child_2 .dtq-logo-grid__item,.ba_logo_grid_child_3 .dtq-logo-grid__item,.ba_logo_grid_child_4 .dtq-logo-grid__item,.ba_logo_grid_child_5 .dtq-logo-grid__item,.ba_logo_grid_child_6 .dtq-logo-grid__item,.ba_logo_grid_child_7 .dtq-logo-grid__item,.ba_logo_grid_child_8 .dtq-logo-grid__item{background-color:#e2e5ed!important;padding-top:50px!important;padding-right:50px!important;padding-bottom:50px!important;padding-left:50px!important}</style> <!-- Cookie Notice plugin v2.4.18 by Hu-manity.co https://hu-manity.co/ --> <div id="cookie-notice" role="dialog" class="cookie-notice-hidden cookie-revoke-hidden cn-position-top" aria-label="Cookie Notice" style="background-color: rgba(50,50,58,1);"><div class="cookie-notice-container" style="color: #fff"><span id="cn-notice-text" class="cn-text-container">We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it.</span><span id="cn-notice-buttons" class="cn-buttons-container"><a href="#" id="cn-accept-cookie" data-cookie-set="accept" class="cn-set-cookie cn-button cn-button-custom button" aria-label="Ok">Ok</a></span><span id="cn-close-notice" data-cookie-set="accept" class="cn-close-icon" title="No"></span></div> </div> <!-- / Cookie Notice plugin --> <span class="et_pb_scroll_top et-pb-icon"></span> </body> </html>