project/LLM + RAG + Ollama + NestJS 백엔드 연동 실습

📘 시리즈: LLM + RAG + Ollama + NestJS 백엔드 연동 실습 - 9. Swagger 문서화 + 클라이언트 연동으로 실전 RAG API 완성하기

octo54 2025. 7. 8. 10:35
반응형

 

📘 시리즈: LLM + RAG + Ollama + NestJS 백엔드 연동 실습

9. Swagger 문서화 + 클라이언트 연동으로 실전 RAG API 완성하기


🎯 목표

이제 우리는 RAG 시스템의 핵심 기능들을 모두 구성했습니다.
이번 글에서는 이 시스템을 실제 서비스에 연동하기 위한 마무리 작업으로 다음을 수행합니다:

  1. API 문서화 (Swagger 사용)
  2. 프론트엔드(React, Vue 등)와 연동하기 쉬운 구조로 정리
  3. 배포 시 보안/성능 체크리스트 정리

📚 1. NestJS Swagger 연동

설치

npm install --save @nestjs/swagger swagger-ui-express

설정 (main.ts)

import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';

const config = new DocumentBuilder()
  .setTitle('RAG API')
  .setDescription('LLM + Vector 기반 Q&A API')
  .setVersion('1.0')
  .addTag('rag')
  .build();

const document = SwaggerModule.createDocument(app, config);
SwaggerModule.setup('api', app, document);

✅ 이후 http://localhost:3000/api 로 문서 확인 가능


🧑‍💻 2. DTO에 Swagger 데코레이터 추가

import { ApiProperty } from '@nestjs/swagger';

export class QuestionDto {
  @ApiProperty({ example: '회사의 개인정보 처리방침은 무엇인가요?' })
  question: string;
}
export class UploadDto {
  @ApiProperty({ example: 'privacy.txt' })
  filename: string;

  @ApiProperty({ example: 'This document contains privacy policy...' })
  content: string;
}

🔗 3. 프론트엔드 연동 팁

아래는 클라이언트 측에서 RAG API를 호출하는 예입니다 (React 기준):

const askQuestion = async (question: string) => {
  const res = await fetch('/rag/ask', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ question }),
  });
  const data = await res.json();
  console.log(data.answer);
};

또는 FormData를 이용한 문서 업로드:

const uploadFile = async (file: File) => {
  const formData = new FormData();
  formData.append('file', file);

  await fetch('/rag/upload-file', {
    method: 'POST',
    body: formData,
  });
};

🔒 4. 실전 배포 전 체크리스트

항목 설명

✅ CORS 설정 app.enableCors() or whitelist 적용
✅ Swagger 보호 API 키, Swagger 비활성화(운영 환경)
✅ 캐싱 적용 Redis, LRU 등
✅ 보안 업로드 파일 MIME 체크, 크기 제한
✅ 성능 API 응답 속도 모니터링, 로깅 추가

✅ 정리

  • Swagger로 API를 문서화해 협업/프론트 연동이 쉬워짐
  • 실제 프론트와 연결 가능한 구조로 RAG API 완성
  • 실전 서비스를 위한 기본 보안/성능 대비도 확인 완료

 

NestJS Swagger 문서화,LLM API 연동,프론트 백엔드 연결,RAG API 실전,파일 업로드 API,AI 문서 챗봇 연결,Swagger 설정 NestJS,RAG 보안 배포,백엔드 성능 체크리스트,NestJS 실전 예제