Tech 목록으로

폐쇄망을 위한 개발자의 AI

폐쇄망에서 살아남기 위한 개발자의 PC는 어느 수준까지 도달하여야 할까? 요즘 프로젝트 현장에서 사용되는 기술은 제각각이기 때문에 학습이 현장을 따라 갈 수 없다. 학습하고 나면 새로운 것을 익혀야 하거나 이미 구인 끝. 금융권 같은 곳은 인터넷도 안되고 개발 장비는 직접 지급하는 경우도 많아 이런 곳은 사전에 준비해서 장비를 들고 갈 수도 없다.

장비를 사용할 수 있다면, 로컬환경에서 AI를 굴릴 수 있게 미리 준비하면 좋겠다는 생각으로 다양하게 시도해보았고, 최저가의 최적가의 게임용 노트북(200 ~ 300만원 사이)에서 적당한 설정 값을 찾은 것 같다.

개인 구독용 AI는 기업 소스가 외부에 반출이 되기 때문에 보안장치에 검출되어 퇴실 당할 수도 있다. 편히 사용하려면 결국 개인 장비에 인터넷을 거치지 않고 응답과 코딩이 가능한 AI가 있어야 하지 않겠는가.

RTX5070, 8RAM에서 사용 할 수 있는 LOCAL AI 모델과RAG를 구축을 하였다. RAG는 구축 분야 별로 혼용하려면 중간에 구축한 분야를 검색할 수 있도록 RAG BRIDGE가 필요하였다.

이 어려운 것 어떻게 했을까?

장비가지고 새 현장으로 떠나기 전에, 클로드를 하나 구독하고 CLI에서 로컬 스펙에 맞는 AI와 RAG를 구축을 요청하면 된다. 사용해보고 응답 속도, 응답결과 정확성 정도를 보고 지속적으로 조정하다 보면 맞는 설정 값이 나올 것이다.(현장하고 똑같다, 누군가가 올려둔 가이드는 절대 내 PC하고 설정 값이 같지 않아, 따라하기가 되지 않는다. )

RAG BRIDGE까지 설정 할 수 있는 능력까지 수련 하려면, 오랜 시간과 많은 수강료를 지불해야 할 것이고 습득 후에는 이젠 사용하지 않는 기술이 될 것이다. 2년만 더 일할 수 있으면 좋을 것 같은데 왜 이렇게 개발자의 아포칼립스는 빠르게 도래하는지.

그럼 저렴이 개발장비 설정 값을 다음과 같이 공유하여 본다.(미술 분야는 개인적인 관심사로 구축 한 것임)

로컬 AI RAG 구조도 & 활용방안

🤖 로컬 AI RAG 시스템

구조도 & 활용방안 — 2026-05-23 기준

RTX 5070 Laptop 8GB qwen3.5:9b (코딩) AnythingLLM RAG WS1~WS8 완료

1. 전체 아키텍처

사용자 접근
🌐 브라우저
localhost:3001
AnythingLLM UI
💡 IntelliJ
Continue.dev
채팅 / @IT RAG
⚡ IntelliJ
Tab 자동완성
qwen2.5:0.5b
HTTP 요청
RAG Bridge (Windows 자동시작)
🔀 rag_bridge.py
localhost:4000  |  Windows 작업 스케줄러 자동 실행
IT 워크스페이스 5개 병렬 검색 + 키워드 라우팅
auigrid→WS8   nexacro→WS6   react→WS8+WS2
Docker 내부 네트워크
Docker (WSL Ubuntu-24.04)
🗄️ ars-anythingllm :3001
RAG 엔진 & UI — LanceDB 내장 벡터DB
📚 임베딩: nomic-embed-text
WS1 미술 132개  |  WS2 IT 337개
WS3 위키 3,507개  |  WS4 VP 2,837개
WS5 eGov 458개  |  WS6 Nexacro 332개
WS7 Miplatform 31개  |  WS8 AUIGrid 299개
총 7,933개 문서
🦙 ars-ollama :11434
현재 활성 모델
qwen3.5:9b ★ 채팅/코딩 qwen2.5:0.5b ★ 자동완성 nomic-embed-text ★ 임베딩
설치됨 (대기)
gemma4:e4b deepseek-r1:7b qwen2.5-coder:14b qwen2.5:14b qwen2.5vl:7b
🐬 ars-mysql :3306
a—- / M—-
utf8mb4  |  mysql_native_password
하드웨어
🎮 RTX 5070 Laptop GPU
VRAM 8GB  |  qwen3.5:9b = 6.6GB (여유 1.4GB)
💾 스토리지
E:\SETLLM\rag\
LanceDB ~12GB

2. 설치 모델 & VRAM 현황

모델 크기 VRAM 역할 상태
qwen3.5:9b 6.6 GB ✅ 수용 (여유 1.4GB) 채팅 / 코딩 / AnythingLLM LLM ● 기본 사용
qwen2.5:0.5b 0.4 GB ✅ 수용 IntelliJ 탭 자동완성 ● 기본 사용
nomic-embed-text 0.3 GB ✅ 수용 RAG 임베딩 전용 ● 상시 사용
deepseek-r1:7b 4.7 GB ✅ 수용 추론/디버깅 특화 (단독 사용 시) ○ 필요시 전환
gemma4:e4b 9.6 GB ⚠️ 초과 (일부 CPU 오프로드) 범용 (멀티모달) ○ 필요시 전환
qwen2.5-coder:14b 9.0 GB ⚠️ 초과 (CPU 오프로드, 느림) 코딩 특화 14B ○ 필요시 전환
qwen2.5:14b 9.0 GB ⚠️ 초과 범용 대형 ○ 필요시 전환
qwen2.5vl:7b 6.0 GB ✅ 수용 이미지 분석 (비전-언어) ○ 필요시 전환

3. RAG 워크스페이스 (WS1~WS8)

1
미술 / 미술시장
ac2b65c4-…-f636307549a8
📄 132개 문서  |  5,103 벡터
인상주의, 현대미술, 작가, 경매 정보
2
IT / 개발기술
it
📄 337개 문서  |  161,443 벡터
React, Java, Spring, DevOps 등 일반 IT 기술
3
한국어 위키백과
733fd0c7-…-49b957f8b6d5
📄 3,507개 문서  |  940배치 재임베딩
일반 상식, 역사, 지리, 과학 등
4
Visual Paradigm
visual-paradigm
📄 2,837개 문서  |  56배치 업로드
UML, 아키텍처 다이어그램, VP 툴 가이드
5
전자정부프레임워크
ws5
📄 458개 문서 (eGov docs 437 + README 21)
eGovFrame 공식 마크다운 문서, 공통컴포넌트
6
Nexacro
ws6-nexacro
📄 332개 문서 (TOBESOFT 공식 CHM)
Nexacro N V24 컴포넌트 레퍼런스 (JSON→MD 변환)
7
Miplatform
ws7-miplatform
📄 31개 문서 (커뮤니티 분석 자료)
공식 문서 없음. GitHub 커뮤니티 기반. OZ Report 미구축.
8
AUIGrid
ws8-auigrid
📄 299개 문서 (API 38 + 데모 260 + React가이드 1)
auisoft.net 공식 문서 + React 연동 가이드 직접 작성
topN=8, similarityThreshold=0.15

4. 활용 시나리오

🌐

브라우저로 RAG 질문

도메인 지식 질문 (AUIGrid, eGov, Nexacro 등)
1
브라우저에서 http://localhost:3001 접속
2
좌측 사이드바에서 워크스페이스 선택
예: WS8: AUIGrid
3
질문 입력 → LanceDB 벡터 검색 → qwen3.5:9b 응답
💡 예: “AUIGrid React 연동에서 useRef는 어떻게 쓰나요?”
💡

IntelliJ @IT RAG

코딩 중 RAG 문서 컨텍스트 주입
1
IntelliJ Continue 채팅창에서 @IT RAG 입력
2
rag_bridge.py(4000)가 5개 WS 병렬 검색
키워드 자동 라우팅 (auigrid→WS8 등)
3
관련 문서 청크가 컨텍스트로 주입 → qwen3.5:9b 코딩 응답
💡 예: @IT RAG AUIGrid 컬럼에서 ComboBox 편집기 설정법

IntelliJ 탭 자동완성

코드 작성 중 실시간 자동완성
1
IntelliJ 에디터에서 코드 작성 중 자동 활성화
2
qwen2.5:0.5b (0.4GB) 가 빠르게 완성 제안
3
Tab 으로 적용
💡 0.5B 모델이라 속도 우선. 복잡한 로직은 채팅으로 질문 권장.
🔄

모델 전환 (임시)

특수 목적 작업 시 모델 교체
1
PowerShell에서 Ollama로 직접 전환 가능
2
추론/디버깅: deepseek-r1:7b
3
이미지 분석: qwen2.5vl:7b
💡 AnythingLLM도 동일하게 API로 교체 가능

5. 빠른 명령어 참조

🐳 Docker 기동 (세션 시작 시)
# 1. dockerd 시작 (WSL)
wsl -d Ubuntu-24.04 -u root -e bash -c \
  "nohup dockerd > /tmp/dockerd.log 2>&1 & sleep 8 && docker ps"

# 2. 컨테이너 전체 기동
wsl -d Ubuntu-24.04 -u root -e bash -c \
  "cd /mnt/e/OPENCLAW_DOCKER && docker compose up -d"

# 3. 상태 확인
wsl -d Ubuntu-24.04 -u root -e bash -c \
  "docker ps --format 'table {{.Names}}\t{{.Status}}'"
🌐 AnythingLLM API 사용
# 워크스페이스 RAG 질문 (PowerShell)
$body = '{"message":"질문","mode":"query"}'
Invoke-RestMethod `
  -Uri "http://localhost:3001/api/v1/workspace/ws8-auigrid/chat" `
  -Method POST `
  -Headers @{ "Authorization" = "Bearer 0+_+_+_+_+_+_+_+_+_+_+_+_d6" } `
  -Body $body

# API Key: 0+_+_+_+_+_+_+_+_+_+_+_+_d6
🔀 RAG Bridge 관리
# 자동 시작 확인 (작업 스케줄러)
Get-ScheduledTask -TaskPath "\SETLLM\" -TaskName "RAG Bridge Server"

# 포트 리스닝 확인
netstat -ano | findstr ":4000"

# 수동 재시작 (비정상 시)
Start-ScheduledTask -TaskPath "\SETLLM\" -TaskName "RAG Bridge Server"

# 스크립트 위치
E:\SETLLM\rag\rag_bridge.py
🤖 모델 전환 (AnythingLLM)
# LLM 모델 변경 API
Invoke-RestMethod `
  -Uri "http://localhost:3001/api/v1/system/update-env" `
  -Method POST `
  -Headers @{ "Authorization" = "Bearer 0+_+_+_+_+_+_+_+_+_+_+_+_d6";
              "Content-Type" = "application/json" } `
  -Body '{"OllamaLLMModelPref":"모델명"}'

# 예: qwen3.5:9b / deepseek-r1:7b-qwen-distill-q4_K_M
📋 IntelliJ Continue 설정 파일
C:\Users\farmerkweon\.continue\config.json

# 주요 설정
채팅 모델 : qwen3.5:9b  (Qwen3.5 9B 코딩)
           gemma4:e4b (Gemma4 E4B 범용)
자동완성  : qwen2.5:0.5b
임베딩    : nomic-embed-text
@IT RAG   : http://localhost:4000/search

# IntelliJ에서 @IT RAG 사용
@IT RAG [질문 내용]
🧪 RAG 테스트 스크립트
# 전체 WS 테스트
cd E:\SETLLM\rag
py test_rag.py

# 개별 WS 직접 테스트 (PowerShell)
$b = [Text.Encoding]::UTF8.GetBytes(
  '{"message":"질문","mode":"query"}')
Invoke-RestMethod `
  -Uri "http://localhost:3001/api/v1/workspace/ws8-auigrid/chat" `
  -Method POST -Body $b `
  -Headers @{ "Authorization"="Bearer 0+_+_+_+_+_+_+_+_+_+_+_+_d6";
    "Content-Type"="application/json; charset=utf-8" }

6. 효과적인 활용 팁

🎯 워크스페이스 선택 전략
• 특정 기술 질문 → 해당 WS 직접 선택
• 일반 코딩 → WS2 IT
• 업무 프레임워크 → WS5~WS8
• 일반 상식 → WS3 위키
⚡ VRAM 최적화
• 기본: qwen3.5:9b (6.6GB) + qwen2.5:0.5b 동시 사용 가능
• 둘 다 8GB 내 수용
• 14B 모델은 단독으로 전환해서 사용
• Ollama는 일정 시간 후 모델 자동 언로드
🔀 @IT RAG 키워드 라우팅
auigrid / 그리드 → WS8만 검색
nexacro → WS6만 검색
miplatform → WS7만 검색
react / javascript → WS8+WS2
java / spring → WS5+WS2
• 키워드 없으면 전체 5개 WS 병렬 검색
📝 RAG 응답 품질 향상
• 구체적인 기술 용어 포함해서 질문
• “mode: query” → 문서 참조 응답
• “mode: chat” → 대화형 응답
• 소스 문서 수가 0이면 관련 문서 없음
• WS8 설정: topN=8, threshold=0.15
로컬 AI RAG 시스템  |  RTX 5070 Laptop  |  qwen3.5:9b + AnythingLLM + LanceDB  |  2026-05-23

VRAM이 8GB여서 코드를 생성하다 중단되는 경우가 있어, 사이즈를 늘려주고 나누어서 응답하게 하였다. (물론 이런 설정은 클로드를 사용)

이 글 공유하기