国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

DeepSeek R1與Qwen大模型,構建Agentic RAG全攻略

發布于 2025-2-17 07:56
瀏覽
0收藏

最近,AI社區被 DeepSeek-R1 “刷屏” 了!作為一款極具變革意義的開源推理大語言模型(LLM),大家討論最多的是它的基礎能力,卻鮮有人關注其在智能體工作流程中的巨大潛力,也就是多個模型動態協作的應用場景。

今天,就帶大家實操搭建一個智能體檢索增強生成(RAG,Retrieval-Augmented Generation)系統。這個系統整合了:

  • DeepSeek-R1(70億參數蒸餾版):用于復雜推理,系統的 “智慧大腦”。。
  • 阿里云Qwen2.5(70億參數):主打快速對話交互,讓用戶交流體驗更流暢。
  • 輕量級智能體框架:協調前兩者,保障系統高效運轉。

完成搭建后,Qwen 會處理常規交互,復雜查詢則交給R1。接下來動手試試!

1 設置環境

1.1 設置虛擬環境并安裝依賴項

python3 -m venv .envs/agentic-ai
source .envs/agentic-ai/bin/activate
mkdir agentic-ai 
cd agentic-ai

pip install langchain langchain-huggingface langchain-community pypdf langchain_chroma
pip install chromadb smolagents python-dotenv gradio sentence-transformers
pip 'install smolagents[openai]'

1.2 配置Ollama

DeepSeek的第一代推理模型性能可與OpenAI-o1媲美,其中包括基于Llama和Qwen從DeepSeek-R1蒸餾得到的6個密集模型。

Qwen 2.5模型在阿里巴巴最新的大規模數據集上進行預訓練,該數據集包含多達18萬億個標記。該模型支持多達12.8萬個標記,并具備多語言能力。

下載模型:

ollama pull deepseek-r1:7b  
ollama pull qwen2.5:7b-instruct

增加上下文窗口:

Ollama默認的2048個標記不夠用。創建自定義模型文件??deepseek-r1-7b-8k.Modelfile???和??qwen2.5-7b-instruct-8k.Modelfile??:

$ cat deepseek-r1-7b-8k.Modelfile 
FROM deepseek-r1:7b 
PARAMETER num_ctx 8192

$ cat qwen2.5-7b-instruct-8k.Modelfile
FROM qwen2.5:7b-instruct  
PARAMETER num_ctx 8192

ollama create deepseek-r1-7b-8k -f ./deepseek-r1-7b-8k.Modelfile
ollama create qwen2.5:7b-instruct-8k -f ./qwen2.5-7b-instruct-8k.Modelfile

2 創建知識庫

2.1 添加文檔

將PDF文件放在??data/???目錄下,這些文件將構成知識庫的基礎。使用LangChain的??DirectoryLoader???加載PDF文件,并使用??RecursiveCharacterTextSplitter??將其拆分為較小的塊,以便進行高效的索引和檢索。這樣能確保內容以結構化方式處理,更便于查詢和管理。

from langchain_community.document_loaders import DirectoryLoader, PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_community.vectorstores import Chroma
import os
import shutil

def load_and_process_pdfs(data_dir: str):
    """從目錄加載PDF并拆分為塊。"""
    loader = DirectoryLoader(
        data_dir,
        glob="**/*.pdf",
        loader_cls=PyPDFLoader
    )
    documents = loader.load()

    # 將文檔拆分為塊
    text_splitter = RecursiveCharacterTextSplitter(
        chunk_size=1000,
        chunk_overlap=200,
        length_function=len,
    )
    chunks = text_splitter.split_documents(documents)
    return chunks

2.2 將塊存儲在向量存儲(Chroma)中

將PDF處理并拆分為塊后,存儲在Chroma向量存儲中,以便基于語義相似性進行高效的搜索和檢索。初始化并配置ChromaDB,然后使用Hugging Face Embeddings將每個塊轉換為向量表示,從而實現相關信息的準確快速檢索。

def create_vector_store(chunks, persist_dir: str):
    """創建并持久化Chroma向量存儲。"""
    # 如果存在現有向量存儲,則刪除
    if os.path.exists(persist_dir):
        print(f"正在從 {persist_dir} 刪除現有向量存儲")
        shutil.rmtree(persist_dir)

    # 初始化HuggingFace嵌入
    embedding_model = HuggingFaceEmbeddings(
        model_name="sentence-transformers/all-mpnet-base-v2",
        model_kwargs={'device': 'cpu'}
    )

    # 構建并持久化新的Chroma向量存儲
    print("正在構建并保存新的向量存儲...")
    vector_db = Chroma.from_documents(
        documents=chunks,
        embedding=embedding_model,
        persist_directory=persist_dir
    )
    return vector_db

2.3 完成知識庫創建

塊已在ChromaDB中建立索引并存儲后,知識庫就可以進行查詢了。運行最后一個代碼塊,加載并處理PDF文件,創建向量存儲,并基于語義相似性實現相關上下文的高效檢索。

def main():
    # 定義輸入數據和向量數據庫的路徑
    input_data_dir = os.path.join(os.path.dirname(__file__), "data")
    vector_db_dir = os.path.join(os.path.dirname(__file__), "chroma_db")

    # 加載PDF并拆分為較小的塊
    print("開始處理PDF...")
    document_chunks = load_and_process_pdfs(input_data_dir)
    print(f"從PDF生成了 {len(document_chunks)} 個文檔塊")

    # 構建并存儲向量數據庫
    print("正在構建向量存儲...")
    vector_db = create_vector_store(document_chunks, vector_db_dir)
    print(f"向量存儲已成功創建并保存到 {vector_db_dir}")

if __name__ == "__main__":
    main()

運行:

$ python ingest_pdfs.py  
開始處理PDF...
從PDF生成了312個文檔塊
正在構建向量存儲...
向量存儲已成功創建并保存到./agentic-ai/chroma_db
$ ls chroma_db 
chroma.sqlite3                       d4c48cab-0467-4ca8-ad42-bafa5eb83040
$

3 構建智能體系統

3.1 定義推理模型(DeepSeek-R1)

在智能體系統里,推理模型是 “心臟”。DeepSeek-R1 作為強大的推理模型,能夠處理復雜查詢。它可解析自然語言,結合知識庫給出連貫且切題的回答,還能理解文檔并提取關鍵知識。將 DeepSeek-R1 和知識庫融合,系統便能依據向量數據庫內容解決問題、回應查詢以及推理。

推理時,DeepSeek-R1 支持多步迭代,不斷優化回復,直至得到滿意答案,或達到預設的??max_steps??限制,以此確保推理準確又高效,推動智能體系統穩定運行。

# reasoning_model.py
from smolagents import OpenAIServerModel, CodeAgent
import os

# 定義本地模型名稱
reasoning_model_id = "deepseek-r1-7b-8k"# 使用DeepSeek進行推理

def get_model(model_id):
    """返回一個Ollama模型。"""
    return OpenAIServerModel(
        model_id=model_id,
        api_base="http://localhost:11434/v1",  # Ollama API端點
        api_key="ollama"
    )

# 使用DeepSeek創建推理模型
reasoning_model = get_model(reasoning_model_id)

# 創建推理智能體
reasoner = CodeAgent(tools=[], model=reasoning_model, add_base_tools=False, max_steps=2)

3.2 創建RAG工具

這一步創建RAG(檢索增強生成)工具,該工具結合信息檢索和推理來回答用戶查詢。該工具利用向量數據庫(Chroma)通過嵌入存儲和檢索相關文檔。當用戶提出問題時,該工具會從數據庫中搜索最相關的3個文檔。然后,這些文檔將作為上下文,促使推理模型(DeepSeek-R1)生成相關且簡潔的答案。

這種方法通過將文檔檢索與推理相結合,提高了系統提供準確、有上下文感知答案的能力,適用于復雜或定義不明確的查詢。

# rag_tool.py
from langchain_chroma import Chroma
from langchain_huggingface import HuggingFaceEmbeddings
from reasoning_model import reasoner  # 從reasoning_model.py導入reasoner
import os

# 初始化向量存儲和嵌入
embeddings = HuggingFaceEmbeddings(
    model_name="sentence-transformers/all-mpnet-base-v2",
    model_kwargs={'device': 'cpu'}
)

# 向量數據庫目錄
db_dir = os.path.join(os.path.dirname(__file__), "chroma_db")

# 初始化向量存儲
vectordb = Chroma(persist_directory=db_dir, embedding_function=embeddings)


def rag_with_reasoner(user_query: str) -> str:
    """
    在向量數據庫中搜索相關上下文,并使用推理模型生成回復。

    參數:
        user_query:用戶的問題。
    """
    # 檢索相關文檔
    docs = vectordb.similarity_search(user_query, k=3)
    context = "\n\n".join(doc.page_content for doc in docs)

    # 為推理模型創建提示
    prompt = f"""根據以下上下文,簡潔地回答用戶的問題。
    如果信息不足,請為RAG提出更好的查詢建議。

上下文:
{context}

問題:{user_query}

答案:"""

    # 使用reasoner(DeepSeek-R1)生成回復
    response = reasoner.run(prompt, reset=False)
    return response

3.3 配置主智能體(Qwen)

主智能體(Qwen)是系統與用戶交互和處理查詢的主要接口。主智能體使用Qwen模型(Qwen-2.5:7b)來解釋用戶輸入,并調用適當的工具生成回復。

# primary_agent.py
from smolagents import OpenAIServerModel, ToolCallingAgent
from rag_tool import rag_with_reasoner  # 從rag_tool.py導入工具函數
import os

def get_model(model_id):
    """返回一個Ollama模型。"""
    return OpenAIServerModel(
        model_id=model_id,
        api_base="http://localhost:11434/v1",  # Ollama API端點
        api_key="ollama"
    )

# 加載工具模型(Qwen-2.5:7b)
primary_model = get_model("qwen2.5:7b-instruct-8k")

# 使用Qwen創建主智能體以生成工具回復
primary_agent = ToolCallingAgent(tools=[rag_with_reasoner], model=primary_model, add_base_tools=False, max_steps=3)

# 導出智能體以供應用程序使用
def get_primary_agent():
    return primary_agent

主智能體使用??ToolCallingAgent???類構建,該類使模型能夠利用特定工具,在本案例中即??rag_with_reasoner??工具。該工具從向量數據庫中檢索相關文檔,并將其傳遞給推理模型(DeepSeek-R1)以生成回復。智能體配置為最多進行3步推理,確保它根據提供的上下文迭代并完善答案。

這種設置確保主智能體能夠利用RAG過程,為用戶查詢提供智能且上下文相關的回復,同時控制推理循環的次數。它使系統能夠精確高效地處理各種問題。

4 啟動Gradio用戶界面

啟動Gradio用戶界面,使用戶能夠與智能體系統進行交互。Gradio為主智能體創建了一個簡單易用的界面。該界面允許用戶輸入查詢,并接收由推理和RAG工具生成的回復。這一步將后端功能與可視化界面連接起來,使系統對用戶來說可訪問且具有交互性。

# app.py
from primary_agent import get_primary_agent
from smolagents import GradioUI

# 從primary_agent.py獲取主智能體
primary_agent = get_primary_agent()

# 啟動界面的主函數
def main():
    GradioUI(primary_agent).launch()

if __name__ == "__main__":
    main()

運行:

$ python app.py                                                                                                  
* 正在本地URL運行:http://127.0.0.1:7860

5  工作原理

  1. 用戶輸入:用戶在Gradio界面提交問題,開啟交互流程。
  2. Qwen決策:作為主智能體的Qwen迅速判斷,簡單問題直接作答;復雜問題則調用RAG工具。
  3. RAG工具運作:RAG工具從ChromaDB檢索相關上下文,將分析任務委托給DeepSeek-R1。
  4. 生成回復:DeepSeek-R1生成見解,Qwen將其整合,給出最終回復。

6 改進方向

  • 回退邏輯:當DeepSeek-R1置信度低時,自動觸發網絡搜索,補充信息。
  • 多跳查詢:智能體可迭代優化查詢,提升復雜問題處理能力。
  • LangGraph集成:構建復雜工作流程,實現高效狀態管理。

7 架構優勢與展望

本系統由Qwen和DeepSeek-R1協同工作,Qwen保障速度,DeepSeek-R1提供深度。這種架構帶來了明顯優勢:

  • 效率:DeepSeek-R1僅處理復雜查詢,資源利用高效。
  • 靈活性:可輕松更換模型,如采用Llama-3作為主模型。
  • 可擴展性:便于添加網絡搜索、計算器等工具。

智能體時代已經來臨,快基于此架構,構建更多創新應用吧!

本文轉載自 ??AI科技論談??,作者: AI科技論談

收藏
回復
舉報
回復
相關推薦
久久久久久久久久久电影| 性欧美在线看片a免费观看| 高h视频在线播放| 亚洲精品电影网| 国产精品白丝一区二区三区| 亚洲一区二区久久久久久| 奇米色一区二区三区四区| 成人在线观看a| 欧美午夜一区二区| 欧美天堂一区二区| 99re视频在线| 播五月开心婷婷综合| 超碰在线公开免费| 亚洲а∨天堂久久精品喷水| theporn国产在线精品| 国产免费一区二区| 国产欧美精品一区| a视频在线免费看| 97涩涩爰在线观看亚洲| 日本在线不卡视频| 麻豆福利视频| 亚洲国内精品在线| 青青草国产成人a∨下载安卓| 一区二区精品国产| 亚洲成人在线网站| 国产精品美女午夜爽爽| 国产精品一区二区欧美黑人喷潮水| 91美女片黄在线观看91美女| 尤物视频在线免费观看| 欧美福利视频在线观看| 亚洲二区视频| 丁香婷婷激情| 在线中文字幕日韩| 亚洲理论在线| 宅男午夜视频| 久久国产精品久久久久| 免费精品视频在线| 色哟哟在线观看| 91国内免费在线视频| 国产高清在线观看免费不卡| 男人和女人做事情在线视频网站免费观看| 神马久久久久久| 视频一区二区不卡| 久久久久久女乱国产| 97免费视频在线| www.日韩在线| 手机在线观看av| 久久伊人一区| 天天影视色香欲综合网老头| 美女一区2区| 好吊妞无缓冲视频观看| 精品精品国产高清a毛片牛牛| 中文字幕一区二区三区久久网站| 日本激情综合网| 亚洲欧美自拍一区| 久久视频一区| av小片在线| 北条麻妃高清一区| 日韩欧美在线视频| 五月综合激情| 日本天堂影院在线视频| 国产精品视频大全| 亚洲精品日产精品乱码不卡| 国产精品一站二站| 国产xxxx振车| 亚洲精品动漫久久久久| 亚洲女人av| 午夜在线视频播放| 成人永久免费| 色婷婷久久一区二区三区麻豆| 日韩aaaa| 性欧美18+| 国产精品中文久久久久久久| 亚洲国产欧美在线| 日本a级不卡| 亚洲mv在线| 蜜桃av噜噜一区二区三区小说| 好吊色欧美一区二区三区四区 | 欧美一级视频免费在线观看| 女人色偷偷aa久久天堂| 欧美性猛交7777777| 国产精品日韩电影| 亚洲网友自拍偷拍| 日韩大片在线| 91电影在线播放| 日韩欧美手机在线| 亚洲欧美精品一区| 播五月开心婷婷综合| 超碰97久久国产精品牛牛| 国产对白国语对白| 国产原创欧美精品| 678五月天丁香亚洲综合网| 免费在线观看日韩欧美| 欧洲成人一区| 国产色视频在线播放| 国产精品男人的天堂| 欧美视频中文一区二区三区在线观看| 一本久道久久综合婷婷鲸鱼 | 亚洲国产精品99久久| 国产精品一品视频| 老司机精品视频在线播放| 草久在线视频| 欧美日韩在线精品一区二区三区| 亚洲天堂精品在线| 91老师片黄在线观看| 国产综合久久久| 中文字幕在线视频区| 一区二区三区欧美在线| 亚洲天堂精品在线| 亚洲欧美日韩在线| 99热免费精品在线观看| 欧美日韩美女| 天堂视频福利| 神马影院一区二区| 欧美大胆在线视频| 一本到不卡精品视频在线观看 | 中文无码久久精品| 成人日韩欧美| 国产福利视频在线播放| 国产精品电影在线观看| 精品国产自在久精品国产| 91蜜桃在线观看| 忘忧草精品久久久久久久高清| 日本动漫理论片在线观看网站| 999精品网站| 超碰97人人在线| 最新国产精品亚洲| 狠狠躁夜夜躁久久躁别揉| 美日韩一区二区三区| 国产亚洲精品美女久久| 蜜芽在线免费观看| 久久九九国产视频| 免费电影一区| 欧美一级高清免费播放| 欧美精品一区二区三区在线| 亚洲欧美日韩国产综合在线 | 天天av综合| 欧美va在线| 日韩精品视频无播放器在线看 | 在线观看的黄色| 黄色三级电影网| 在线亚洲美日韩| 91精品国产电影| 欧美精品一区二区三区蜜桃 | 影院免费视频| 樱花www成人免费视频| 日本精品视频在线播放| 亚洲精品国产精品自产a区红杏吧| 一区二区三区在线视频免费| 久久丁香综合五月国产三级网站 | 欧美精品久久久| 欧美中文字幕在线| 亚洲网在线观看| 欧美制服丝袜第一页| 日本一区二区三区在线不卡| 亚洲在线成人| 日韩免费一区| 警花av一区二区三区| 都市激情久久综合| 亚在线播放中文视频| 少妇高清精品毛片在线视频| 日本在线观看一区| 91久久精品国产91久久| 欧美精品少妇videofree| 精品精品国产高清一毛片一天堂| 懂色av中文一区二区三区天美| 久久精品人人做| 九九在线精品视频| 欧美日韩一区自拍| 婷婷亚洲精品| 国产精品一级在线观看| 性xxxxfreexxxxx欧美丶| 免费黄色在线网站| 欧美孕妇孕交xxⅹ孕妇交| 黄网站免费观看| 人人干人人干人人| 欧美视频在线播放一区| 天天做天天爱天天高潮| 精品999在线观看| 国产欧美日韩中文字幕在线| 欧美激情精品久久久久久变态| 亚洲日本aⅴ片在线观看香蕉| 3d成人动漫网站| 欧美系列一区二区| 狠狠久久五月精品中文字幕| 最新不卡av在线| 国产性做久久久久久| 成人国产免费视频| 国产精品一区二区黑丝| 久久精品国产亚洲高清剧情介绍| 在线亚洲自拍| 欧美jizzhd精品欧美巨大免费| 欧美一级精品片在线看| 午夜先锋成人动漫在线| 黄色成人美女网站| 精品网站aaa| 妖精一区二区三区精品视频| 日韩av网站在线免费观看| 日本欧美韩国国产| 精品国产123区|