DeepSeek R1 로컬 실행 + RAG 시스템 구축하기 (완벽 가이드)

DeepSeek R1을 로컬에서 실행하고 RAG(Retrieval-Augmented Generation) 시스템을 구축하는 방법을 정리했습니다.

이 가이드를 따라 하면, 로컬에서 DeepSeek R1을 실행하면서 지식 기반 검색(RAG)을 적용하여 강화된 문맥 기반 응답을 생성할 수 있습니다.




1️⃣ DeepSeek R1 로컬 실행하기

DeepSeek R1을 실행하려면 적절한 하드웨어소프트웨어 환경이 필요합니다.

1.1 하드웨어 요구 사항

  • GPU: Deepseek 70b 같은 경우 최소 80GB VRAM (A100 80GB) / RTX 4090(24GB) 2개 이상 필요
  • CPU: 최소 16코어 이상 권장
  • RAM: 최소 64GB (128GB 이상 권장)
  • 저장공간: 최소 1TB NVMe SSD (모델 파일 저장 용도)
  • 운영체제: Ubuntu 22.04 / Windows (WSL2) / macOS (CPU Only)

1.2 필요한 패키지 설치

# 필수 패키지 설치
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3 python3-pip git wget

# PyTorch 설치 (CUDA 사용)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

# DeepSeek R1 실행을 위한 Hugging Face Transformers 설치
pip install transformers accelerate sentencepiece

1.3 DeepSeek R1 모델 다운로드 및 실행

(1) 모델 다운로드

git clone https://github.com/deepseek-ai/deepseek-llm.git
cd deepseek-llm

# 7B 모델 다운로드 (67B 모델은 GPU 메모리 200GB 이상 필요)
wget https://huggingface.co/deepseek-ai/deepseek-llm-7b/resolve/main/model.safetensors

(2) DeepSeek R1 실행

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model_name = "./deepseek-llm"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.float16, device_map="auto")

# 테스트 입력
input_text = "DeepSeek R1은 무엇인가요?"
input_ids = tokenizer(input_text, return_tensors="pt").input_ids.to("cuda")

# 응답 생성
output_ids = model.generate(input_ids, max_length=200)
response = tokenizer.decode(output_ids[0], skip_special_tokens=True)

print(response)

이제 DeepSeek R1이 로컬에서 동작합니다!




2️⃣ RAG 시스템 구축하기

RAG(Retrieval-Augmented Generation)은 AI 모델이 외부 지식을 검색해 더 정확한 답변을 생성하는 방식입니다.

RAG 구축을 위해 LangChainFAISS(Facebook AI Similarity Search)를 사용합니다.

2.1 RAG 구축을 위한 라이브러리 설치

pip install faiss-cpu langchain chromadb

2.2 문서 기반 지식 검색 구축

이제 FAISS를 사용해 문서 데이터베이스를 만들고, DeepSeek R1과 연결하겠습니다.

(1) 문서 데이터 불러오기

from langchain.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings

# 문서 로드
loader = TextLoader("data/knowledge_base.txt")
documents = loader.load()

# 문서 조각화
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
texts = text_splitter.split_documents(documents)

# 임베딩 생성
vector_store = FAISS.from_documents(texts, OpenAIEmbeddings())

# 저장
vector_store.save_local("./faiss_index")




2.3 검색 + AI 답변 생성

DeepSeek R1이 검색한 정보를 바탕으로 답변을 생성하도록 설정합니다.

from langchain.chat_models import ChatOpenAI
from langchain.chains import ConversationalRetrievalChain
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings

# DeepSeek R1 로드
llm = ChatOpenAI(model_name="deepseek-llm", temperature=0.7)

# FAISS 인덱스 로드
vector_store = FAISS.load_local("./faiss_index", OpenAIEmbeddings())

# 검색 + 응답 시스템 구축
qa_chain = ConversationalRetrievalChain.from_llm(llm, vector_store.as_retriever())

# 질문 입력
query = "DeepSeek R1의 특징은?"
response = qa_chain.run(query)
print(response)

이제 DeepSeek R1이 자신의 데이터베이스에서 지식을 검색하고, 답변을 생성하는 RAG 시스템이 완성되었습니다!




3️⃣ API 서버 구축하기 (FastAPI)

이제 API를 만들어 웹 또는 다른 애플리케이션에서 사용할 수 있도록 하겠습니다.

3.1 FastAPI 설치

pip install fastapi uvicorn pydantic

3.2 API 서버 구축

다음 코드로 API 서버를 실행합니다.

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

# 요청 데이터 모델
class QueryRequest(BaseModel):
    question: str

@app.post("/ask")
async def ask_question(request: QueryRequest):
    response = qa_chain.run(request.question)
    return {"answer": response}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

3.3 API 호출하기

(1) curl로 요청 보내기

curl -X 'POST' \
  'http://localhost:8000/ask' \
  -H 'Content-Type: application/json' \
  -d '{"question": "DeepSeek R1은 어떤 모델인가요?"}'

(2) Python에서 API 호출하기

import requests

url = "http://localhost:8000/ask"
data = {"question": "DeepSeek R1은 어떤 모델인가요?"}

response = requests.post(url, json=data)
print(response.json()["answer"])




마무리: 완성된 RAG 시스템

  1. DeepSeek R1을 로컬에서 실행
  2. FAISS 기반의 검색 가능한 지식 데이터베이스 구축
  3. LangChain을 활용하여 문서 검색 + AI 답변 생성
  4. FastAPI를 통해 API 서버 구축
  5. 웹/애플리케이션과 연동 가능!

이제 RAG 기반 AI 챗봇을 활용하여 실시간 검색 + AI 답변 생성을 사용할 수 있습니다!



Views: 21

Leave a Reply

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다