오픈 소스 RAG 지식 기반 로컬 배포 보모 수준 튜토리얼: Ollama + AnythingLLM 민영화 Q&A
🛒 심층적인 개발 배경 지식이 없는 운영 및 유지 관리와 비즈니스 담당자를 위한 제로 코드로 개인 지식 기반 구축에 대한 완전한 튜토리얼입니다.
튜토리얼 목표
이 튜토리얼에서는 두 가지 오픈 소스 구성 요소를 사용하여 문서, 소스가 포함된 답변을 업로드하고 오프라인에서 실행할 수 있는 Q&A에 사용할 수 있는 로컬 RAG 지식 기반을 구축합니다.
- Ollama: 대규모 모델을 로컬에서 실행하기 위한 추론 서비스입니다.
AnythingLLM: 인터페이스(벡터 라이브러리 및 Q&A 포함)가 포함된 원스톱 지식 베이스 애플리케이션입니다.
전체 프로세스에서 코드를 작성할 필요가 없으며 운영 및 유지 관리, 운영 및 비즈니스 담당자에게 적합합니다.
준비 체크리스트
- [ ] 컴퓨터 또는 서버: 16G 메모리 이상을 권장합니다. macOS/Linux/Windows가 허용됩니다.
- [ ] 여러 가지 테스트 문서를 준비합니다(PDF/Word/TXT/Markdown 허용).
- [ ] 네트워크를 사용할 수 있습니다(모델과 소프트웨어를 처음으로 다운로드해야 하며 이후 오프라인에서 사용할 수 있습니다).
- [ ] 8~20G 디스크 공간을 예약합니다(모델 크기에 따라 다름).
- [ ] (옵션) NVIDIA 그래픽 카드는 응답 속도를 크게 향상시킵니다.
버전팁 : 아래 버전번호, 모델사이즈, 다운로드 주소는 공식 실시간 페이지에 따릅니다. 모델 풀 명령은 Ollama 공식 모델 라이브러리를 따릅니다.
1단계: Ollama 설치 및 구성
Ollama 공식 웹사이트를 방문하여 해당 시스템 설치 패키지를 다운로드하세요(macOS용 애플리케이션으로 직접 드래그, Linux용 설치 스크립트 사용, Windows용 설치 패키지 사용). 설치 후 터미널을 열어 다음을 확인합니다.
``배쉬 올라마 --버전
일반적으로 `ollama 버전 0.x.x`와 같은 버전 번호가 출력됩니다.
## 2단계: 로컬 모델 가져오기
지식 베이스에는 두 가지 모델이 필요합니다. 하나는 **답변 생성**용이고 다른 하나는 **문서 벡터화**(임베딩)용입니다. 먼저 대화 모델을 가져옵니다.
``배쉬
올라마 풀 qwen2.5:7b
그런 다음 벡터화 모델을 가져옵니다.
``배쉬 ollama pull nomic-embed-text
모델이 준비되었는지 확인합니다.
``배쉬
올라마 목록
해당 모델의 용량이 커서, 네트워크 속도에 따라 처음 끌어오는 데 시간이 걸릴 수 있습니다. 모델명 및 사용 가능 목록은 Ollama 공식 실시간 페이지에 따릅니다.
3단계: AnythingLLM 설치
AnythingLLM 공식 홈페이지에서 데스크톱 버전 설치 패키지를 다운로드하여 설치하세요. (macOS/Windows/Linux 지원) 처음 시작하면 초기화 마법사가 시작됩니다.
- "로컬 벡터 라이브러리" 유형을 선택합니다(기본적으로 내장된 LanceDB가 사용되며 추가 설치가 필요하지 않습니다).
- LLM 제공업체를 Ollama로 선택하세요.
- Ollama 주소
http://localhost:11434를 입력하고, 이전 단계에서 가져온qwen2.5:7b를 선택합니다. - 임베딩 공급자를 Ollama로 선택하고 모델을
nomic-embed-text로 선택합니다.
구성을 저장하면 연결이 완료됩니다.
4단계: 기술 자료 만들기 및 문서 업로드
- AnythingLLM 왼쪽의 "Workspace"를 클릭하고
Company System과 같은 새로운 Workspace를 생성합니다. - 작업공간에 진입 → "문서 업로드" 후 준비된 분할 문서를 드래그하세요.
- "프로세스"를 클릭하고 벡터화가 완료될 때까지 기다립니다.
벡터화가 성공적으로 완료되면 각 문서는 검색 가능한 벡터 라이브러리에 들어왔음을 나타내는 "처리됨" 상태를 표시합니다.
5단계: Q&A 시작 및 추적성 확인
작업 공간 대화 상자에 "문서에 따르면 환급 절차는 몇 단계를 거치나요?"와 같은 질문을 입력합니다.
예상 성능:
- 답변 내용은 일반적인 용어가 아닌, 업로드하신 문서를 참고하여 작성되었습니다.
- 인용된 소스 조각이 답변 아래에 표시됩니다. 클릭하면 원본 텍스트 위치로 이동할 수 있습니다.
AnythingLLM의 "채팅" 설정을 열고 "인용 표시"를 켜서 모든 답변의 출처를 표시하세요.
6단계: 효과 튜닝
답변이 만족스럽지 않으면 다음 순서대로 시도해 보세요.
- 청크 조정: 청크 크기와 오버랩은 AnythingLLM 설정에서 구성할 수 있습니다(청크 크기는 500-1000, 오버랩 50-100 권장).
- 더 강력한 모델로 변경합니다:
ollama pull qwen2.5:14b또는 더 큰 모델. - 더 나은 벡터 모델로 변경: 고차원 임베딩 모델을 사용하고 구성을 전환합니다.
- 보충 문서화: 누락된 지식을 지식 베이스에 추가하고 다시 처리합니다.
7단계: 프롬프트 단어 및 답변 스타일 맞춤설정
AnythingLLM을 사용하면 시스템 프롬프트(시스템 프롬프트)를 사용자 정의하여 팀의 분위기에 더 적합한 답변을 만들 수 있습니다. 예를 들어 "채팅 설정"에 다음을 입력합니다.
``텍스트 당신은 회사의 지식 보조원입니다. 업로드된 서류를 바탕으로만 답변하시고, 보충하지 마세요. 결론을 먼저 제시하고 근거를 제시하여 간결한 중국어로 답변하십시오. 증거가 발견되지 않은 경우에는 “데이터베이스에 해당 내용이 없습니다”라고 명확히 명시합니다.
프롬프트 단어를 사용자 정의하면 답변이 "자신과 같은" 답변이 될 수 있으며 환각을 줄이는 효과적인 수단이기도 합니다.
## 8단계: 데이터 백업 및 업그레이드
- 백업: AnythingLLM의 데이터 디렉터리(벡터 라이브러리 및 구성 포함)가 정기적으로 복사됩니다. 일일 백업 작업에 포함하는 것이 좋습니다.
- 업그레이드 : 업그레이드 전 백업 후 소프트웨어 버전 업데이트 후 Q&A를 다시 확인하세요.
- 문서 업데이트: 문서 내용이 변경된 후, 이전 버전을 삭제하고 다시 업로드하여 이전 버전과 새 버전 간의 충돌을 방지하세요.
## 확인 방법
- 검증 1: 'ollama list'는 대화 모델과 벡터 모델을 볼 수 있습니다.
- 확인 2: 문서 업로드 후 상태는 '처리됨'입니다.
- 검증 3: 문서에 사실에 근거한 질문을 하고, 답변에 해당 출처를 인용할 수 있습니다.
- 확인 4: 외부 네트워크 연결이 끊어져도 여전히 Q&A가 가능합니다. (로컬 추론인지 확인)
- 검증 5: 프롬프트 단어를 사용자 정의한 후 근거 없는 질문을 올바르게 거부할 수 있습니다.
## 흔히 발생하는 실수와 주의사항
1. 문서 형식이 혼란스럽습니다. 먼저 선택 가능한 텍스트로 단일화(먼저 스캔한 문서를 OCR)한 다음 일괄적으로 가져옵니다.
2. 블록이 너무 큽니다. 단일 블록이 모델 컨텍스트를 초과하면 검색 왜곡이 발생합니다. 권장값에 따라 조정하세요.
3. 다국어 혼합: 지식 기반에서 언어를 통합하거나 언어별로 작업 영역을 나누어 보십시오.
4. 참조를 켜는 것을 잊었습니다. 구성에서 "참조 소스 표시"를 켜십시오. 받아들이기 힘든 아이템입니다.
## 자주 묻는 질문 및 문제 해결(FAQ)
1. AnythingLLM이 Ollama에 연결할 수 없으면 어떻게 해야 하나요?
먼저 `ollama Serve`가 실행 중인지 확인한 다음(`ollama Serve`는 기본적으로 11434를 수신합니다) 브라우저를 사용하여 `http://localhost:11434`에 액세스하여 확인합니다. 구성의 주소에 추가 슬래시를 포함하지 마십시오.
2. 모델 다운로드가 느리거나 실패합니까?
네트워크가 제한된 경우 미러 주소를 사용하거나 다른 시간에 다시 시도하십시오. GGUF 모델을 다운로드하여 수동으로 가져올 수도 있습니다.
3. 답은 말도 안되는 잡담처럼 문서를 전혀 인용하지 않습니까?
Embedding이 로컬 Ollama 모델로 구성되어 있는지 확인하세요. 구성되지 않으면 문서를 올바르게 검색할 수 없습니다.
4. 업로드한 PDF가 깨졌거나 불완전하게 인식되나요?
AnythingLLM은 내장된 파서를 사용합니다. 먼저 스캔한 PDF를 선택 가능한 텍스트로 OCR 변환해야 합니다.
5. 메모리가 부족하고 동작이 느리나요?
더 작은 양자화 모델(예: `qwen2.5:3b`)로 변경하고 다른 대용량 메모리 프로그램을 닫습니다. 7B 모델은 16G 이상의 메모리를 권장합니다.
6. 여러 컴퓨터가 지식 베이스를 어떻게 공유할 수 있습니까?
AnythingLLM을 Docker 서버로 배포하고 클라이언트가 LAN을 통해 액세스할 수 있도록 공유 데이터 볼륨을 구성합니다.
## 요약 및 다음 단계
이 시점에서는 이미 "로컬 모델 + 로컬 지식 기반 + 추적 가능한 질문 및 답변"의 RAG 애플리케이션 세트가 있습니다. 제안된 다음 단계: 먼저 1~2주 동안 소규모 시험을 위해 실제 비즈니스 문서를 사용하여 고주파수 문제를 수집하고 사각지대를 검색한 다음 모델을 업그레이드할지, 벡터 라이브러리를 전환할지, 여러 사용자에게 배포할지 결정합니다.
## 고도화 및 확장
- FastGPT/Flowise로 변경: 시각적 워크플로우와 복잡한 분기가 필요한 경우 마이그레이션합니다.
- 벡터 라이브러리 업그레이드 : 문서량이 많아지면 LanceDB를 Milvus 등의 전문 벡터 라이브러리로 교체하세요.
- 하이브리드 검색: 키워드와 벡터 검색을 동시에 활성화하여 롱테일 질문 적중률을 향상합니다.
- 다중 사용자 권한: 부서 수준의 지식 격리를 달성하기 위해 서버를 배포하고 계정 시스템에 액세스합니다.
- 액세스 에이전트: 지식 기반을 작업 주문, 고객 서비스 및 기타 비즈니스 프로세스를 연결하는 에이전트를 위한 검색 도구로 만듭니다.
사용자 후기