From 03536c2a3b05470fd10584d056a3584bd84faeb0 Mon Sep 17 00:00:00 2001 From: Michael Clifford Date: Fri, 22 Mar 2024 07:53:42 -0400 Subject: [PATCH] update rag readme and app (#91) --- assets/rag_ui.png | Bin 81905 -> 46838 bytes rag-langchain/README.md | 117 +++++++++++++++++++++++++++++++++------ rag-langchain/rag_app.py | 37 ++++++------- 3 files changed, 117 insertions(+), 37 deletions(-) diff --git a/assets/rag_ui.png b/assets/rag_ui.png index 9b0fbac92136bdeaa33ba0ede995a42e8a32b85a..c88b684268dafd3da449faa91d79ff4fb78d685a 100644 GIT binary patch literal 46838 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 E01)v)b^rhX literal 81905 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

u{7&9(yU*84b63*l9Lr;lJ{tEq*}~4ghM_ zC4YQqudzeh9YPx5Fbybt=ebB`{mNnM!%=#Askw_Rj~6IrHrzfqmdAw4X2y;S7*1J4 zTaM5%k$FLsAf~t${eTJ>;=zZhE!!WiX1kfK9Sm7-mKRF2)4tq7n=OsXDMdR zRBtWT0}gYE0a$fJer#tR>}lr3TsC~o*3UTB#dZCg5XTFapoFp;3(1I5IaUD?L7pp3 z{=DM`&JH=YLh3{wD9wv#04;u?J;#uUH+qMFO%>)scJ|F|p%a%&>cI7AbTJ4$lE!5K ztbN%TSEu_Ks&qhLvHLszC&F+@|CVLFXk{d&!}@LF4?a-w$sPb5Y9 zmj0gRPK-N{l`>EG(5+y}E_#tUoLZRzLp|Ry-@VYedZ&TeW&fFXZW#Fa!vQrHikfrk zti=)>g><5Smpm4?VUHONNL7=lQK8@@j}7epFc(T)vab)nDev2M8_{p4YA~x*c@ixV z^>6hv+9)_rCM9(xOzK`m<2`eQuB!e0vRz7`Tlj2_#FYCJoMgHV9UoBRU+vQ8Aa{T~ z$^4YM-=sGrVMtu+q2FGRm!+`T;Iykc8Bx%bHjeS66@4E1AHokFC7A->UV+?Yz_Mq}ya-jkIFP-wpct?TQrUa0{Zf zwS@Vvho*4maNI6wo2iuRXP^HpB}tx7TK;hpoC4N$+ddf94v_qn_ZL_vAgE?BIkzV3cm4i=Z!!Ps%zwP`@Abuzecm}vK3Re=q)U29rpvlE(=n<3 z8p&TD`S(|T<;qQnzVMr={|YZk@&q{JbPQOAA@hTc=;{Ac%jYcw$qzn4HawlftY+l( zjUtD%<~JqZdaX%wtxr|zoZz?h5&ySNeDL~oiVcw+u>HL(pQJ72X)M0G3^`rg4gHqz z($MnX$KrqO#^0Tsx8Nmb*_%p3Tpw<~{cFU34fIdO{tt3srN~`({ACcDE|LFR_J6!Q zDhiZ8u3_D~2>NrT{6~fVc;k2d{~*XelE3Nm4}$z7`I|ofAjm(Gzv=T2g8U=-|DexF zfQ;7z@>8c?2=}!)IKD2SdH4JxyTXf8WT(%Zy?FP$#L`^{4S znkv61(7)uyZ*lQkT>Q0O{cC>w78n0xW&JHKev6A=>*&Az`K?|2BF1m+;$PD9x48H% uE`CjnfBW-WT>K)&Z*lQkT>O7!yP!s6y+>RWc(+dhzk4d0%4LeCFaHZ~;}Wz0 diff --git a/rag-langchain/README.md b/rag-langchain/README.md index ec3acecb..7a31ee1a 100644 --- a/rag-langchain/README.md +++ b/rag-langchain/README.md @@ -1,34 +1,117 @@ -# RAG + Langchain +# RAG (Retrieval Augmented Generation) Chat Application -This example will deploy a local RAG application using a chromadb server, a llama.cpp model server and a python app built with langchain. - -# +This demo provides a simple recipe to help developers start to build out their own custom RAG (Retrieval Augmented Generation) applications. It consists of three main components; the Model Service, the Vector Database and the AI Application. -### Deploy ChromaDB Vector Database -Use the existing ChromaDB image to deploy a vector store service. +There are a few options today for local Model Serving, but this recipe will use [`llama-cpp-python`](https://github.com/abetlen/llama-cpp-python) and their OpenAI compatible Model Service. There is a Containerfile provided that can be used to build this Model Service within the repo, [`playground/Containerfile`](/playground/Containerfile). -* `podman pull chromadb/chroma` -* `podman run --rm -it -p 8000:8000 chroma` +In order for the LLM to interact with our documents, we need them stored and available in such a manner that we can retrieve a small subset of them that are relevant to our query. To do this we employ a Vector Database alongside an embedding model. The embedding model converts our documents into numerical representations, vectors, such that similarity searches can be easily performed. The Vector Database stores these vectors for us and makes them available to the LLM. In this recipe we will use [chromaDB](https://docs.trychroma.com/) as our Vector Database. -### Deploy Model Service +Our AI Application will connect to our Model Service via it's OpenAI compatible API. In this example we rely on [Langchain's](https://python.langchain.com/docs/get_started/introduction) python package to simplify communication with our Model Service and we use [Streamlit](https://streamlit.io/) for our UI layer. Below please see an example of the RAG application. -To start the model service, refer to [the playground model-service document](../playground/README.md) +![](/assets/rag_ui.png) -### Build and Deploy RAG app -Deploy a small application that can populate the data base from the vectorDB and generate a response with the LLM. -We will want to have an embedding model that we can volume mount into our running application container. You can use the code snippet below to pull a copy of the `BAAI/bge-base-en-v1.5` embedding model. +# Build the Application +In order to build this application we will need two models, a Vector Database, a Model Service and an AI Application. + +* [Download models](#download-models) +* [Deploy the Vector Database](#deploy-the-vector-database) +* [Build the Model Service](#build-the-model-service) +* [Deploy the Model Service](#deploy-the-model-service) +* [Build the AI Application](#build-the-ai-application) +* [Deploy the AI Application](#deploy-the-ai-application) +* [Interact with the AI Application](#interact-with-the-ai-application) + +### Download models + +If you are just getting started, we recommend using [Mistral-7B-Instruct](https://huggingface.co/mistralai/Mistral-7B-Instruct-v0.1). This is a well performant mid-sized model with an apache-2.0 license. In order to use it with our Model Service we need it converted and quantized into the [GGUF format](https://github.com/ggerganov/ggml/blob/master/docs/gguf.md). There are a number of ways to get a GGUF version of Mistral-7B, but the simplest is to download a pre-converted one from [huggingface.co](https://huggingface.co) here: https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.1-GGUF. There are a number of options for quantization level, but we recommend `Q4_K_M`. + +The recommended model can be downloaded using the code snippet below: + +```bash +cd models +wget https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.1-GGUF/resolve/main/mistral-7b-instruct-v0.1.Q4_K_M.gguf +cd ../ +``` + +_A full list of supported open models is forthcoming._ + +In addition to the LLM, RAG applications also require an embedding model to convert documents between natural language and vector representations. For this demo we will use [`BAAI/bge-base-en-v1.5`](https://huggingface.co/BAAI/bge-base-en-v1.5) it is a fairly standard model for this use case and has an MIT license. + +The code snippet below can be used to pull a copy of the `BAAI/bge-base-en-v1.5` embedding model and store it in your `models/` directory. ```python from huggingface_hub import snapshot_download snapshot_download(repo_id="BAAI/bge-base-en-v1.5", - cache_dir="../models/", + cache_dir="models/", local_files_only=False) ``` -Follow the instructions below to build you container image and run it locally. +### Deploy the Vector Database + +To deploy the Vector Database service locally, simply use the existing ChromaDB image. + +```bash +podman pull chromadb/chroma +``` +```bash +podman run --rm -it -p 8000:8000 chroma +``` + +This Vector Database is ephemeral and will need to be re-populated each time the container restarts. When implementing RAG in production, you will want a long running and backed up Vector Database. + + +### Build the Model Service + +The complete instructions for building and deploying the Model Service can be found in the [the playground model-service document](../playground/README.md). + +The Model Service can be built from the root directory with the following code snippet: + +```bash +podman build -t llamacppserver playground/ +``` + + +### Deploy the Model Service + +The complete instructions for building and deploying the Model Service can be found in the [the playground model-service document](../playground/README.md). + +The local Model Service relies on a volume mount to the localhost to access the model files. You can start your local Model Service using the following podman command: +``` +podman run --rm -it \ + -p 8001:8001 \ + -v Local/path/to/locallm/models:/locallm/models \ + -e MODEL_PATH=models/ \ + -e HOST=0.0.0.0 \ + -e PORT=8001 \ + llamacppserver +``` + +### Build the AI Application + +Now that the Model Service is running we want to build and deploy our AI Application. Use the provided Containerfile to build the AI Application image in the `rag-langchain/` directory. + +```bash +podman build -t rag rag-langchain/ -f rag-langchain/builds/Containerfile +``` +### Deploy the AI Application + +Make sure the Model Service and the Vector Database are up and running before starting this container image. When starting the AI Application container image we need to direct it to the correct `MODEL_SERVICE_ENDPOINT`. This could be any appropriately hosted Model Service (running locally or in the cloud) using an OpenAI compatible API. In our case the Model Service is running inside the podman machine so we need to provide it with the appropriate address `10.88.0.1`. The same goes for the Vector Database. Make sure the `VECTORDB_HOST` is correctly set to `10.88.0.1` for communication within the podman virtual machine. + +There also needs to be a volume mount into the `models/` directory so that the application can access the embedding model as well as a volume mount into the `data/` directory where it can pull documents from to populate the Vector Database. + +The following podman command can be used to run your AI Application: + +```bash +podman run --rm -it -p 8501:8501 +-e MODEL_SERVICE_ENDPOINT=http://10.88.0.1:8001/v1 +-e VECTORDB_HOST=10.88.0.1 +-v Local/path/to/locallm/models/:/rag/models +-v Local/path/to/locallm/data:/rag/data +rag +``` -* `podman build -t ragapp rag-langchain -f rag-langchain/builds/Containerfile` -* `podman run --rm -it -p 8501:8501 -v Local/path/to/locallm/models/:/rag/models:Z -v Local/path/to/locallm/data:/rag/data:Z -e MODEL_SERVICE_ENDPOINT=http://10.88.0.1:8001/v1 ragapp -- -H 10.88.0.1 ` +### Interact with the AI Application +Everything should now be up an running with the rag application available at [`http://localhost:8501`](http://localhost:8501). By using this recipe and getting this starting point established, users should now have an easier time customizing and building their own LLM enabled RAG applications. diff --git a/rag-langchain/rag_app.py b/rag-langchain/rag_app.py index 128bbccc..46350340 100644 --- a/rag-langchain/rag_app.py +++ b/rag-langchain/rag_app.py @@ -18,24 +18,21 @@ import argparse import pathlib -model_service = os.getenv("MODEL_SERVICE_ENDPOINT", - "http://0.0.0.0:8001/v1") - -parser = argparse.ArgumentParser() -parser.add_argument("-c", "--chunk_size", default=150) -parser.add_argument("-e", "--embedding_model", default="BAAI/bge-base-en-v1.5") -parser.add_argument("-H", "--vdb_host", default="0.0.0.0") -parser.add_argument("-p", "--vdb_port", default="8000") -parser.add_argument("-n", "--name", default="test_collection") -args = parser.parse_args() - -vectorDB_client = HttpClient(host=args.vdb_host, - port=args.vdb_port, +model_service = os.getenv("MODEL_SERVICE_ENDPOINT","http://0.0.0.0:8001/v1") +chunk_size = os.getenv("CHUNK_SIZE", 150) +embedding_model = os.getenv("EMBEDDING_MODEL","BAAI/bge-base-en-v1.5") +vdb_host = os.getenv("VECTORDB_HOST", "0.0.0.0") +vdb_port = os.getenv("VECTORDB_PORT", "8000") +vdb_name = os.getenv("VECTORDB_NAME", "test_collection") + + +vectorDB_client = HttpClient(host=vdb_host, + port=vdb_port, settings=Settings(allow_reset=True,)) def clear_vdb(): - global client - client.delete_collection(args.name) + global vectorDB_client + vectorDB_client.delete_collection(vdb_name) print("clearing DB") def is_text_file(file_path): @@ -59,16 +56,16 @@ def get_files(): ### populate the DB #### os.environ["TOKENIZERS_PARALLELISM"] = "false" -embedding_func = embedding_functions.SentenceTransformerEmbeddingFunction(model_name=args.embedding_model) -e = SentenceTransformerEmbeddings(model_name=args.embedding_model) +embedding_func = embedding_functions.SentenceTransformerEmbeddingFunction(model_name=embedding_model) +e = SentenceTransformerEmbeddings(model_name=embedding_model) -collection = vectorDB_client.get_or_create_collection(args.name, +collection = vectorDB_client.get_or_create_collection(vdb_name, embedding_function=embedding_func) if collection.count() < 1 and data != None: print("populating db") raw_documents = TextLoader(f'{data}').load() text_splitter = CharacterTextSplitter(separator = ".", - chunk_size=int(args.chunk_size), + chunk_size=int(chunk_size), chunk_overlap=0) docs = text_splitter.split_documents(raw_documents) for doc in docs: @@ -91,7 +88,7 @@ def get_files(): st.chat_message(msg["role"]).write(msg["content"]) db = Chroma(client=vectorDB_client, - collection_name=args.name, + collection_name=vdb_name, embedding_function=e ) retriever = db.as_retriever(threshold=0.75)