Flowise로 기본 RAG 실습

JERRY·2025년 11월 19일

Project

목록 보기
2/14

기본 RAG 실습 (Flowise Only)

“감사보고서를 업로드하고 질문할 수 있는 RAG”를 Flowise UI 안에서 완전히 NO-CODE로 만들기

Step 2-1. Document Store 만들기

1) Flowise 접속

2) 왼쪽 메뉴 → "Document Store" 클릭

3) 오른쪽 상단 "Add New" 클릭

4) 아래처럼 설정 후 "Add" 클릭

  • Name: audit_docs
  • Description: 감사보고서 PDF용 문서 저장소

Step 2-2. PDF 업로드

1) Document Store 이동

2) Add Document Loader 클릭

3) Pdf File 선택

4) 설정 입력

  • Pdf File Loader Name
  • Upload File
  • Usage : One document per file
  • Select Text Splitter 설정
    • Recursive Character Text Splitter
    • Chunk Size/Chunk Overlap 설정
  • Preview Chunks (선택)
  • “Process” 클릭

5) 설정 입력 VectorDB 저장 확인

  • Document Store 메인 화면(audit_docs)으로 돌아왔을 때 아래와 같은 행들이 나타나면 성공

  • PDF → 청크화 → 임베딩 → 벡터DB 저장까지 완료한 상태

    • Loader: Pdf File
    • Splitter: Recursive Character Text Splitter
    • Source(s): 파일명
    • Chunks: 숫자
    • Characters: 숫자

Step 2-3. Chatflow 연결(기본 RAG 챗봇 만들기)

  • Document Store

    • 사용 이유
      • 프로젝트 내에서 다수의 PDF 감사보고서를 관리해야 하기 때문
      • Flowise에서 문서 보관·버전 관리·업로드 기능을 제공하는 기본 스토리지
    • 기능
      • PDF 파일 업로드 및 저장
      • 문서를 Flowise 내부 형식으로 변환
      • Chroma에 전달하기 위한 “문서 원본 공급원” 역할
    • 연결
      • Document Store → Chroma.Document
      • Chroma가 문서를 chunk + embedding 할 수 있도록 문서 원본을 공급하기 때문.
  • OpenAI Embeddings

    • 사용 이유
      • 텍스트를 숫자 벡터로 변환해 벡터DB 검색이 가능하도록 만들기 위해서
      • text-embedding-3-small
        • 낮은 비용
        • 성능 대비 효율 좋음
        • 대량 문서 임베딩에 최적
    • 기능
      • 텍스트 → 1536차원 벡터 변환
      • Chroma의 벡터 저장에 필요한 형태로 변환
    • 연결
      • OpenAI Embeddings → Chroma.Embeddings
      • Chroma는 문서에 대한 임베딩을 외부에서 공급받아야 하며 embedding 없이 vector search는 불가능
  • Chroma (외부 Chroma 서버)

    • 사용 이유
      • 모든 팀원이 동일한 환경에서 재현 가능한 벡터DB가 필요하기 때문
      • Flowise 내장 Chroma
        • 로컬 저장 방식 충돌 가능성 있음
        • 재기동 시 데이터 보존이 불안정
          • pip install chromadb
          • set CHROMA_SERVER_CORS_ALLOW_ORIGINS=
          • chroma run --host 0.0.0.0 --port 8000
          • Chroma URL : http://localhost:8000
    • 기능
      • 문서 chunk 저장
      • 임베딩 벡터 저장
      • kNN 검색 (유사도 기반 청크 검색)
      • VectorStore API 제공
    • 연결
      • Document Store → Chroma.Document
      • OpenAI Embeddings → Chroma.Embeddings
  • Vector Store Retriever

    • 사용 이유
      • Chroma Vector Store를 검색 가능한 형태(=retriever)로 바꾸기 위해 필요
      • Retrieval QA Chain과 Multi Retrieval QA Chain이 “VectorStore” 자체가 아닌 “Retriever” 타입을 기대하는 구조라 반드시 필요함
    • 기능
      • 질문(query)을 임베딩 → 벡터로 변환
      • Chroma에서 k개 청크를 검색
      • 검색된 청크 리스트를 LLM에 반환
    • 연결
      • Chroma Vector Store → Vector Store Retriever
      • Vector Store Retriever → Multi Retrieval QA Chain : Multi Retrieval QA Chain은 retriever 타입만 받기 때문
  • ChatOpenAI

    • 사용 이유
      • 검색된 문서를 기반으로 답변을 작성하기 위한 LLM
      • gpt-4o-mini (latest)
        • 빠른 속도
        • 효율적인 비용
        • 한국어/문서 QA 성능 준수
    • 기능
      • retriever가 전달한 문서를 읽고
      • 한국어 자연어 답변 생성
      • 문맥 기반 reasoning 수행
    • 연결
      • ChatOpenAI → Multi Retrieval QA Chain.Language Model
      • LLM은 “답변 생성만” 담당하고 실제로 “문서 검색”은 retriever가 담당하므로 LLM이 QA Chain의 Language Model 포트로 연결
  • Multi Retrieval QA Chain (엔딩 노드)

    • 사용 이유
      • Vector Store Retriever와 가장 잘 호환되는 QA 체인이기 때문
      • Retrieval QA Chain은 VectorStoreRetriever 타입을 제대로 받지 못해 연결 불가
    • 기능
      • 사용자의 질문 → retriever에게 전달
      • retriever가 문서를 찾아오면 문서와 질문을 LLM에게 전달하여 답변 생성
      • 최종 답변 + (옵션) 출처 문서를 반환
    • 연결
      • Vector Store Retriever → Multi Retrieval QA Chain.Vector Store Retriever
      • ChatOpenAI → Multi Retrieval QA Chain.Language Model
      • 검색과 답변 생성이 같은 node 내부에서 orchestrate되기 때문

0개의 댓글