Using vector storage and search is becoming increasingly popular due to the momentum that Generative AI has gained. It is a critical part of many use cases that require relevant context for prompts, while staying within the token limit of LLMs.
There are many options available for storing vector data and performing searches. Some are provided as third-party hosted APIs, while others can be deployed as containers to Kubernetes clusters. There is also an interesting alternative: using a good old PostgreSQL database with the pgvector extension!
In one of the projects I’m involved in, MongoDB is used to store data for services. We were seeing some unexpected behavior in one part of the system, and we were able to narrow down the issue to be a long-running query against one of the collections. Due to the size of that collection, the query was taking up to 2.5 hours!
At first, it was obvious that we need an index of some sort to speed things up.
There are many CMS systems on the market at the moment. All of them allow users to create and manage content, each of them in it’s own specific way. I have been working with several CMS systems in my career. Each of the system is different from another but there are some pieces that are common for most of them. In this post I would like to share with you my observations and thoughts about a capablitity that many CMS systems have, which often is a source of problems.
Probably almost any EPiserver user knows that to move blocks between folders in EPiserver you need to able to delete items from the source folder. And it’s fine for most of the time and we don’t think too much about it. Until we run into an issue, of course. Things can get tricky when we are faced with some specific requirements, which do not fit into the out-of-the-box capabilities of EPiserver.
One of the most important pieces of EPiserver for content editing is the support for rich text. EPiserver integrates with one of the most popular and well known rich text editors for web browsers - TinyMCE. Out of the box TinyMCE is packed with features and configuration options and its ecosystem is packed with plugins (both free and paid), that can greatly expand its capabilities.
I have recently been asked to add support for PowerPaste plugin for the TinyMCE editor in EPiserver.
I suppose all of you know the importance of not storing secrets for connections to databases, APIs, identity providers etc. in the repositories alongside with the code. There are many ways to keep them away from the source code in .NET Core and in .NET Framework.
To avoid storing secrets in code for EPiserver, the user secrets feature can be leveraged (provided by Microsoft.Configuration.ConfigurationBuilders.UserSecrets NuGet package). However, there is an issue when upgrading/initializing Episerver database using Initialize-EPiDatabase and Update-EPiDatabase in the Visual Studio Package Manager when the UserSecrets package is referenced.