Skip to content

v0.4.0

Choose a tag to compare

@dimamik dimamik released this 20 Apr 10:21
· 26 commits to main since this release
af740ad

Breaking changes:

  • full_text/5 - now returns all results when search term contains a stop word or is empty instead of returning none.

Improvements:

  • full_text/5 - now supports :empty_return option that controls if the query should return all results when search term contains a stop word or is empty.
  • tap_explain_analyze/3 - now correctly returns the query plan.
  • Docs were grouped together by the search type.

New 🔥

Semantic search is finally here! Read more about it in the Semantic search with Torus guide.
Shortly - it allows you to generate embeddings using a configurable adapters and use them to compare against the ones stored in your database.

Supported adapters (for now):

  • Torus.Embeddings.OpenAI - uses OpenAI's API to generate embeddings.

  • Torus.Embeddings.HuggingFace - uses HuggingFace's API to generate embeddings.

  • Torus.Embeddings.LocalNxServing - generate embeddings on your local machine using a variety of models available on Hugging Face

  • Torus.Embeddings.PostgresML - uses PostgreSQL PostgresML extension to generate embeddings

  • Torus.Embeddings.Batcher - a long‑running GenServer that collects individual embedding calls, groups them into a single batch, and forwards the batch to the configured embedding_module (any from the above or your custom one).

  • Torus.Embeddings.NebulexCache - a wrapper around Nebulex cache, allowing you to cache the embedding calls in memory, so you save the resources/cost of calling the embedding module multiple times for the same input.

And you can easily create your own adapter by implementing the Torus.Embedding behaviour.