Search

260108_1411_RAG 시스템 구축 가이드

MIT / Apache 2.0 라이센스만으로 끝내는 실전 스택 정리

RAG(Retrieval-Augmented Generation)를 실제 서비스에 붙이려다 보면
기술보다 먼저 걸리는 벽이 ‘라이센스’입니다.
이 모델, 상업용 가능한가?
프레임워크는 괜찮은데 모델은 조건부 아닌가?
나중에 법무팀에서 문제 삼지 않을까?
이 글은 그런 고민을 줄이기 위해
MIT / Apache 2.0 라이센스 기반으로만 구성한, 완전 상업용 안전 RAG 스택을 정리한 가이드입니다.
개인 프로젝트
스타트업 MVP
사내 서비스 / B2B SaaS
모두 안심하고 사용 가능한 조합만 다룹니다.

이 글에서 보장하는 것

이 가이드에 등장하는 구성은 다음을 모두 만족합니다.
완전 상업적 사용 가능
재배포 가능
추가 계약 / 조건 없음
외부 API 의존 없음 (선택사항)
MIT / Apache 2.0 라이센스만 사용
특히 “플랫폼 라이센스 ≠ 모델 라이센스” 문제를 명확히 구분해서 설명합니다.

최종 결론부터 말하면

가장 안전한 조합은 이거 하나면 충분합니다

구성 요소
선택
RAG 프레임워크
LangChain (MIT)
LLM 모델
Mistral 7B (Apache 2.0) 또는 Phi-3 (MIT)
임베딩 모델
Sentence Transformers (Apache 2.0)
벡터 DB
Chroma (Apache 2.0)
실행 환경
Ollama (MIT, 플랫폼)
조건 없음, 예외 없음, 상업용 100% 안전
이게 이 글의 핵심 결론입니다.

RAG 스택을 고를 때 가장 중요한 것: 라이센스 구분

많이 헷갈리는 포인트부터 정리해봅니다.

착각하기 쉬운 부분

Ollama가 MIT → 모델까지 MIT인 건 아님
Hugging Face Transformers가 Apache 2.0 → 모델은 별도 라이센스

반드시 구분해야 할 것

구분
예시
플랫폼 / 라이브러리
LangChain, Ollama, Transformers
모델 자체
Mistral, Phi-3, Llama, Gemma
실제 법적 리스크는 “모델 라이센스”에서 발생합니다.

완전 상업용 안전 RAG 스택 (조합 A – 최종 권장)

로컬 실행 + 외부 의존성 없음 + 라이센스 완전 안전

컴포넌트
도구
라이센스
RAG 프레임워크
LangChain
MIT
LLM 실행
Ollama
MIT
LLM 모델
Mistral 7B / Phi-3
Apache 2.0 / MIT
임베딩
Sentence Transformers
Apache 2.0
벡터 DB
Chroma
Apache 2.0

이 조합의 장점

상업용 사용 제약 0
API 비용 없음
데이터 외부 전송 없음
온프레미스 / 내부망 가능
추후 감사 대응 쉬움
솔직히 말하면,
“일반적인 RAG 서비스”라면 이 조합으로 못 할 게 거의 없습니다.

상업용으로 완전히 안전한 LLM 모델 정리

조건 없이 사용 가능한 모델들

모델
라이센스
비고
Mistral 7B / 8x7B
Apache 2.0
강력한 성능, 적극 추천
Phi-3
MIT
경량 + 상업용 완전 자유
Qwen2
Apache 2.0
다국어 성능 우수
StarCoder2
Apache 2.0
코드 특화
Falcon
Apache 2.0
안정적

조건부 모델 (주의)

Llama 2 / 3
사용자 수 7억 초과 시 별도 계약 필요
Gemma
Google 사용 약관 확인 필수
법적 리스크를 줄이려면 굳이 조건부 모델을 쓸 이유가 없습니다.

빠른 시작: 최소 RAG 코드 예제

아래는 LangChain + Chroma + Ollama 기반의 가장 기본적인 RAG 예시입니다.
from langchain.document_loadersimport TextLoader from langchain.text_splitterimport RecursiveCharacterTextSplitter from langchain.embeddingsimport HuggingFaceEmbeddings from langchain.vectorstoresimport Chroma from langchain.llmsimport Ollama from langchain.chainsimport RetrievalQA # 문서 로드 loader = TextLoader("document.txt") documents = loader.load() # 문서 분할 splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200) texts = splitter.split_documents(documents) # 임베딩 embeddings = HuggingFaceEmbeddings( model_name="sentence-transformers/all-MiniLM-L6-v2" ) # 벡터 DB vectorstore = Chroma.from_documents(texts, embeddings) # LLM (완전 상업용 안전 모델) llm = Ollama(model="mistral")# 또는 "phi3" # RAG 체인 qa = RetrievalQA.from_chain_type( llm=llm, retriever=vectorstore.as_retriever() ) print(qa.run("질문을 입력하세요"))
Python
복사

시스템 요구사항 (현실적인 기준)

최소

CPU: 4코어
RAM: 8GB
GPU: 없어도 가능 (느림)

권장

CPU: 8코어 이상
RAM: 16GB 이상
GPU: VRAM 8GB 이상 (RTX 3060 급)

실무에서 꼭 기억할 체크리스트

프레임워크 라이센스 OK
모델 라이센스 OK
재배포 가능 여부 확인
서비스 규모 대비 조건부 조항 없는지 확인
“모델 이름보다 LICENSE 파일을 먼저 봐라”
이 한 줄만 기억해도 사고 확률이 확 줄어듭니다.

마무리

RAG 시스템에서 기술은 빠르게 바뀌지만,
라이센스 문제는 나중에 터지면 되돌릴 수 없습니다.
이 글에서 정리한 스택은:
지금 써도 안전하고
나중에 커져도 안전하고
법무팀이 봐도 안전한 구성입니다.
LangChain + Mistral(or Phi-3) + Chroma
이 조합이면, 마음 편하게 개발하셔도 됩니다.

안녕하세요

관련 기술 문의와 R&D 공동 연구 사업 관련 문의는 “glory@keti.re.kr”로 연락 부탁드립니다.

Hello

For technical and business inquiries, please contact me at “glory@keti.re.kr”