From 0ec997c6da17f716f6b86c3181266edc0c7b26b0 Mon Sep 17 00:00:00 2001 From: magixlex Date: Wed, 29 May 2024 10:39:42 +0300 Subject: [PATCH 1/2] blog post "OpenSearch in Hopsworks" + Authors Signed-off-by: magixlex --- _community_members/jimdowling.md | 25 +++++++ _community_members/lexavstreikh.md | 25 +++++++ ...archable-ml-metadata-to-empowering-llms.md | 69 ++++++++++++++++++ assets/media/community/members/jimdowling.jpg | Bin 0 -> 33042 bytes .../media/community/members/lexavstreikh.jpg | Bin 0 -> 32961 bytes 5 files changed, 119 insertions(+) create mode 100644 _community_members/jimdowling.md create mode 100644 _community_members/lexavstreikh.md create mode 100644 _posts/2024-05-29-opensearch-in-hopsworks-from-searchable-ml-metadata-to-empowering-llms.md create mode 100644 assets/media/community/members/jimdowling.jpg create mode 100644 assets/media/community/members/lexavstreikh.jpg diff --git a/_community_members/jimdowling.md b/_community_members/jimdowling.md new file mode 100644 index 0000000000..e304f77894 --- /dev/null +++ b/_community_members/jimdowling.md @@ -0,0 +1,25 @@ +--- +name: Jim Dowling +short_name: jimdowling +photo: '/assets/media/community/members/jimdowling.jpg' +title: 'OpenSearch Community Member: Jim Dowling' +primary_title: Jim Dowling +breadcrumbs: + icon: community + items: + - title: Community + url: /community/index.html + - title: Members + url: /community/members/index.html + - title: 'Jim Dowling's Profile' + url: '/community/members/jim-downling.html' +github: 'jimdowling' +linkedin: 'jim-dowling-206a98' +job_title_and_company: 'CEO and Co-Founder of Hopsworks' +personas: + - author +permalink: '/community/members/jim-dowling.html' +redirect_from: '/authors/jimdowling/' +--- + +**Jim Dowling** Jim Dowling is CEO of Hopsworks and an Associate Professor at KTH Royal Institute of Technology. He is a co-inventor of the open-source Hopsworks Feature Store platform, is the organizer of featurestore.org, and develops a free online course on Serverless Machine Learning. \ No newline at end of file diff --git a/_community_members/lexavstreikh.md b/_community_members/lexavstreikh.md new file mode 100644 index 0000000000..d474ab5a32 --- /dev/null +++ b/_community_members/lexavstreikh.md @@ -0,0 +1,25 @@ +--- +name: Lex Avstreikh +short_name: lexavstreikh +photo: '/assets/media/community/members/lexavstreikh.jpg' +title: 'OpenSearch Community Member: Lex Avstreikh' +primary_title: Lex Avstreikh +breadcrumbs: + icon: community + items: + - title: Community + url: /community/index.html + - title: Members + url: /community/members/index.html + - title: 'Lex Avstreikh's Profile' + url: '/community/members/lex-avstreikh.html' +github: 'MagicLex' +linkedin: 'magiclex' +job_title_and_company: 'Head of Strategy at Hopsworks' +personas: + - author +permalink: '/community/members/lex-avstreikh.html' +redirect_from: '/authors/lexavstreikh/' +--- + +**Lex Avstreikh** Creative Director and expert in product and strategy, Lex Avstreikh works as the Head of Strategy at Hopsworks; a Swedish startup at the forefront of machine learning infrastructure for enterprises. \ No newline at end of file diff --git a/_posts/2024-05-29-opensearch-in-hopsworks-from-searchable-ml-metadata-to-empowering-llms.md b/_posts/2024-05-29-opensearch-in-hopsworks-from-searchable-ml-metadata-to-empowering-llms.md new file mode 100644 index 0000000000..b3a5f504cf --- /dev/null +++ b/_posts/2024-05-29-opensearch-in-hopsworks-from-searchable-ml-metadata-to-empowering-llms.md @@ -0,0 +1,69 @@ +--- +layout: post +title: "OpenSearch in Hopsworks: From Searchable ML Metadata to Empowering LLMs" +authors: + - jimdowling + - lexavstreikh +date: 2024-05-30 +categories: + - technical-post + - partners +meta_keywords: Hopsworks, OpenSearch, Machine Learning, ML Metadata, Feature Store, AI lakehouse, LLMs, Free-Text Search, RAG, Retrieval-Augmented Generation, Vector Database, ML Asset Governance, k-NN Plugin, Multi-Tenancy +meta_description: Explore how Hopsworks integrates OpenSearch for ML asset search, metadata governance, and LLM capabilities, enhancing ML pipelines with free-text search, vector databases, and multi-tenant security. + +--- + +[Hopsworks](https://www.hopsworks.ai/) is an AI lakehouse; an ML platform for batch and real-time data. In this article, we outline our journey with OpenSearch starting from the search capabilities for ML Assets (features, training data, models) to empowering LLM use cases. + +## From Free-Text Search to RAG for LLMs + +Hopsworks is an operational platform for ML that enables organizations to easily build and operate ML systems using ML pipelines: feature pipelines, training pipelines and inference pipelines. A key capability of the platform is to enable developers to [discover and reuse available features](https://www.hopsworks.ai/post/feature-store-the-missing-data-layer-in-ml-pipelines), so as not to re-implement a feature pipeline. + +To enforce the principles of [FAIR](https://www.hopsworks.ai/post/fair-principles-in-data-for-ai) (Findable Accessible Interoperable Reusable) within the platform we decided early on to empower our users with the ability to search all the metadata and assets in their project, and made the choice to integrate with OpenSearch. + +This prove to be a wise decision as the rise of LLMs in the field of AI took hold and the Hopsworks team saw the opportunity to extend OpenSearch to a more central role as part of the feature store; making it the underlying engine for embeddings as features, empowering the new LLM capabilities and coupling them with the rest of the Hopsworks state-of-the-art suite. + +## First, There Was Free-Text Search for ML Assets + +[Free-text search for the ML assets](https://docs.hopsworks.ai/3.2/user_guides/fs/tags/tags/#step-3-search) in Hopsworks, was one of the first use cases powered by OpenSearch in the platform. As the number of ML assets grows within an organization, free-text search becomes increasingly important to enable developers to easily discover and reuse ML assets. For example, the reuse of features in multiple models can lead to huge cost savings in both the development and operation of ML systems. + +
+ Search in Hopsworks +

Discovering and reusing features across models removes the need to rewrite feature logic, reducing model development time. OpenSearch Engine powers feature and model discovery in Hopsworks.

+
+ +| ML Asset | What is it? | OpenSearch Metadata | +|--------------|--------------------------------------|--------------------------------------------| +| Feature | Input data for models | Name, description | +| Feature Group| Mutable table of features | Name, description, version, custom tags | +| Feature View | Interface for one or more models | Name, description, version, custom tags | +| Training Data| Consistent snapshot of feature data | Name, description, version, custom tags | +| Models | File containing serialized ML model | Name, description, version, custom tags | + +Additionally, [Schematized Tags](https://docs.hopsworks.ai/3.7/user_guides/fs/tags/tags/#tags) are also important for governance in ML systems, and important to be searchable as well. The governance of machine learning assets requires not only strict management policies but also the right tools. With OpenSearch, Hopsworks helps users understand the properties and constraints of their ML assets, making the governance of these ML assets more seamless and efficient. For example, you can use lineage in Hopsworks in combination with tags to find all models that were trained with PII data, and then correctly label all models as having been trained on PII data. + +## Enabling RAG for LLMs with OpenSearch + +As a ML platform, [Hopsworks also makes OpenSearch k-NN plugin](https://www.youtube.com/watch?v=9vBRjGgdyTY&t=2s) available as a [vector database](https://opensearch.org/platform/search/vector-database.html). ML embedding models encode semantic information in content (documents, images, and audio) into vectors. Those vectors can be stored and indexed in OpenSearch, and then clients can search for similar content, enabling media search and personalized search/recommendations. This capability powered by OpenSearch within the platform makes the feature store a one stop shop for all the AI data within an organization. + +Approximate nearest neighbor (ANN) indexing and vector similarity search for vector embeddings stored in the feature store is a keystone to enable LLMs for organizations; combining their enterprise data for AI with similarity search, allowing users to make better recommendation systems, fine-tune datasets and RAG solutions more easily, faster. +div> + +
+ Search in Hopsworks +

Feature Group Shared Schema, from GenAI Capability Blog post at Hopsworks

+
+ +This addition of OpenSearch as a core component of the feature store allows organizations to build a more open, more flexible and better data for AI infrastructure that can work for a wider range of use cases, may they be real-time or LLMs. + +## There is More; The Value Add for Teams and the Platform + +In Hopsworks, OpenSearch also allows users to quickly find and repurpose features, reducing the time spent on manual searching and accelerating the model development process. Without OpenSearch, key tasks such as feature discovery, feature auditing, and feature expiration would be considerably more complex or even impossible. OpenSearch efficiently indexes metadata and tags, enabling low-latency, scalable free-text search for ML assets. OpenSearch can also scale out horizontally, and provides Enterprise-grade security and operations, including backup and upgrade. + +## Project-level multi-tenancy for OpenSearch Indexes + +Hopsworks supports projects as a security domain, implementing [project-level multi-tenancy](https://www.hopsworks.ai/post/how-we-secure-your-data-with-hopsworks#:~:text=Hopsworks%20and%20OpenSearch%20use%20JWT,indexes%20owned%20by%20the%20project.), where jobs run in Hopsworks by a user only have privileges to access resources within that project. This project-level security boundary implements dynamic role-based access control - even if a user is a member of multiple projects, jobs will only have privileges to access the resources with the current project. Hopsworks supports resources such as feature groups, files, directories, and Kafka topics. Hopsworks adds project-level multi-tenancy for OpenSearch indexes by enforcing access control to indexes based on project membership in Hopsworks. This enables indexes that are private to the members of a project. For example, each project can have its own private OpenSearch-KNN vector database or search index that is accessible programmatically by jobs in that project. + +## Summary + +OpenSearch provides core metadata indexing and search capabilities that are leveraged by Hopsworks to provide ML asset search and governance capabilities. Hopsworks also extends its ML capabilities with OpenSearch as a vector database, and makes OpenSearch available as a multi-tenant resource in Hopsworks projects. diff --git a/assets/media/community/members/jimdowling.jpg b/assets/media/community/members/jimdowling.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bdda990f51e328339e65d16bb90130d362d15296 GIT binary patch literal 33042 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 @~oRNv+KPUI=Y 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 ZSBimnsF$c0XaroLRJhXa(970<|Ji?zTQ2|r literal 0 HcmV?d00001 diff --git a/assets/media/community/members/lexavstreikh.jpg b/assets/media/community/members/lexavstreikh.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3da59f56913b126565df5711930946fe725d287e GIT binary patch literal 32961 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 Vdeg+I?nG^Y;wtg>XV3p_{2v8xN)`YB literal 0 HcmV?d00001 From 23a0c24100c89100e34eff36d53d4b1a2b3cf270 Mon Sep 17 00:00:00 2001 From: MagicLex <64143547+MagicLex@users.noreply.github.com> Date: Mon, 26 Aug 2024 13:58:02 +0200 Subject: [PATCH 2/2] Update 2024-05-29-opensearch-in-hopsworks-from-searchable-ml-metadata-to-empowering-llms.md Updated Enabling RAG section. --- ...hopsworks-from-searchable-ml-metadata-to-empowering-llms.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/_posts/2024-05-29-opensearch-in-hopsworks-from-searchable-ml-metadata-to-empowering-llms.md b/_posts/2024-05-29-opensearch-in-hopsworks-from-searchable-ml-metadata-to-empowering-llms.md index b3a5f504cf..e48a110b53 100644 --- a/_posts/2024-05-29-opensearch-in-hopsworks-from-searchable-ml-metadata-to-empowering-llms.md +++ b/_posts/2024-05-29-opensearch-in-hopsworks-from-searchable-ml-metadata-to-empowering-llms.md @@ -46,8 +46,9 @@ Additionally, [Schematized Tags](https://docs.hopsworks.ai/3.7/user_guides/fs/ta As a ML platform, [Hopsworks also makes OpenSearch k-NN plugin](https://www.youtube.com/watch?v=9vBRjGgdyTY&t=2s) available as a [vector database](https://opensearch.org/platform/search/vector-database.html). ML embedding models encode semantic information in content (documents, images, and audio) into vectors. Those vectors can be stored and indexed in OpenSearch, and then clients can search for similar content, enabling media search and personalized search/recommendations. This capability powered by OpenSearch within the platform makes the feature store a one stop shop for all the AI data within an organization. +It is important to note that OpenSearch's search capabilities extend beyond vector search, offering a suite of complementary technologies that work in tandem to provide superior search results. And while vector similarity search is crucial for LLM applications, OpenSearch power also lies in its ability to implement hybrid search strategies. By combining semantic search with traditional search methods, organizations can create more effective RAG solutions. This flexibility in methodologies can enhance the effectiveness of RAG applications, allowing for more comprehensive and accurate retrieval of relevant information. + Approximate nearest neighbor (ANN) indexing and vector similarity search for vector embeddings stored in the feature store is a keystone to enable LLMs for organizations; combining their enterprise data for AI with similarity search, allowing users to make better recommendation systems, fine-tune datasets and RAG solutions more easily, faster. -div>
Search in Hopsworks