로컬 RAG 완전 구축 가이드 — Ollama로 내 PC에서 AI 검색 만들기

인터넷 없이, API 비용 없이, 내 문서를 이해하는 AI를 직접 만드는 방법


RAG란 무엇인가?

RAG(Retrieval-Augmented Generation)는 AI가 답변을 생성하기 전에 관련 문서를 먼저 검색해서 참고하게 만드는 기술이다.

일반 LLM의 한계:
– 학습 데이터 이후의 정보를 모른다
– 내 회사 문서, 개인 노트를 이해하지 못한다
– 없는 내용을 지어낸다 (환각 현상)

RAG를 쓰면:
– 내가 올린 문서 기반으로만 답한다
– 최신 정보도 문서로 넣으면 바로 반영된다
– 출처를 명확히 제시한다


왜 로컬 RAG인가?

클라우드 RAG(OpenAI, Anthropic 등)의 문제:
– API 사용료 발생 (토큰당 과금)
– 민감한 문서를 외부 서버에 전송해야 함
– 인터넷 연결 필수

로컬 RAG는:
– 완전 무료 (전기세 외 없음)
– 문서가 내 PC 밖으로 나가지 않음
– 오프라인 동작 가능


필요한 것

항목 최소 사양
RAM 8GB (16GB 권장)
GPU 없어도 가능 (CPU 모드)
OS Windows / macOS / Linux
도구 Ollama, Python 3.10+

1단계: Ollama 설치

Ollama는 로컬 LLM을 가장 쉽게 실행하는 도구다.

Windows / macOS:

https://ollama.com 에서 설치 파일 다운로드

Linux:

curl -fsSL https://ollama.com/install.sh | sh

설치 확인:

ollama --version

2단계: 모델 다운로드

RAG에 필요한 두 가지 모델을 받는다.

① 언어 모델 (답변 생성용)

ollama pull gemma3:4b
  • 약 2.5GB
  • 한국어 이해도 양호

② 임베딩 모델 (문서 검색용)

ollama pull nomic-embed-text
  • 약 274MB
  • 문서를 벡터로 변환

3단계: Python 환경 설정

pip install langchain langchain-ollama chromadb pypdf

각 패키지 역할:
langchain — RAG 파이프라인 구성
langchain-ollama — Ollama 연동
chromadb — 벡터 데이터베이스 (문서 저장)
pypdf — PDF 파일 읽기


4단계: 문서 준비

테스트용으로 아무 PDF나 준비한다.

📁 documents/
   └── my_document.pdf

5단계: RAG 시스템 구축

아래 코드를 rag.py로 저장한다.

from langchain_ollama import OllamaEmbeddings, OllamaLLM
from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.vectorstores import Chroma
from langchain.chains import RetrievalQA

# 1. 문서 로드
loader = PyPDFLoader("documents/my_document.pdf")
documents = loader.load()

# 2. 문서 분할 (청크 단위로 쪼개기)
splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50
)
chunks = splitter.split_documents(documents)
print(f"총 {len(chunks)}개 청크 생성")

# 3. 벡터 DB에 저장
embeddings = OllamaEmbeddings(model="nomic-embed-text")
vectorstore = Chroma.from_documents(
    documents=chunks,
    embedding=embeddings,
    persist_directory="./chroma_db"
)

# 4. LLM 연결
llm = OllamaLLM(model="gemma3:4b")

# 5. RAG 체인 구성
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    retriever=vectorstore.as_retriever(search_kwargs={"k": 3}),
    return_source_documents=True
)

# 6. 질문하기
while True:
    query = input("\n질문: ")
    if query.lower() == "exit":
        break

    result = qa_chain.invoke({"query": query})
    print(f"\n답변: {result['result']}")
    print(f"\n출처: {[doc.metadata for doc in result['source_documents']]}")

실행:

python rag.py

6단계: 결과 확인

총 47개 청크 생성

질문: 이 문서의 핵심 내용은?
답변: 이 문서는 ...
출처: [{'page': 2, 'source': 'documents/my_document.pdf'}]

자주 묻는 질문

Q. GPU가 없어도 되나요?
CPU만으로도 동작한다. 응답이 느릴 뿐 (gemma3:4b 기준 약 20-60초). GPU가 있으면 2-5초로 줄어든다.

Q. 한국어 문서도 되나요?
된다. gemma3, Qwen, EXAONE 등 한국어 지원 모델을 쓰면 된다.

Q. PDF 외 다른 형식은?
Word(.docx), TXT, CSV, 웹페이지 등 대부분 지원한다. langchain의 다양한 loader를 쓰면 된다.

Q. 문서가 많으면 느려지나요?
ChromaDB는 로컬 벡터 DB라 수천 개 문서도 검색은 빠르다. 처음 임베딩 생성이 오래 걸리지만 이후 재사용 가능하다.


모델 성능 비교

모델 크기 한국어 속도
gemma3:4b 2.5GB ★★★☆ 빠름
gemma3:12b 7GB ★★★★ 중간
qwen2.5:7b 4.5GB ★★★★ 중간
llama3.2:3b 2GB ★★☆☆ 매우 빠름

다음 단계

기본 RAG를 구축했다면 이런 확장이 가능하다:

  • 웹 UI 추가 — Streamlit으로 브라우저 인터페이스
  • 다중 문서 — 여러 PDF를 한번에 인덱싱
  • n8n 연동 — 자동화 워크플로우에 RAG 삽입
  • 재순위화(Reranking) — 검색 정확도 향상

정리

로컬 RAG는 더 이상 개발자 전유물이 아니다. Ollama 하나로 일반 PC에서도 완전한 AI 검색 시스템을 구축할 수 있다.

비용 없이, 개인정보 유출 없이, 인터넷 없이 — 내 문서를 가장 잘 이해하는 AI를 만들어보자.


태그: 로컬 LLM, RAG, Ollama, 로컬AI, AI검색, Gemma, ChromaDB, 로컬RAG구축

“로컬 RAG 완전 구축 가이드 — Ollama로 내 PC에서 AI 검색 만들기”에 대한 6개의 생각

  1. 핑백: n8n + Ollama로 완전 무료 AI 자동화 워크플로우 만들기 2026 - Aria AI

댓글 달기

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

위로 스크롤