Embed anything at lightning speed
Project description
Framework for building local and multimodal embeddings built in Rust 🦀
EmbedAnything is a powerful python library designed to streamline the creation and management of embedding pipelines. Whether you're working with text, images, audio, or any other type of data., EmbedAnything makes it easy to generate embeddings from multiple sources and store them efficiently in a vector database.
🦀The Benefit of Rust for Speed
By using Rust for its core functionalities, EmbedAnything offers significant speed advantages: Rust is Compiled: Unlike Python, Rust compiles directly to machine code, resulting in faster execution. Memory Management: Rust enforces memory management simultaneously, preventing memory leaks and crashes that can plague other languages. Rust achieves true multithreading.
🚀Why Candle?...
Running language models or embedding models locally can be difficult, especially when you want to deploy a product that utilizes these models. If you use the transformers library from Hugging Face in Python, you will depend on PyTorch for tensor operations. This, in turn, has a dependency on Libtorch, which means that you will need to include the entire Libtorch library with your product. Also, Candle allows inferences on CUDA-enabled GPUs right out of the box. We will soon post on how we use Candle to increase the performance and decrease the memory usage of EmbedAnything.
Examples
🚀 Key Features
- Local Embedding Works with local embedding models like AllminiLM
- MultiModality Works with text and image and will soon expand to audio
- Python Interface: Packaged as a Python library for seamless integration into your existing projects.
- Efficient: Optimized for speed and performance, with core functionality written in Rust.
- Scalable: Store embeddings in a vector database for easy retrieval and scalability.
- OpenAI Works with openai as well
💚 Installation
pip install embed-anything
🧑🚀 Getting Started
For local models
To use local embedding: we support Bert and Jina
import embed_anything
data = embed_anything.embed_file("filename.pdf", embeder= "Bert")
embeddings = np.array([data.embedding for data in data])
For multimodal embedding: we support CLIP
Requirements Directory with pictures you want to search for example we have test_files with images of cat, dogs etc
import embed_anything
data = embed_anything.embed_directory("test_files", embeder= "Clip")
embeddings = np.array([data.embedding for data in data])
query = "photo of a dog"
query_embedding = np.array(embed_anything.embed_query(query, embeder= "Clip")[0].embedding)
similarities = np.dot(embeddings, query_embedding)
max_index = np.argmax(similarities)
Image.open(data[max_index].text).show()
For OpenAI
- Please check if you already have the OpenAI key in the Environment variable.
If you are using embed-anything==0.1.7 version (latest version)
import embed_anything
data = embed_anything.embed_file("filename.pdf", embeder= "OpenAI")
embeddings = np.array([data.embedding for data in data])
🚧 Contributing to EmbedAnything
First of all, thank you for taking the time to contribute to this project. We truly appreciate your contributions, whether it's bug reports, feature suggestions, or pull requests. Your time and effort are highly valued in this project. 🚀
This document provides guidelines and best practices to help you to contribute effectively. These are meant to serve as guidelines, not strict rules. We encourage you to use your best judgment and feel comfortable proposing changes to this document through a pull request.
Table of Content:
- [Code of conduct]
- [Quick Start]
✔️ Code of Conduct:
Please read our [Code of Conduct] to understand the expectations we have for all contributors participating in this project. By participating, you agree to abide by our Code of Conduct.
🚀 Quick Start
You can quickly get started with contributing by searching for issues with the labels "Good First Issue" or "Help Needed" in the [Issues Section]. If you think you can contribute, comment on the issue and we will assign it to you.
To set up your development environment, please follow the steps mentioned below :
- Fork the repository and create a clone of the fork
- Create a branch for a feature or a bug you are working on in your fork
- If you are working with OpenAI make sure you have the keys
Contributing Guidelines
🔍 Reporting Bugs
- Title describing the issue clearly and concisely with relevant labels
- Provide a detailed description of the problem and the necessary steps to reproduce the issue.
- Include any relevant logs, screenshots, or other helpful information supporting the issue.
💡 New Feature or Suggesting Enhancements
☑️ ToDo
- Vector Database Add functionalities to integrate with any Vector Database
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
File details
Details for the file embed_anything-0.1.17.tar.gz
.
File metadata
- Download URL: embed_anything-0.1.17.tar.gz
- Upload date:
- Size: 4.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.5.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3003f9ddf9670b0e3f0bc5efb86c2d0ac14d6fbe37d46c221d7104ef291c6d50 |
|
MD5 | 3e7780ae89d4a180dc8b494300632d58 |
|
BLAKE2b-256 | 3c4cc319f6c569d952518d8cab2c882c3ffe7665f2d1cadeee218ce62a2b4298 |
File details
Details for the file embed_anything-0.1.17-cp312-none-win_amd64.whl
.
File metadata
- Download URL: embed_anything-0.1.17-cp312-none-win_amd64.whl
- Upload date:
- Size: 10.2 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.5.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e46c098fc125358367904d21d75e3ff1931f410572cc57d1c18923b7ada4a6e2 |
|
MD5 | 46496c2460bb2dc1798cffd9444c3cb1 |
|
BLAKE2b-256 | 447db9376f8bed889e9f8f2e8f2105e79959573118308ded3288a6c7e37a5854 |
File details
Details for the file embed_anything-0.1.17-cp310-cp310-manylinux_2_34_x86_64.whl
.
File metadata
- Download URL: embed_anything-0.1.17-cp310-cp310-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 12.8 MB
- Tags: CPython 3.10, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.5.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 79f3ad35024034f94cbe9a2cbb05c975603689dae3350ded7deae3b4584b2661 |
|
MD5 | 8925c3f41aef927f88d487cd84aaa446 |
|
BLAKE2b-256 | f716b00791f976fbee106b1ea9c347f403deb19298c6996af5bfc0c49c2dd119 |