딥시크 R1 및 올라마를 사용한 네이티브 RAG 애플리케이션
개요
이 문서에서는 DeepSeek R1 및 Ollama 현지화된 RAG(검색 증강 세대) 애플리케이션을 구축할 수 있습니다. 또한 다음과 같은 기능을 최대한 활용할 수 있는 좋은 방법입니다. LangChain으로 로컬 RAG 애플리케이션 구축하기 보충제입니다.
문서 처리, 벡터 저장, 모델 호출 및 기타 주요 단계를 포함한 예제를 통해 전체 구현 과정을 보여 드리겠습니다. 이 튜토리얼에서는 다음을 사용합니다. DeepSeek-R1 1.5B를 기본 언어 모델로 사용합니다. 모델마다 고유한 특성과 성능이 있다는 점을 고려하여 독자는 실제 요구 사항에 따라 다른 적합한 모델을 선택하여 구현할 수 있습니다. RAG System.
참고: 이 문서에는 핵심 코드 스니펫과 자세한 설명이 포함되어 있습니다. 전체 코드는 다음 링크에서 확인할 수 있습니다. 노트북 .
사전 준비
먼저 Ollama를 다운로드하고 환경을 구성해야 합니다.
올라마의 GitHub 리포지토리에 자세한 설명이 나와 있으며, 간략하게 요약하면 다음과 같습니다.
1단계, 올라마를 다운로드합니다.
다운로드 를 클릭하고 두 번 클릭하여 Ollama 애플리케이션을 실행합니다.

2단계, 설치를 확인합니다.
명령줄에 다음과 같이 입력합니다. ollama
다음 메시지가 나타나면 Ollama가 성공적으로 설치된 것입니다.

3단계, 모델을 당깁니다.
- 명령줄에서 다음을 참조하세요. 올라마 모델 목록 노래로 응답 텍스트 임베딩 모델 목록 모델 풀링하기. 이 튜토리얼에서는
deepseek-r1:1.5b
노래로 응답nomic-embed-text
예시.- 명령줄 입력
ollama pull deepseek-r1:1.5b
일반 오픈 소스 대규모 언어 모델 가져오기deepseek-r1:1.5b
(모델을 가져올 때 속도가 느려질 수 있습니다. 가져오기 오류가 발생하면 명령을 다시 입력하여 가져올 수 있습니다.) - 명령줄 입력
ollama pull nomic-embed-text
pull 텍스트 임베딩 모델nomic-embed-text
.
- 명령줄 입력
- 애플리케이션이 실행 중이면 모든 모델이 자동으로
localhost:11434
시작하기. - 모델을 선택할 때는 로컬 하드웨어 성능, 이 튜토리얼의 참조 비디오 메모리 크기를 고려해야 합니다.
CPU Memory > 8GB
.
4단계, 모델을 배포합니다.
명령줄 창에서 다음 명령을 실행하여 모델을 배포합니다.
ollama run deepseek-r1:1.5b

다음과 같이 명령줄에서 직접 배포 모델을 실행할 수도 있습니다.
ollama run deepseek-r1:1.5b
.

Ollama를 사용하여 DeepSeek R1 모델만 배포하려는 경우에는 다음 단계가 필요하지 않습니다.
5단계, 종속성을 설치합니다.
# langchain_community
pip install langchain langchain_community
# Chroma
pip install langchain_chroma
# Ollama
pip install langchain_ollama
이 문제를 해결했으니 이제 LangChain, Ollama 및 DeepSeek R1 다음은 구현 단계에 대한 자세한 설명입니다. 구현 단계는 아래에 자세히 설명되어 있습니다.
1. 문서 로드
PDF 문서를 불러와서 적절한 크기의 텍스트 블록으로 자릅니다.
from langchain_community.document_loaders import PDFPlumberLoader
file = "DeepSeek_R1.pdf"
# Load the PDF
loader = PDFPlumberLoader(file)
docs = loader.load()
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0)
all_splits = text_splitter.split_documents(docs)
2. 벡터 스토리지 초기화
크로마 데이터베이스를 사용하여 문서 벡터를 저장하고 Ollama에서 제공하는 임베딩 모델을 구성합니다.
from langchain_chroma import Chroma
from langchain_ollama import OllamaEmbeddings
local_embeddings = OllamaEmbeddings(model="nomic-embed-text")
vectorstore = Chroma.from_documents(documents=all_splits, embedding=local_embeddings)
3. 체인 표현식 구성
모델 및 큐 템플릿을 설정하여 처리 체인을 구축하세요.
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_ollama import ChatOllama
model = ChatOllama(
model="deepseek-r1:1.5b",
)
prompt = ChatPromptTemplate.from_template(
"Summarize the main themes in these retrieved docs: {docs}"
)
# 将传入的文档转换成字符串的形式
def format_docs(docs):
return "\n\n".join(doc.page_content for doc in docs)
chain = {"docs": format_docs} | prompt | model | StrOutputParser()
question = "What is the purpose of the DeepSeek project?"
docs = vectorstore.similarity_search(question)
chain.invoke(docs)
4. 검색을 통한 QA
검색 및 Q&A 기능을 통합합니다.
from langchain_core.runnables import RunnablePassthrough
RAG_TEMPLATE = """
You are an assistant for question-answering tasks. Use the following pieces of retrieved context to answer the question. If you don't know the answer, just say that you don't know. Use three sentences maximum and keep the answer concise.
<context>
{context}
</context>
Answer the following question:
{question}"""
rag_prompt = ChatPromptTemplate.from_template(RAG_TEMPLATE)
retriever = vectorstore.as_retriever()
qa_chain = (
{"context": retriever | format_docs, "question": RunnablePassthrough()}
| rag_prompt
| model
| StrOutputParser()
)
question = "What is the purpose of the DeepSeek project?"
# Run
qa_chain.invoke(question)
요약
이 튜토리얼에서는 DeepSeek R1과 Ollama를 사용하여 현지화된 RAG 애플리케이션을 구축하는 방법을 자세히 설명합니다. 네 가지 주요 단계를 통해 전체 기능을 구현합니다:
- 파일 처리 PDFPlumberLoader를 사용하여 PDF 문서를 로드하고 RecursiveCharacterTextSplitter를 사용하여 텍스트를 적절한 크기의 덩어리로 분할합니다.
- 벡터 스토리지 Chroma 데이터베이스와 Ollama의 임베딩 모델을 사용하여 후속 유사도 검색을 위한 기반을 제공하는 벡터 스토리지 시스템입니다.
- 체인 빌드 문서 처리, 큐 템플릿, 모델 응답을 플로우스루 프로세스에 통합하는 처리 체인을 설계하고 구현합니다.
- RAG 실현 검색과 Q&A 기능을 통합하여 문서 콘텐츠를 기반으로 사용자 질의에 답변할 수 있는 완벽한 검색 강화 생성 시스템을 구현합니다.
이 튜토리얼을 통해 나만의 로컬 RAG 시스템을 빠르게 구축하고 실제 필요에 따라 개선하도록 사용자 지정할 수 있습니다. 실제로 다양한 모델과 매개변수 구성을 시도하여 최대한 활용하는 것이 좋습니다.
참고: 스트림릿 또는 FastAPI와 같은 도구를 사용하면 로컬 RAG 애플리케이션을 웹 서비스로 배포할 수 있어 더 다양한 애플리케이션 시나리오를 구현할 수 있습니다.
리포지토리는 또한 다음을 제공합니다.
app.py
파일을 직접 실행하여 웹 서비스를 시작할 수 있습니다. 문서 딥시크 R1 & 올라마로 RAG 시스템 구축하기. 참고: 이 코드를 실행하기 전에 Ollama 서비스를 미리 실행하세요.
대화 페이지는 다음과 같습니다:

© 저작권 정책
이 글은 저작권이 있으며 무단으로 복제해서는 안 됩니다.
관련 문서
댓글 없음...