v0.4.0
View SourceBreaking 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_returnoption 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 FaceTorus.Embeddings.PostgresML- uses PostgreSQL PostgresML extension to generate embeddingsTorus.Embeddings.Batcher- a long‑running GenServer that collects individual embedding calls, groups them into a single batch, and forwards the batch to the configuredembedding_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.
v0.3.0
Breaking changes:
full_text_dynamic/5is renamed tofull_text/5and now supports stored columns.similarity/5-limitoption is removed, use Ecto'slimit/2instead.full_text/5-:concatoption is renamed to:coalesce.
Improvements:
full_text/5now supports storedtsvectorcolumns.Torus.QueryInspector.substituted_sql/3now correctly handles arrays substitutions.- Docs are extended to guide through the performance and relevance.
And other minor performance/clearance improvements.
v0.2.2
full_text_dynamic/5: Replaced:nullable_columnswith:concatoptionsimilarity/5: Fixed a bug where you weren't able to pass variable as a termTorus.QueryInspector: now is not tied withTorus.Testingand serves as a separate standalone module.
And other minor performance/clearance improvements.
v0.2.1
similarity/5 search is now fully tested and customizable. full_text_dynamic/5 is up next.
Changelog for Torus v0.2.0
Torus now supports full text search, ilike, and similarity search.