什么是 RAG ?

贅述一下基本概念,檢索增強生成(Retrieval-Augmented Generation,簡稱 RAG)是一種結合信息檢索和生成式 AI 的技術架構。RAG 通過從外部知識庫(如文檔、數據庫)中檢索相關信息,并將其作為上下文輸入給 LLM(大型語言模型),從而提高回答的準確性,減少幻覺問題。

我們的目標是在本地運行一個 RAG 系統,能夠處理 PDF 文檔,保障數據隱私,并能高效回答與文檔內容相關的問題。當然,通過修改代碼,我們也可以實現處理其他類型的數據。

所需技術棧

本文使用了多個開源工具和框架

使用過程

1、安裝必要的工具

首先,確保你已經安裝了 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

2、設置 Python 項目環境

克隆 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

3、運行應用

按照步驟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解析如下

1、初始化 ChatPDF 類

def __init__(self, llm_model: str = "deepseek-r1:latest", embedding_model: str = "mxbai-embed-large"):

2、文檔攝取(Ingest)

def ingest(self, pdf_file_path: str):

3、問答(Ask)

def ask(self, query: str, k: int = 5, score_threshold: float = 0.2):

本文章轉載微信公眾號@AI牛碼

上一篇:

Istio 使用 GatewayAPI實現流量管理

下一篇:

深度學習入門:萬字長文帶你回顧RCNN,帶你了解Fast RCNN到Faster RCNN
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費