Funes
Nosotros, de un vistazo, percibimos tres copas en una mesa; Funes, todos los vástagos y racimos y frutos que comprende una parra. Sabía las formas de las nubes australes del amanecer del treinta de abril de mil ochocientos ochenta y dos y podía compararlas en el recuerdo con las vetas de un libro en pasta española que solo había mirado una vez y con las líneas de la espuma que un remo levantó en el Río Negro la víspera de la acción del Quebracho. Esos recuerdos no eran simples; cada imagen visual estaba ligada a sensaciones musculares, térmicas, etc. Podía reconstruir todos los sueños, todos los entresueños.
Funes is a large image explorer with focus on semantic search and image similarity done in a local, fast and accessible way to a large range of devices.
Users can import large collections of images which are indexed using vector embeddings. It's possible to either enter natural language queries to retrieve images that best match the query content, or get the most similar images from another one in the library.
No cloud storage, paying embedding models or GPU use is necessary. Everything runs locally, on CPU, in a scallable and fast way.
Generating embeddings
Usually, embeddings are generated by using an API of some commercial model that charges for its access. Furthermore, there are concerns of privacy, if there's sensitive material being processed, and dependency of a external service that could go down at any moment.
There is the alternative of running a local model, which requires a GPU powerful enough for a decent model. This compromises the use of underpowered devices and introduces some concerns with energy consumption.
The solution used by Funes is fastembed (https://github.com/qdrant/fastembed/), "a lightweight, fast, Python library built for embedding generation". Fastembed supports the model CLIP (https://huggingface.co/docs/transformers/model_doc/clip), a multimodal vision and language model which generates embeddings with similarity scores optimized for semantic content.
Vector storage and search
In order to avoid remote storage of embeddings, sqlite-vector (https://github.com/sqliteai/sqlite-vector) is used to store and retrieve the generated vectors. This also avoids the concerns with running local servers and managing docker containers.
Installing
Install using pip:
pip install funes
Python package
Funes can be used as a Python package by importing the search engine and storage classes:
from funes import SearchEngine, SQLiteStore
with SQLiteStore("funes.db") as store:
engine = SearchEngine(store)
results = engine.search_text("a dog on a beach")
The command-line interface is installed separately as funes-cli:
funes-cli index ./images
funes-cli search "a dog on a beach"
funes-cli search --image ./cat.jpg
Desktop interface
Launch the Qt interface with:
uv run funes
To point the interface at a specific SQLite database, pass the path:
uv run funes ./funes.db
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file funes_core-0.1.0.tar.gz.
File metadata
- Download URL: funes_core-0.1.0.tar.gz
- Upload date:
- Size: 19.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.11.30 {"installer":{"name":"uv","version":"0.11.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"21","id":"vanessa","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9d7941a0e758ebffcbf612ea2757e7caae15d3f9a5a608ab402676e55f452844
|
|
| MD5 |
071354c1aa49e3a6d99a75caa11865e2
|
|
| BLAKE2b-256 |
bb8f76c1ac13514f924a8e1b11bd9452e73bbcb9c08bb44169c16feb227415dd
|
File details
Details for the file funes_core-0.1.0-py3-none-any.whl.
File metadata
- Download URL: funes_core-0.1.0-py3-none-any.whl
- Upload date:
- Size: 24.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.11.30 {"installer":{"name":"uv","version":"0.11.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"21","id":"vanessa","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e1a17ef9ef655d4f50434882533748c3de90527266955033830cdd2ae55cee4
|
|
| MD5 |
5c3550fd5a4189a15acfca111a509190
|
|
| BLAKE2b-256 |
9b165ce068549a4734832ac638de807f7a6b14c4dcba81e3c6d598a6be26c692
|