The latest versions of Umbraco CMS offer a set of free AI enhancements as Nuget packages, one of which is a semantic search feature. The platform already comes bundled with Lucene/Examine for a powerful keyword search using word similarity matching, so the semantic search add-on fills a contextual search gap.
When implemented, this kind of search analyzes your content using an AI embeddings model so that your searches return results based on intent, not keyword matching or word similarity. The only requirement is that you have a vector database, which is used to store and query the embeddings. This project allows you to use the Umbraco semantic search feature with Qdrant; a free and open source vector database. It's also one of the fastest.
You can see this in action right on this blog! Our blog search can be used to ask questions and will return relevant results even if the words you use aren't in the content. It does this by analyzing the content and question using AI language analysis, much like a chatbot would, to return results based on what the post text means, not simply the words it contains.
Try this question:
This should return AI data poisoning and Benford's Law as a top results, unless we added something more relevant since they were posted. Most of the question is noise words. And the remaining words are either not in the posts at all, or exist in many other posts as well. And yet it understood what you meant.
If you'd like to use the provider in your own Umbraco CMS 17+ project, add it by searching nuget for "Fynydd.Umbraco.Search.Qdrant", or find it using the button below.
If you want to check out the source code, fork and customize it, or make a pull request with new features or bug fixes, you can also find the project on Github.
There's usually more to the story so if you have questions or comments about this post let us know!
Do you need a new software development partner for an upcoming project? We would love to work with you! From websites and mobile apps to cloud services and custom software, we can help!