
什么是GPT-4?完整指南
贅述一下基本概念,檢索增強生成(Retrieval-Augmented Generation,簡稱 RAG)是一種結合信息檢索和生成式 AI 的技術架構。RAG 通過從外部知識庫(如文檔、數據庫)中檢索相關信息,并將其作為上下文輸入給 LLM(大型語言模型),從而提高回答的準確性,減少幻覺問題。
我們的目標是在本地運行一個 RAG 系統,能夠處理 PDF 文檔,保障數據隱私,并能高效回答與文檔內容相關的問題。當然,通過修改代碼,我們也可以實現處理其他類型的數據。
本文使用了多個開源工具和框架:
首先,確保你已經安裝了 Python 3.8+,然后安裝 Ollama:
curl -fsSL https://ollama.com/install.sh | sh
然后在命令行中使用下面的命令下載 DeepSeek-R1 模型和 mxbai-embed-large 詞向量模型:
ollama pull deepseek/deepseek-r1
ollama pull mxbai-embed-large
克隆 GitHub 倉庫并安裝依賴:
git clone https://github.com/paquino11/chatpdf-rag-deepseek-r1
cd chatpdf-rag-deepseek-r1
python -m venv venv
source venv/bin/activate # Windows 用戶使用 venv\Scripts\activate
pip install -r requirements.txt
提示:如果遇到類似的錯誤提示
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for pyarrow
可以使用下面的命令升級pip后嘗試
python3 -m pip install --upgrade pip
按照步驟2操作完成后,我們就可以啟動項目了,啟動命令
streamlit run app.py
因為我使用的模型和代碼中使用的模型不一致,所以這里我首先要修改一下模型名稱,打開項目源碼文件rag.py,修改模型名稱為deepseek-r1:1.5b,同理我們也可以修改embedding模型:
def __init__(self, llm_model: str = "deepseek-r1:1.5b", embedding_model: str = "mxbai-embed-large"):
啟動結果:
啟動后,一般會自動打開瀏覽器頁面,如果沒有自動打開瀏覽器,也可以手動訪問:http://localhost:8501
支持用戶上傳 PDF 文檔,系統會自動解析并向量化存儲。
用戶輸入問題,系統會從向量數據庫中檢索相關段落,并結合 LLM 生成回答。
所有處理過程均在本地完成,數據不會上傳到云端,確保敏感信息安全。
我們簡單分析一下源碼,其核心代碼rag.py解析如下
def __init__(self, llm_model: str = "deepseek-r1:latest", embedding_model: str = "mxbai-embed-large"):
def ingest(self, pdf_file_path: str):
def ask(self, query: str, k: int = 5, score_threshold: float = 0.2):
本文章轉載微信公眾號@AI牛碼