Hybrid Search and RAG Retrieval with Elasticsearch
Vector search is not automatically the best retrieval strategy for RAG. In a small Elasticsearch experiment, we compare classic full-text search, semantic search, and hybrid search.
Latest on the blog
Vector search is not automatically the best retrieval strategy for RAG. In a small Elasticsearch experiment, we compare classic full-text search, semantic search, and hybrid search.
Articles
Technical articles on professional software development, architecture, Python and modern AI systems.
Vector search is not automatically the best retrieval strategy for RAG. In a small Elasticsearch experiment, we compare classic full-text search, semantic search, and hybrid search.
A Large Language Model can generate text, organize information, and suggest decisions. However, by itself it cannot load a customer record from a database, send an email, or create a calendar appointment.
AI agents can use tools, make decisions, and perform tasks. But when is an agent more appropriate than a classic workflow?
Many Django applications run for a long time "just fine." Requests come in, data is processed, responses go out. As long as nothing is obviously broken, the system feels stable.
Django has long been a framework for quickly building functional applications. A few models, some views, a bit of template code, and a project was up and running. This way of thinking is now only partly valid.
Starting Django projects often follows the same pattern. Create project, make apps, define models, build views, wire URLs. The problem isn’t complexity but repeating the same steps. Especially for new projects or prototypes, this wastes time and focus.
In recent years, numerous AI tools have emerged promising to make software development faster and easier. Many of these, however, remain superficial and mainly assist with small code snippets or simple tasks.
Many Django projects start pragmatically. A few models, a few views, maybe a serializer – and everything works. The problem only becomes apparent later: The logic gets distributed uncontrollably throughout the code, making it increasingly difficult to understand where what actually happens.
Maintainability does not arise by chance but through deliberate architectural decisions from the very beginning. This article demonstrates which layers, responsibilities, and project structures have proven effective in real Django projects—beyond tutorials and quickstarts.