Besides LlamaIndex, there is just the basic combination of Vector Database and LLM. Have a look at Pinecone: https://www.pinecone.io/learn/vector-database/
A vector database stores pieces of text (or pieces of images or sound or else) togtehter with a numeric vector. The numeric vector contains information about the text. A query can be transformed in a numeric vector, too. Now, having two vectors, there are algorithms for finding the one that matches most (e.g. cosine distance). So you can search the database for text that is highly relevant, according to the vector.
Now you can store your "knowledge" in many text/vector pairs. If you get a query, first read the suitable context from the vector database and put the received text in front of the prompt. Like this, the LLM will always have the right context knowledge, together with the custormer query.
Finetuning is overhead for most cases, but prompting is just a very simple and not so powerful solution. Vector Databases use prompting, but offer a mechanism to find suitable prompts, which is a powerful intermediate solution.