마루옵스서버 · 네트워크 · AI 기술 노트

소개문의

Local LLM 구축하기: Windows 첫 실행부터 RAG·운영까지 30편

작은 모델의 첫 답변부터 문서 검색과 RAG, 도구 호출, 운영·복원까지 다루는 30편의 연재입니다. 기본 환경은 Windows PC와 Ollama예요. Hermes·OpenClaw, 외부 모델을 연결하는 OpenRouter는 필요한 부분에서 선택해 살펴볼 수 있습니다.

기준 환경: Windows 11 x64, 로컬 Ollama, 기본 모델 qwen3:4b-instruct. Python 실습은 3.12와 표준 라이브러리 중심입니다. 모델 태그·공식 문서 확인 기준은 2026년 10월 18일이며 최신 성능 순위를 표방하지 않습니다.

식물과 노트북이 놓인 작업 공간
사진: Farrel Nobel farrelnobel · Wikimedia Commons 원본 · CC0

시간이 없다면 이 순서로 읽습니다

목표추천 경로
오늘 로컬 AI와 대화하기01 → 02 → 03 → 04
내 문서에 근거해 답하기08 → 13 → 16 → 17 → 18 → 29 → 30
에이전트 구조와 도구 이해19 → 20 → 21 → 22 → 23
외부 모델과 비교하기24 → 25, 외부 전송·과금 조건 확인

처음부터 프로그램을 전부 설치하지 않아도 됩니다. WSL·Docker·LM Studio와 에이전트는 쓰려는 기능에 맞춰 고르면 돼요. 12편의 Docker Ollama는 Windows Ollama와 저장소가 다르고, 28편의 CUDA 학습은 별도 환경의 선택 실습입니다.

첫 실행과 모델 선택

  1. 로컬 LLM을 시작하기 전에 확인할 것들
    로컬 LLM을 시작할 때는 지금 쓰는 PC에서 작은 모델 하나를 실행해 보는 것으로 충분해요. 짧은 메모를 넣고, 그 내용을 제대로 요약하는지 살펴보면 됩니다. 이 연재는 그 첫 실행에서 출발해 문서 검색과 운영까지 이어집니다.
  2. Windows 11에 Ollama 설치하고 첫 답변 받기
    Windows에서 첫 답변을 받아 보는 데 필요한 것은 Ollama와 작은 대화 모델 하나예요. Python이나 Docker는 뒤에서 사용할 때 설치합니다. 먼저 다운로드, 실행, 응답 확인까지 짧게 이어 보겠습니다.
  3. 추천 모델 고르는 법: 이름보다 작업과 메모리를 먼저 봅니다
    모델을 고를 때는 먼저 맡길 일을 하나 정해 두는 게 좋아요. 한국어 메모 요약과 코드 수정, 사진 설명은 요구하는 능력이 다릅니다. PC에서 실행할 수 있는 크기의 후보를 추린 뒤, 실제로 쓸 질문을 넣어 비교합니다.
  4. GPU·CPU와 VRAM, PC 사양 읽는 법
    로컬 LLM용 PC 사양을 볼 때는 모델이 메모리에 들어가는지부터 확인합니다. GPU가 빨라도 VRAM이 모자라면 일부 가중치를 시스템 RAM으로 옮겨야 해요. 그때 생기는 병목은 게임 성능표만으로 판단하기 어렵습니다.
  5. 토큰·컨텍스트·양자화와 메모리 사용량
    긴 대화에서 앞의 내용을 놓쳤다면 실행 문맥부터 살펴보세요. 설정된 한도가 작거나 입력이 잘렸을 수도 있고, 긴 자료 속에서 필요한 내용을 찾지 못했을 수도 있습니다. 토큰과 컨텍스트를 알면 이런 현상을 메모리 사용량과 함께 볼 수 있어요.
  6. 모델 저장 위치 옮기기와 오프라인 실행 확인
    모델을 몇 개 받다 보면 저장 공간이 생각보다 빨리 줄어들어요. Ollama 프로그램을 설치한 위치와 모델 파일이 쌓이는 위치를 먼저 나눠 보겠습니다. 경로를 알고 있으면 디스크를 옮기거나 PC를 다시 준비할 때도 덜 헷갈립니다.
  7. LM Studio에서 GGUF 모델과 API 사용하기
    모델 파일과 양자화 종류를 화면에서 골라 보고 싶다면 LM Studio를 사용할 수 있어요. Ollama에서 했던 다운로드와 적재, 응답 확인을 다른 화면에서 따라가 보겠습니다. 둘 다 계속 사용할 필요는 없으니 관리 방식의 차이를 살펴보고 편한 쪽을 고르면 됩니다.

실습 환경을 갖추는 순서

  1. Python 설치와 프로젝트별 가상환경 만들기
    패키지는 설치됐다고 나오는데 import가 실패한다면, 실행 중인 Python부터 확인해 보세요. 패키지를 넣은 Python과 코드를 실행한 Python이 서로 다를 수 있습니다. 프로젝트 폴더 안에 가상환경을 만들고 그 경로를 직접 확인해 보겠습니다.
  2. Node.js·npm 설치와 실행 경로 확인
    Node.js는 JavaScript를 브라우저 밖에서 실행하고, npm은 필요한 패키지를 설치하는 데 사용합니다. 뒤에서 다룰 OpenClaw도 Node로 동작해요. 여기서는 설치를 마친 뒤 실제로 어느 버전과 경로가 사용되는지 확인합니다.
  3. WSL2 설치와 파일·네트워크 구분
    WSL2를 설치하면 Windows PC에서 Linux 도구를 사용할 수 있습니다. 터미널을 오가다 보면 같은 파일이나 localhost를 보고 있다고 생각하기 쉬워요. 파일이 어디에 저장되고 서버가 어느 환경에서 실행되는지부터 나눠 보겠습니다.
  4. Docker Desktop과 컨테이너·볼륨·포트
    Open WebUI 같은 웹 채팅 화면은 Docker 컨테이너로 실행할 수 있습니다. 필요한 프로그램을 묶어 띄울 수 있어 준비가 편해요. 다만 컨테이너를 지웠을 때 대화와 모델이 어디에 남는지는 먼저 알아 두어야 합니다.
  5. Open WebUI와 Ollama로 웹 채팅 구성
    대화 기록을 보관하고 브라우저에서 모델을 고르고 싶다면 Open WebUI를 붙여 볼 수 있어요. 여기서는 WebUI와 Ollama를 같은 Docker 네트워크에 둡니다. Windows에 먼저 설치한 Ollama와는 별도로 동작하는 실습입니다.

API에서 내 문서 Q&A까지

  1. Python으로 Ollama API 호출하기
    채팅창에서 하던 질문을 Python 코드에서도 보낼 수 있습니다. 파일 요약이나 점검 메모 정리를 자동화할 때 필요한 출발점이에요. 요청을 JSON으로 보내고 응답에서 문장을 꺼내는 과정을 작은 함수로 만들어 보겠습니다.
  2. 원문과 조건을 분명하게 전달하는 프롬프트
    요약을 부탁할 때에는 원문과 필요한 항목을 함께 주는 편이 결과를 확인하기 쉬워요. 담당자를 찾지 못했을 때 어떻게 표시할지, 답변은 어느 길이로 받을지도 적어 둡니다. 같은 메모에 지시를 조금씩 바꿔 넣으며 결과를 비교해 보겠습니다.
  3. JSON Schema와 응답 검증
    답변을 다음 프로그램에 넘기려면 사람이 읽기 좋은 문장만으로는 부족합니다. JSON 앞에 인사말이 붙어도 파서는 멈출 수 있어요. 형식을 지켰는지와 안에 담긴 값이 맞는지를 나눠 확인해 보겠습니다.
  4. 임베딩과 코사인 유사도로 문서 검색하기
    “백업을 며칠 남기지?”라고 물었는데 문서에는 “보관 기간”이라고 적혀 있을 수 있어요. 이런 표현 차이를 다루는 방법 중 하나가 임베딩 검색입니다. 문장을 벡터로 바꿔 가까운 문서 조각을 찾고, 답변 생성 전에 검색 결과부터 확인해 보겠습니다.
  5. RAG 완성하기: 검색한 자료로 답하고 근거를 남깁니다
    앞에서 찾은 문서 조각을 대화 모델에 함께 보내면, 그 자료를 참고해 답하도록 만들 수 있습니다. 이 방식이 RAG예요. 문서를 모델의 가중치에 새로 학습시키는 과정 없이, 질문할 때 필요한 근거를 찾아 넣습니다.
  6. 모델 평가표 만들기: 유창함 대신 정답·근거·실패를 셉니다
    모델을 비교할 질문을 미리 남겨 두면 교체나 업데이트 뒤에도 판단하기 편합니다. 잘 답했던 질문뿐 아니라 틀렸던 질문, 문서에 답이 없는 질문도 모아 보세요. 작은 평가표부터 만들어 검색과 답변을 따로 확인하겠습니다.

모델을 도구와 연결하기

  1. Hermes 모델과 대화 템플릿
    Hermes라는 이름으로 모델과 에이전트 프로그램을 모두 접하게 됩니다. 먼저 구분해 두면 설치 안내를 읽기 편해요. 이 글에서는 Nous Research의 대화 모델을 다루고, 다음 글에서 Hermes Agent를 연결합니다.
  2. Hermes Agent 연결과 도구·기억 설정
    에이전트는 모델의 답을 바탕으로 도구를 실행하고 그 결과를 다시 모델에 전달합니다. 반복 작업을 줄이는 데 쓸 수 있지만 접근할 자료와 도구를 먼저 정해야 해요. Hermes Agent를 로컬 모델에 연결하되 읽기와 실행 범위를 좁혀 시작합니다.
  3. 도구 호출 루프 만들기: 모델이 제안하고 프로그램이 실행합니다
    도구 하나를 직접 연결해 보면 에이전트가 어디까지 결정하고 어디부터 프로그램이 맡는지 보입니다. 여기서는 가상의 장비 재고를 조회하게 해 볼게요. 파일 수정이나 셸 실행 없이 요청, 인수 검사, 결과 반환의 흐름을 확인합니다.
  4. OpenClaw 설치와 Gateway 확인
    OpenClaw는 대화 화면과 모델 제공자, 도구, 메신저를 연결하는 프로그램입니다. 모델 추론을 맡는 Ollama와 따로 동작해요. 설치 뒤에는 CLI 실행, Gateway 시작, 모델 응답을 순서대로 확인합니다.
  5. OpenClaw의 Ollama 주소와 도구 호출 점검
    채팅은 되는데 도구 호출이 안 된다면 제공자 설정과 API 경로부터 확인해 보세요. 현재 OpenClaw의 Ollama 제공자는 네이티브 API를 사용합니다. Hermes에서 썼던 주소를 그대로 복사하면 경로가 맞지 않을 수 있습니다.
  6. OpenRouter API와 요금·전송 경로 확인
    OpenRouter를 사용하면 여러 외부 모델 제공자에 공통 API로 요청할 수 있습니다. 모델은 외부에서 실행되므로 자료가 어디로 가는지와 요금을 함께 확인해야 해요. 가상의 질문으로 호출 과정을 살펴보겠습니다.
  7. 로컬·클라우드 요청을 나누는 기준
    로컬 모델을 기본으로 쓰면서 일부 질문만 외부 모델에 보낼 수 있습니다. 이때는 사용자가 전송 대상을 확인할 수 있어야 해요. 로컬 실행이 실패해도 자동으로 클라우드에 넘기지 않는 분기를 만들어 보겠습니다.

성능·학습·운영으로 확장하기

  1. 느린 이유 찾기: 첫 응답·토큰 속도·메모리를 따로 측정합니다
    응답이 느릴 때는 어느 구간에서 기다리는지부터 나눠 보면 좋아요. 모델 파일을 읽는 시간, 입력을 처리하는 시간, 답변을 한 토큰씩 만드는 시간은 원인이 다릅니다. 같은 질문을 반복하며 각 구간을 기록해 보겠습니다.
  2. llama.cpp와 GGUF 직접 실행: 추론 엔진의 설정을 들여다봅니다
    모델 파일과 실행 옵션을 직접 지정해 보고 싶다면 llama.cpp를 사용할 수 있습니다. CPU로 실행한 뒤 GPU 적재를 요청하며 로그를 비교해 볼게요. Ollama가 대신 관리하던 부분 중 무엇을 직접 설정하게 되는지도 살펴봅니다.
  3. LoRA·QLoRA와 작은 학습 코드의 구조
    새 문서를 답변에 반영하려면 RAG로 해결할 수 있는지 먼저 살펴봅니다. 반복되는 답변 형식이나 분류 행동을 바꾸려는 경우라면 미세조정을 검토할 수 있어요. 여기서는 LoRA·QLoRA의 원리를 읽고 작은 학습 코드의 연결 구조를 확인합니다.
  4. API·로그·도구 권한 보안 점검
    모델을 PC에서 실행한 뒤에도 확인할 곳은 남아 있습니다. API가 듣는 주소, 로그에 쌓이는 원문, 외부 도구와 파일 권한을 살펴봐야 해요. 지금까지 만든 구성에서 데이터가 이동하는 경계를 정리해 보겠습니다.
  5. 문서 Q&A 도구 백업·복원과 운영 기록
    연재에서 준비한 검색과 답변 스크립트를 계속 쓰려면 자료를 고치고 백업에서 복원하는 방법도 필요합니다. 새 폴더에서 다시 시작할 수 있는지 확인해 볼게요. 여기서는 문서 Q&A 도구의 시작과 갱신, 백업·복원 순서를 정리합니다.

실습 파일과 검증 범위

Python·PowerShell·Compose 실습 파일 ZIP 받기. 가상의 문서, 빈 평가표와 운영 기록 양식을 포함합니다. 모델 가중치·계정 키·실제 업무 데이터는 포함하지 않습니다. 파일 전체를 한 번에 실행하지 말고 해당 편의 전제조건을 따릅니다.

실습 파일의 검증 범위는 Python 문법, 모의 HTTP 요청, 검색 흐름입니다. Windows 설치와 GPU 추론, CUDA 학습의 실행 여부는 실제 장비에서 확인해야 합니다. 모델의 속도와 품질은 제공한 평가표와 측정 코드로 확인합니다.

처음 시작한다면 1편에서 PC 사양과 맡길 일을 적고 2편의 Ollama 실행으로 이어 가세요. 이미 사용하는 모델이 있다면 아래 연재 목록이나 왼쪽 소주제에서 필요한 글을 고를 수 있습니다.