Skip to content

Commit

Permalink
Merge pull request #1 from theam/feature/update-intro
Browse files Browse the repository at this point in the history
Feature: Update intro
  • Loading branch information
adrian-lorenzo authored Jul 21, 2023
2 parents 8ac137a + 73d51a9 commit 8406ebb
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 16 deletions.
44 changes: 28 additions & 16 deletions website/docs/01_introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,31 @@ slug: /
---
# Introduction

The ***eLLMental*** project was born out of the need for developers to have **a single toolset that combines flexibility,
efficiency, and productivity** while building AI-driven applications. As a team specializing in AI product development,
we've started to find recurrent challenges that motivated us to start building this project:

1. :hammer_and_wrench: **Lack of Robust Tools and Libraries:** As the field is relatively new, there's a shortage of high-quality production-ready
tools that help developers to iterate quickly at a certain scale.
2. :brain: **MLOps management:** There are no "single click" MLOps solutions that let developers start working on their applications
fast without investing a significant amount of time.
3. :lock: **Security**: Ensuring minimal security standards of the underlying infrastructure, including network security,
firewall configurations, and container security, is a major challenge.
4. :key: **Privacy:** It's unclear how privacy is handled when using models through an API provided by a startup.
5. :jigsaw: **Dependency to the Python stack:** Most existing tools were designed by and for data scientists that use Python as
their default go-to programming language, but most production apps, especially in the enterprise world, use JVM or .Net based stacks. This affects the language used, tooling and configuration management.

Overall, ***eLLMental*** is designed to help software engineers efficiently build AI-driven applications by
**removing all common headaches while integrating AI into your development environment.**
eLLMental is a project that aims to **create an open-source toolkit that provides pluggable, modular and minimalistic utilities and services** to create **production-ready AI applications.**

Its objective is to create an ecosystem of specific and finished components that enable:

- **Direct production usage**, with minimal/zero programmatic intervention.
- **Flexible configuration** capabilities if needed.
- **Effective cost of replacement** thanks to its modularity.
- **Seamless interconnection** between modules.

## Why not use other tools of the market (Langchain, ChromaDB, Pinecone, etc.)?

This initiative started when we were developing use cases for our own clients. We tried using the tools and utilities available at the moment to achieve our objectives, but they weren’t good for us so we had to discard them.

Because of that, we decided to build our own solution with these core principles in mind:

1. **Creating functional solutions that don’t sacrifice flexibility**: Many existing solutions were not adaptable enough and introduced unnecessary complexity. They relied on specific, non-configurable prompts and required additional programming and integration. While we advocate opinionated approaches, we prefer smaller, fully functional pieces that are easy to use and allow for proper configuration when necessary.

2. **Reliability from the start**: On many libraries, we encountered critical bugs when building our production use cases. Due to the lack of configuration options and our need for fast development, we decided to build components that were simpler, easier to trace and debug and with escape hatches to allow configuration when a core maintainer can’t handle your ticket.

3. **Modular, pluggable and decoupled architecture**: Some tools provided a great and fast experience. However, they were very coupled to specific providers and didn’t have room for integrating others. We want to create an ecosystem of tools that enable modularity and pluggability, so our teams can change pieces of the whole puzzle without a huge toll on development resources.

## What can I do with eLLMental now?

eLLMental.py aims to provide a series of ready-to-use and production-ready services that you can deploy in your Kubernetes cluster and start adding powerful AI features to your existing products right away.

This repository provides the Alpha version of the first of these services: **a semantic search service** that will be able to learn the semantics of your data and provide powerful semantic search functionality.

It works as an **independent service with a REST API**, so you can use the eLLMental semantic search service from any programming language with very simple integration.
16 changes: 16 additions & 0 deletions website/docs/03_semantic_search/03_semantic_search.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,22 @@ Semantic search is the ability to search any document by its meaning or intent,

Up to now, the most common way to search for information is by using keywords. Semantic search adds a new layer of understanding to the search process so that the results are more relevant to what the user is looking for. Users no longer have to worry about using the right keywords to find what they are looking for. Instead, they can simply type in a question or phrase and get back relevant results.

## What can I do with a semantic search service?

A semantic search service is like a super-smart search engine. Instead of just looking for exact word matches, it tries to understand what you really mean when you type in a search. It does this by figuring out the context of words and understanding synonyms. This way, it can give you more relevant and personalized results.

You can use a semantic search for a huge variety of use cases. These are some of them:

- **Empowering Large Language Models (LLMs) with Factual Grounding**: Semantic search can dramatically enhance the performance of Large Language Models for specific use cases, ensuring quality, accuracy, and relevance of the outputs of the model by injecting context and therefore, reducing its scope.

- **Revolutionizing End-user Search Tools**: Semantic search can redefine how end-users navigate data. From trawling through intricate websites to decoding comprehensive codebases or databases, semantic search equips users to query textual data in ways previously unimaginable, enhancing the overall user experience.

- **Optimizing Content Recommendation Systems**: Leveraging semantic search, recommendation systems can understand the deep-seated interests and preferences of users, facilitating the generation of highly personalized content suggestions. This can significantly augment user engagement and satisfaction, whether it's for recommending movies, books, or even shopping items.

- **Augmenting Customer Support Services**: Semantic search can be employed to transform customer service platforms. By understanding the customer's intent and context, it can assist in providing quicker and more accurate responses, reducing response times, and improving customer satisfaction.

- **Enhancing Social Media Monitoring**: By decoding the semantic meaning behind social media posts, businesses can gain insightful understanding into customer sentiment, trends, and preferences. This can be pivotal in designing marketing strategies, improving brand image, and providing proactive customer service.

## How does it work?

To perform a semantic search, we need a way to get how similar a piece of text to a query. In other words, we need to compare the meaning of some text and how related it is to a question. We cant perform calculations on words, just numbers. However, there is a way to generate a vector that represents the meaning of a piece of text. This vector representation is called an embedding. This transformation is usually done by a neural network trained for this kind of task. This vector is then compared to other vectors to find similar documents.
Expand Down

0 comments on commit 8406ebb

Please sign in to comment.