Rumah >hujung hadapan web >tutorial js >Membina Aplikasi Generasi Rag (Retrieval-Augmented Generation) Menggunakan Deep Seek RROM Scratch

Membina Aplikasi Generasi Rag (Retrieval-Augmented Generation) Menggunakan Deep Seek RROM Scratch

Linda Hamilton
Linda Hamiltonasal
2025-01-29 04:29:09498semak imbas

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

Generasi pengambilan semula (RAG) menggabungkan sistem pengambilan semula dengan model generatif untuk memberikan jawapan yang lebih tepat dan kaya konteks. Deep Seek R1 adalah alat yang berkuasa yang membantu kami membina sistem sedemikian dengan cekap dengan mengintegrasikan keupayaan pengambilan semula dengan model bahasa canggih. Dalam blog ini, kami akan berjalan melalui proses membuat aplikasi rag dari awal menggunakan Deep Seek R1.


1. Memahami seni bina Rag

Aplikasi RAG dibina sekitar tiga komponen utama:

  1. retriever : Cari dokumen yang relevan dari pangkalan pengetahuan.
  2. Generator : Menggunakan dokumen yang diambil sebagai konteks untuk menghasilkan jawapan.
  3. Pangkalan Pengetahuan : Menyimpan semua dokumen atau maklumat dalam format yang mudah diperolehi.

2. Menyiapkan Alam Sekitar

Langkah 1: Pasang ketergantungan yang diperlukan

Untuk memulakan, pastikan anda memasang Python. Kemudian, sediakan perpustakaan yang diperlukan, termasuk Deep Seek R1. Pasang kebergantungan menggunakan arahan berikut:

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

Langkah 2: Inisialisasi Projek

Buat direktori projek baru dan sediakan persekitaran maya untuk pengasingan.

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

3. Membina Pangkalan Pengetahuan

Pangkalan pengetahuan adalah jantung sistem kain. Untuk contoh ini, kami akan menggunakan dokumen teks, tetapi anda boleh melanjutkannya ke PDF, pangkalan data, atau format lain.

Langkah 1: Sediakan data

mengatur dokumen anda dalam folder bernama data.

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

Langkah 2: Benamkan dokumen

Gunakan Deep Seek R1 untuk membenamkan dokumen untuk mendapatkan semula yang cekap.

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

4. Membina saluran paip pengambilan dan generasi

Sekarang, kami akan menubuhkan saluran paip untuk mendapatkan dokumen yang relevan dan menghasilkan respons.

Langkah 1: Muatkan Retriever

retriever = DeepSeekRetriever.load('knowledge_base.ds')

Langkah 2: Mengintegrasikan penjana

kami akan menggunakan model berasaskan GPT OpenAI atau memeluk transformer muka untuk generasi.

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)

5. Menanyakan sistem

Inilah cara kami meletakkan semuanya bersama -sama untuk mengendalikan pertanyaan pengguna.

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

Contoh pertanyaan

query = "What is the impact of climate change on agriculture?"
response = rag_query(query)
print(response)

6. Menggunakan aplikasi

Untuk menjadikan sistem RAG boleh diakses, anda boleh menggunakannya menggunakan Flask atau Fastapi.

Langkah 1: Sediakan Flask

Pasang Flask:

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

Buat fail app.py:

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

Jalankan pelayan:

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

Langkah 2: Uji API

Gunakan Postman atau Curl untuk menghantar pertanyaan:

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

Atas ialah kandungan terperinci Membina Aplikasi Generasi Rag (Retrieval-Augmented Generation) Menggunakan Deep Seek RROM Scratch. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn