Post

RAG實作教學,Streamlit+LangChain+Llama2

我們將重點放在如何使用 Streamlit 來建立一個視覺化的操作介面,以便 Demo 整個RAG(Retrieval-Augmented Generation)的工作流程。

RAG實作教學,Streamlit+LangChain+Llama2

RAG實作教學,Streamlit+LangChain+Llama2 | Demo 版本

上一篇 示範了如何實作 RAG(Retrieval-Augmented Generation)的核心部分。 這次,我們將重點放在如何使用 Streamlit 來建立一個視覺化的操作介面,以便 Demo 整個 RAG 的工作流程。與上篇介紹的不同的是我把 Gradio 換成 streamlit,因為我最近在寫 streamlit 的專案,相對比較熟悉,當然,你也可以選擇使用 Gradio 來達到相同的效果。

相關 Tech Stack:

  • Python 3.7+
  • LangChain : 一個強大的庫,用於建立和管理語言模型。
  • Chroma : 用於處理和分析文字資料。
  • Streamlit : 用於建構和分享美觀的資料應用。
  • Llama2OpenAI API : 選擇使用自建的 LLM 伺服器或是 OpenAI 提供的 API。
  • PDF : 作為資訊的來源和查詢的基礎。

實現流程:

  1. 連接 LLM:在這個 Demo 中,我們可以選擇要使用自己架設的 LLM server 或使用 openAI API
  2. 文件上傳與處理:使用者可以上傳 PDF 文檔,系統會使用 Chroma 對文檔進行處理,包括文字分割和嵌入等操作。
  3. 資料儲存:處理後的資料會儲存到資料庫中,以便於後續的檢索和分析。
  4. 互動式查詢:使用者可以透過一個友善的介面向系統提問,系統會根據問題從資料庫中檢索相關信息,並利用 LLM 產生答案。

實際畫面:

Demo 的畫面中,我是用自己本地的 LLM 模型,並使用 llama.cpp 開設 API service,因此你可以看到 URL 是: http://127.0.0.1:8080/v1,如果這部分不清楚可以參考 llama.cpp 教學 ,你也可以選擇使用 openAI API。

上傳 PDF 使用的文件一樣與上一篇一樣,是使用虛擬人物 Alison Hawk 的資訊,裡面記錄了他的職業與個性,因此你可以看到 Demo 中我詢問 Alison Hawk 的職業是甚麼,而 LLM 有拿到 PDF 的訊息準確回答。

建立你的 Demo

如果你對這個專案感興趣,並想親自嘗試建造和運行,我將 code 放在 github ,你可以藉由以下步驟快速架設你自己的 streamlit Demo:

步驟1. Clone 專案

1
2
git clone https://github.com/wsxqaza12/RAG_LangChain_streamlit.git
cd RAG_LangChain_streamlit

步驟2. 準備環境

1
2
3
conda create -n RAG_streamlit python=3.7
conda activate RAG_streamlit
pip install -r requirements.txt

步驟3. 啟動 streamlit

1
streamlit run rag_engine.py

完成上述步驟後,你應該可以看到一個友善的 Streamlit 應用程式介面。在這個介面上,你可以上傳 PDF,查詢訊息,並觀察 LLM 如何從你提供的資料中擷取資訊,注意如果你要使用你自己的 LLM,記得先在另外的 process 啟動。

希望這篇文章能幫助你更好地理解 RAG 的實現過程,並透過 Streamlit 創建出色的互動式 Demo。如果有任何問題,歡迎在專案的 GitHub 頁面上提出。


Buy Me A Coffee

This post is licensed under CC BY 4.0 by the author.