首頁 >web前端 >js教程 >使用Deep Seek Rrom刮擦構建抹布(檢索型的生成)應用

使用Deep Seek Rrom刮擦構建抹布(檢索型的生成)應用

Linda Hamilton
Linda Hamilton原創
2025-01-29 04:29:09471瀏覽

Building a RAG (Retrieval-Augmented Generation) Application Using Deep Seek Rrom Scratch

檢索效果生成(RAG)將檢索系統與生成模型相結合,以提供更準確的上下文富裕答案。 Deep Seek R1是一種強大的工具,可幫助我們通過將檢索功能與先進的語言模型相結合來有效地構建此類系統。在此博客中,我們將詳細介紹使用Deep Seek R1從頭開始創建RAG應用程序的過程。

1。了解抹布的結構

抹布應用程序圍繞三個主要組件構建:

  1. 檢索器:從知識庫中找到相關文檔。
  2. > Generator:使用檢索的文檔作為上下文生成答案。
  3. 知識基礎
  4. :以易於檢索的格式存儲所有文檔或信息。

2。設置環境

>步驟1:安裝所需的依賴項

> 開始,請確保您安裝了Python。然後,設置所需的庫,包括深搜尋R1。使用以下命令安裝依賴項:


pip install deep-seek-r1 langchain transformers sentence-transformers faiss-cpu
>步驟2:初始化項目

> 創建一個新的項目目錄並為隔離設置虛擬環境。

>


mkdir rag-deepseek-app
cd rag-deepseek-app
python -m venv venv
source venv/bin/activate  # or venv\Scripts\activate for Windows

3。構建知識庫

知識庫是抹布系統的核心。在此示例中,我們將使用文本文檔,但是您可以將其擴展到PDF,數據庫或其他格式。

步驟1:準備數據

在名為Data的文件夾中組織您的文檔。


>步驟2:嵌入文檔

rag-deepseek-app/
└── data/
    ├── doc1.txt
    ├── doc2.txt
    └── doc3.txt

使用Deep Seek R1嵌入文檔以有效檢索。


4。構建檢索和發電管道

from deep_seek_r1 import DeepSeekRetriever
from sentence_transformers import SentenceTransformer
import os

# Load the embedding model
embedding_model = SentenceTransformer('all-MiniLM-L6-v2')

# Prepare data
data_dir = './data'
documents = []
for file_name in os.listdir(data_dir):
    with open(os.path.join(data_dir, file_name), 'r') as file:
        documents.append(file.read())

# Embed the documents
embeddings = embedding_model.encode(documents, convert_to_tensor=True)

# Initialize the retriever
retriever = DeepSeekRetriever()
retriever.add_documents(documents, embeddings)
retriever.save('knowledge_base.ds')  # Save the retriever state

現在,我們將設置管道來檢索相關文檔並生成響應。 >

>步驟1:加載獵犬

>步驟2:集成生成器

>我們將使用OpenAI的基於GPT的模型或擁抱面部變壓器來生成。
retriever = DeepSeekRetriever.load('knowledge_base.ds')

5。查詢系統


>這是我們將所有內容整合在一起以處理用戶查詢的方式。
from transformers import AutoModelForCausalLM, AutoTokenizer

# Load the generator model
generator_model = AutoModelForCausalLM.from_pretrained("gpt2")
tokenizer = AutoTokenizer.from_pretrained("gpt2")

def generate_response(query, retrieved_docs):
    # Combine the query and retrieved documents
    input_text = query + "\n\n" + "\n".join(retrieved_docs)

    # Tokenize and generate a response
    inputs = tokenizer.encode(input_text, return_tensors='pt', max_length=512, truncation=True)
    outputs = generator_model.generate(inputs, max_length=150, num_return_sequences=1)

    return tokenizer.decode(outputs[0], skip_special_tokens=True)

>示例查詢


def rag_query(query):
    # Retrieve relevant documents
    retrieved_docs = retriever.search(query, top_k=3)

    # Generate a response
    response = generate_response(query, retrieved_docs)

    return response

6。部署應用程序

要使抹布系統訪問,您可以使用燒瓶或fastapi部署它。
query = "What is the impact of climate change on agriculture?"
response = rag_query(query)
print(response)

>步驟1:設置燒瓶

安裝燒瓶:

pip install deep-seek-r1 langchain transformers sentence-transformers faiss-cpu

創建一個app.py文件:

mkdir rag-deepseek-app
cd rag-deepseek-app
python -m venv venv
source venv/bin/activate  # or venv\Scripts\activate for Windows

運行服務器:

rag-deepseek-app/
└── data/
    ├── doc1.txt
    ├── doc2.txt
    └── doc3.txt

>步驟2:測試API

>使用Postman或Curl發送查詢:

from deep_seek_r1 import DeepSeekRetriever
from sentence_transformers import SentenceTransformer
import os

# Load the embedding model
embedding_model = SentenceTransformer('all-MiniLM-L6-v2')

# Prepare data
data_dir = './data'
documents = []
for file_name in os.listdir(data_dir):
    with open(os.path.join(data_dir, file_name), 'r') as file:
        documents.append(file.read())

# Embed the documents
embeddings = embedding_model.encode(documents, convert_to_tensor=True)

# Initialize the retriever
retriever = DeepSeekRetriever()
retriever.add_documents(documents, embeddings)
retriever.save('knowledge_base.ds')  # Save the retriever state

以上是使用Deep Seek Rrom刮擦構建抹布(檢索型的生成)應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn