What are some good end-to-end RAG (Retrieval-Augmented Generation) frameworks for question-answering using an LLM?
My requirements are:
- Low/no code and simple to setup.
- Reading and parsing local document files (.PDF, .DOCX, e.g.) into a database and generate vector embeddings of them.
- Scraping and parsing a website into the database.
- Of a lesser importance: Loading and parsing images, audios, and videos via image/audio-to-text and/or embeddings.
- Retrievers that query the database via vector embedding similarity and/or keyword search.
- Let an LLM choose the best rephrasing of the user-inputted query to search for with the retrievers.
- Rerank the results returned by the retrievers and select the most relevant parts.
- Synthesize a response to the end-user utilizing the information retrieved.
- Provide the sources of the results such as providing the exact path to the files referenced.
- Optional but great to have: An LLM agent that has memory and makes autonomous decisions regarding what queries to be performed and how to rephrase the query if the previous results are unsatisfactory.
I understand that it might be difficult to find a framework that satisfies all of the requirements, so solutions satisfying a majority of the requirements would be acceptable. I would also accept a simple combination of different frameworks. However, I am not planning to stitch all the individual components together by code. It is OK for me to having to choose which parsers and which retrievers to use, but they need to be simple plug-and-play.
I found that RAGFlow might be a good solution according to the requirements. Additionally, I am also building an agentic RAG framework myself using LlamaIndex, though I would not accept it as an answer to this question as it requires a lot of code to stitch the components together.