What is our primary use case?
Milvus is primarily used in RAG, which involves retrieving relevant documents or data to augment the generation of new content. Milvus helps convert text and other data into a vector space, and the embeddings of this data are stored in the database.
When a query is made, Milvus matches the query against the vector space to retrieve the most relevant vectors. For example, if we ask Milvus to retrieve the four best-matching vectors, it will provide those vectors. These vectors can then be decoded or reconverted into text, which can be further processed or used for generating new content.
How has it helped my organization?
Whenever we need to ask a language model a question, it can typically handle natural language queries effectively. However, if the model hasn't been trained on specific data related to the query, it may not be able to generate a precise answer.
This limitation is addressed by RAG, which allows the model to incorporate additional resources to answer questions beyond its training data. For organizations that use language models, if they have proprietary data such as PDFs, manuals, product roadmaps, or feature documents, RAG can help by providing this data to the model. This enables the model to answer questions related to that specific data by providing relevant context.
In our case, we've used Milvus to store organizational data, including PDFs and other data sources. Milvus facilitates the retrieval of relevant information to augment the model's ability to answer questions based on the stored data.
What is most valuable?
Milvus is an open-source vector database designed for efficiently handling large-scale, high-dimensional data. It supports various types of data sources and can be deployed on your own premises, which is crucial for maintaining data security.
Milvus offers multiple methods for calculating similarities or distances between vectors, such as L2 norm and cosine similarity. These methods help in comparing different vectors based on specific use cases. For instance, in our use case, we find that the L2 distance works best, but you can experiment with different methods to find the most suitable one for your needs.
Milvus also includes its own user interface, known as the Milvus Dashboard, which allows you to visualize and manage your data, including embeddings and metadata. You can filter your data based on various criteria, including metadata and file names, which provides flexibility in data management.
What needs improvement?
Milvus could be improved how it could automatically generate insights from the data it holds. Milvus maintains embedding information and knows the relationships between data points. It would be useful to explore how Milvus can provide more detailed insights or support additional business use cases, such as identifying clusters of similar data and deriving actionable insights from them. Additionally, video interpretation and protection could be areas where Milvus could offer extra value.
For how long have I used the solution?
I have been using Milvus for a year.
How was the initial setup?
Milvus provides documentation and an easy deployment process. Once you deploy Milvus, you can integrate it directly into your code. Using Milvus with Lambda is straightforward because it supports the necessary middleware version. You need to specify which database you're using, and Milvus will handle the connection automatically based on your configuration.
Currently, our development team of over a hundred people manages eight to ten products running on Milvus.
What's my experience with pricing, setup cost, and licensing?
If you are maintaining your own Milvus instance, you will need to provide the hardware and handle the management yourself. You’ll only need to pay for the resources you use, such as the machine and any associated costs. They do offer their own cloud instances, which should be manageable. You can explore their website to find detailed pricing information. For an on-premise instance, costs might be lower, but you’ll need to consider data growth and plan your budget accordingly.
What other advice do I have?
Milvus works well for various use cases and is quite flexible in terms of deployment. For on-premises deployment, you can use the open-source version with Docker. The system requirements are relatively modest; around 16 GB of RAM and some disk space are recommended. This setup is sufficient for initial trials or proof-of-concept projects.
If you prefer, you can use a cloud instance for Milvus. Cloud instances have limitations but are ideal for initial testing and quick setup without needing to install everything locally. This allows you to experiment with Milvus without significant upfront investment in infrastructure.
Milvus provides options for both on-premises and cloud deployment, so you can choose based on your needs. The documentation is comprehensive, and while some initial setup may require assistance, the process is straightforward once you get the hang of it. You can configure Milvus with different databases and customize it to fit your requirements.
Milvus excels at calculating the distance between your queries and the data, which is central to its functionality. The tool is designed to be easy to use and configure, with options to filter and view your data effectively. If you encounter issues, the UI and documentation provide support to help you troubleshoot and resolve problems.
Overall, I rate the solution a seven out of ten.