<!channel> Hey everyone, excited to announce that ...
# important-announcements
j
<!channel> Hey everyone, excited to announce that the next major version of Typesense -
v29.0
- is now out! Here are some key new features: Natural Language Search - Using the magic of LLMs, Typesense can now detect user intent in search queries automatically, and convert parts of the query into structured filters and sorts. For eg, if you have a cars data set, and a user types in
A Honda or BMW with at least 200 hp
, Typesense can convert that automatically into:
filter_by: make:[Honda, BMW] && engine_hp:>=200
. This leads to much higher quality, less-noisy results, when compared to a simple full-text search or even semantic / hybrid search. Just like Text-to-SQL, think of this as "Text to Typesense Query". You can also combine this with Conversational Search to create novel search experiences. The best part about this feature is that you do not need to generate embeddings! You can use this with your existing JSON documents as is and there are no additional storage requirements. Checkout out the docs. Filtering on attributes of Nested Array of Objects: a commonly requested feature. Docs. Streaming Responses in Conversational Search: Previously you had to wait till the entire response was formed before Typesense would return the results. But now you can stream the response in real-time as the response is being returned from the LLM. Add Tags to Popular and No-Hits searches in Search Analytics: You can now add tags to searches and track those tags in Typesense's built-in analytics. A few use-cases we've heard where this could be helpful - track analytics per web store, per locale, per platform, etc. You can also track values of the filters used. Ability to upload any user-provided images at search time, to do dynamic image similarity searches Performance improvements when using group_by on high cardinality fields. Various stability improvements and quality of life improvements in the JOIN feature and
use_cache
feature. Those are just some of the highlights. The complete changelog is here: https://typesense.org/docs/29.0/api/#what-s-new As always, thank you for all your feedback, questions, feature requests, bug reports and contributions, to help ship this release 🙏 🙌
🔝 5
🙌🏼 1
💪🏽 1
🙌🏽 2
💪 10
😮 4
❤️ 18
🔥 5
🎉 31
🙌 49
a
️ *Natural Language Search* - Using the magic of LLMs, Typesense can now detect user intent in search queries automatically, and convert parts of the query into structured filters and sorts.
is huge
🙌 3
I have been doing this with my own code for a while now and have had many issues with customer, going to benchmark against the typesense implementation now.
j
Awesome! Let me know how it goes in #C01P749MET0. Eager to improve the feature based on feedback.
👍 1
1
s
Congratulations, another awesome release!
👍 1
🙏 1
v
Great release! One question regarding
Filtering Nested Array Objects
, the release notes say
Filter for two properties within a nested array of objects
, but the docs don't say anything about the limitation of filtering for only two properties. I imagine the docs are correct here?
j
It was actually a poor choice of words in the release notes! "Filter for two" meant to really convey "Filter for more than one". Will fix that
👍 2
m
Does this LLM integration "learn" / "evolve" based on user behavior? eg., Vehicle Search Website User types: cheap fast car Results are: Pinto, DeLorean, GolfR 60% click on Pinto 20% each click on DeLorean / GolfR would this improve the weighting of Pinto in results?
j
No, not at the moment. This learning has to be implemented outside of Typesense.
c
9z0ttl.jpg
😄 7
ó
Can we use Azure OpenAI as the model? It uses a different url than OpenAI
a
This is seriously huge. Just curious, would my every query go through llm? If yes, would it not have a huge impact on latency?
👀 1
j
Every query that has
nl_query=true
will go through the LLM. So you can control when to trigger this feature. For eg, you could show instant keyword search results, and then in parallel trigger nl_query search results as needed
🙌 1
We don't support Azure OpenAI in the NL query endpoint. Could you open a GitHub issue for it?
g
What size of models do you recommend for such tasks? Can mini / haiku / ministral models be used (are they enough for the conversion process) to minimize the cost?
👀 1
n
Hi @Jason Bosco @Kishore Nallan @Gauthier PLM - about "Supported Model Types" and "What size of models do you recommend for such tasks?" in the message above. Looking in the documentation https://typesense.org/docs/29.0/api/natural-language-search.html#create-a-natural-language-search-model I see you are listing number of models with 7-8B parameters, I mean llama-2-7b-chat-int8, mistral-7b-instruct. There are tens of providers and tens of such (small, cheap and effective) models around. It make no sense you add all such provider/models as "Supported". I want to suggest: implement support of "CHAT COMPLETION API" a.k.a. "compatibility with the OpenAI API standard." Having support of this API in your code and documenting and making configurable the necessary parameters you allow to use ANY provider and any model. It seems, you already have 90% of this, just make it fully configurable. Example: (Click on "API" tab): https://novita.ai/models/llm/qwen-qwen3-8b-fp8 this is quite "smart" model (definitely better than llama-2-7b), prices: $0.035 / 1M input tokens $0.138 / 1M output tokens And they show they curl command:
Copy code
curl "<https://api.novita.ai/openai/v1/chat/completions>" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer " \
  -d @- << 'EOF'
{
    "model": "qwen/qwen3-8b-fp8",
    "messages": [
        {
            "role": "system",
            "content": "Be a helpful assistant"
        },
        {
            "role": "user",
            "content": "Hi there!"
        }
    ],
    "response_format": { "type": "text" },
    "max_tokens": 10000,
    "temperature": 1,
    "top_p": 1,
    "min_p": 0,
    "top_k": 50,
    "presence_penalty": 0,
    "frequency_penalty": 0,
    "repetition_penalty": 1
}
So, you do not need to list Novita+Qwen3-8b as "Supported Model Type". Just make the URL
<https://api.novita.ai/openai/v1/chat/completions>
fully configurable (all such URL's have
/chat/completions
at the end) as well as max_tokens, temperature, top_p... Thats it, Just write in the documentation "We tested this feature with this-and-that model/provider with these parameters" P.S. You can compare with, let say, OpenRouter: https://openrouter.ai/docs/quickstart#using-the-openrouter-api-directly click on "Shell" tab: same
/chat/completions
at the end and same set of parameters!