폐쇄망을 위한 개발자의 AI
폐쇄망에서 살아남기 위한 개발자의 PC는 어느 수준까지 도달하여야 할까? 요즘 프로젝트 현장에서 사용되는 기술은 제각각이기 때문에 학습이 현장을 따라 갈 수 없다. 학습하고 나면 새로운 것을 익혀야 하거나 이미 구인 끝. 금융권 같은 곳은 인터넷도 안되고 개발 장비는 직접 지급하는 경우도 많아 이런 곳은 사전에 준비해서 장비를 들고 갈 수도 없다.
장비를 사용할 수 있다면, 로컬환경에서 AI를 굴릴 수 있게 미리 준비하면 좋겠다는 생각으로 다양하게 시도해보았고, 최저가의 최적가의 게임용 노트북(200 ~ 300만원 사이)에서 적당한 설정 값을 찾은 것 같다.
개인 구독용 AI는 기업 소스가 외부에 반출이 되기 때문에 보안장치에 검출되어 퇴실 당할 수도 있다. 편히 사용하려면 결국 개인 장비에 인터넷을 거치지 않고 응답과 코딩이 가능한 AI가 있어야 하지 않겠는가.
RTX5070, 8RAM에서 사용 할 수 있는 LOCAL AI 모델과RAG를 구축을 하였다. RAG는 구축 분야 별로 혼용하려면 중간에 구축한 분야를 검색할 수 있도록 RAG BRIDGE가 필요하였다.
이 어려운 것 어떻게 했을까?
장비가지고 새 현장으로 떠나기 전에, 클로드를 하나 구독하고 CLI에서 로컬 스펙에 맞는 AI와 RAG를 구축을 요청하면 된다. 사용해보고 응답 속도, 응답결과 정확성 정도를 보고 지속적으로 조정하다 보면 맞는 설정 값이 나올 것이다.(현장하고 똑같다, 누군가가 올려둔 가이드는 절대 내 PC하고 설정 값이 같지 않아, 따라하기가 되지 않는다. )
RAG BRIDGE까지 설정 할 수 있는 능력까지 수련 하려면, 오랜 시간과 많은 수강료를 지불해야 할 것이고 습득 후에는 이젠 사용하지 않는 기술이 될 것이다. 2년만 더 일할 수 있으면 좋을 것 같은데 왜 이렇게 개발자의 아포칼립스는 빠르게 도래하는지.
그럼 저렴이 개발장비 설정 값을 다음과 같이 공유하여 본다.(미술 분야는 개인적인 관심사로 구축 한 것임)
🤖 로컬 AI RAG 시스템
구조도 & 활용방안 — 2026-05-23 기준
1. 전체 아키텍처
AnythingLLM UI
채팅 / @IT RAG
qwen2.5:0.5b
IT 워크스페이스 5개 병렬 검색 + 키워드 라우팅
auigrid→WS8 nexacro→WS6 react→WS8+WS2
WS3 위키 3,507개 | WS4 VP 2,837개
WS5 eGov 458개 | WS6 Nexacro 332개
WS7 Miplatform 31개 | WS8 AUIGrid 299개
총 7,933개 문서
utf8mb4 | mysql_native_password
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)
topN=8, similarityThreshold=0.15
4. 활용 시나리오
브라우저로 RAG 질문
예: WS8: AUIGrid
IntelliJ @IT RAG
키워드 자동 라우팅 (auigrid→WS8 등)
IntelliJ 탭 자동완성
모델 전환 (임시)
5. 빠른 명령어 참조
# 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}}'"
# 워크스페이스 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
# 자동 시작 확인 (작업 스케줄러) 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
# 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
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 [질문 내용]
# 전체 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. 효과적인 활용 팁
• 일반 코딩 → WS2 IT
• 업무 프레임워크 → WS5~WS8
• 일반 상식 → WS3 위키
• 둘 다 8GB 내 수용
• 14B 모델은 단독으로 전환해서 사용
• Ollama는 일정 시간 후 모델 자동 언로드
auigrid / 그리드 → WS8만 검색•
nexacro → WS6만 검색•
miplatform → WS7만 검색•
react / javascript → WS8+WS2•
java / spring → WS5+WS2• 키워드 없으면 전체 5개 WS 병렬 검색
• “mode: query” → 문서 참조 응답
• “mode: chat” → 대화형 응답
• 소스 문서 수가 0이면 관련 문서 없음
• WS8 설정: topN=8, threshold=0.15
VRAM이 8GB여서 코드를 생성하다 중단되는 경우가 있어, 사이즈를 늘려주고 나누어서 응답하게 하였다. (물론 이런 설정은 클로드를 사용)