LangFlow 사용 방법(feat Rag + LangFlow 실습해보기 )
- -
안녕하세요! 갓대희 입니다. :- )
평소에 이런 저런 컨셉을 증명하고, 확인하는데 주로 n8n으로 활용하곤 한다.
이번에는 Dify, n8n 등과 유사하게 gui 방식으로 노코드 로우코드로 작업을 해볼 수 있는 툴 중 하나인 LangFlow로도 Rag 챗봇을 만들어 보는 실습을 해보려 한다.
평소에는 supabase를 벡터DB로 활용해 보았는데 오늘은 FAISS를 활용하여 실습해보려 한다.
FAISS(Facebook AI Similarity Search)는 밀집된 벡터(Dense Vector) 간의 유사성 검색 및 클러스터링을 위한 Meta AI(Facebook AI Research)에서 개발한 오픈소스 라이브러리이다.
최대한 간단하게 실습하려고 FAISS를 활용하였는데, 오히려 복잡하게 된것 같긴한데, 그래도 실습 과정을 그대로 남기니 재밌게 봐주시면 좋을 것 같다.
Rag가 궁금하신 분들은 지금.. 3$정도 충전해 뒀는데 Rag에 대해서 간단히 물어볼 수 있는 챗봇을 연결 시켜 두었다.
우측 하단에 있고(다 소진되면 대답 못할수 있으니 ㅠ 재미로 봐주시면 좋겠다.) ↘️ ↘️ 요기 어딘가 있을 것 같다 ↘️ ↘️
RAG의 진화
RAG는 전통적인 문서 검색을 넘어 완전히 새로운 차원으로 발전했다.
특히 VideoRAG, GraphRAG, Agentic RAG 등 최신 기법들이 실용화 단계에 접어들었다.
오늘은 제일 간단한 단순 벡터 검색을 목표로 한다.
RAG 유형 | 핵심 특징 | 2025년 발전사항 | 적용 분야 |
---|---|---|---|
Traditional RAG | 단순 벡터 검색 | 하이브리드 검색 표준화 | 일반 Q&A |
VideoRAG | 영상+텍스트 통합 | 2025년 1월 신규 등장 | 교육, 엔터테인먼트 |
Agentic RAG | 자율적 에이전트 통합 | 다단계 추론 가능 | 복잡한 의사결정 |
Graph RAG | 지식 그래프 기반 | Microsoft 오픈소스화 | 관계 분석 |
SafeRAG | 보안 중심 설계 | 적대적 공격 방어 | 엔터프라이즈 |
VideoRAG : 영상 콘텐츠 직접 처리로 교육/엔터테인먼트 혁신
Agentic RAG : 자율 에이전트와 결합한 복잡한 추론 가능
SafeRAG : 적대적 공격 방어 기능으로 엔터프라이즈급 보안 확보
하이브리드 검색 : 벡터+키워드 검색 조합이 이제 기본 스펙
특히 한국어 멀티모달 처리 능력이 크게 향상되어 실무 적용이 훨씬 쉬워졌다.
LangFlow RAG 구축 준비하기
본격적인 실습에 앞서 환경을 준비해보자. 이전 글에서 설치는 다뤘으니, 이번에는 RAG 전용 설정에 집중해 보자.
2025.08.03 - [AI/Workflow : 자동화] - LangFlow 설치 및 기본 사용방법(feat GPT없이, ollama로 챗봇 만들기)
필수 API 키 준비
# 환경 변수 설정
export OPENAI_API_KEY="sk-..."
export LANGFLOW_STORE_API_KEY="your_key" # 템플릿 다운로드용
# 선택적 - 고급 기능용
export COHERE_API_KEY="..." # 리랭킹 모델
export HUGGINGFACE_API_KEY="..." # 오픈소스 임베딩
Step 1 : Vector Store RAG 템플릿으로 시작하기
LangFlow의 Vector Store RAG 템플릿은 실무에서 바로 쓸 수 있는 수준으로 잘 만들어져 있다.
하지만 기본 설정으로는 아쉬운 부분이 많다.
- NEW Flow > Vector Store RAG로 시작하여 보자.

기본 워크플로우 구조
1. Load Data Flow: 문서 → 청킹 → 임베딩 → 벡터 저장

2. Retriever Flow: 쿼리 → 임베딩 → 유사도 검색 → 컨텍스트 생성 → LLM 응답

# 보안 업데이트: 반드시 1.3.0 이상 사용 (CVE-2025-3248 패치)
python -m pip install "langflow>=1.3.0" --upgrade
# 또는 uv 사용 (권장 - 5배 빠름)
uv pip install "langflow>=1.3.0" --upgrade
# Docker 사용 (가장 안전)
docker run -p 7860:7860 langflowai/langflow:latest
# 실행 (중요: python -m 사용)
python -m langflow run --host 127.0.0.1 --port 7860
# 보안 강화 옵션
python -m langflow run --host 127.0.0.1 --auth
Step 2 : 벡터 데이터베이스 선택에 대한 고찰
주어진 기본 템플릿은 AstraDB를 사용하고 있다.

실습 목적과 프로젝트 규모에 따라 더 적합한 선택지가 있다.
어떤 벡터 DB를 선택해야할지 고민이 많았다. 나는 특히나 간단한 학습목표인데 어떤 벡터 DB를 사용하면 될까?
이에 대한 기준을 잡기 위해 각 벡터 DB의 특징을 비교해보자.
실습/학습 목적 : FAISS > Supabase > ChromaDB
중소규모 프로덕션 : Supabase > ChromaDB > Milvus Lite
대규모 엔터프라이즈 : Milvus > Weaviate > Qdrant > Astra DB
벡터 데이터베이스 비교
데이터베이스 | 설치 난이도 | 비용 | 성능 | 실습 추천도 |
---|---|---|---|---|
⚡ FAISS | ⭐⭐⭐⭐⭐ | 무료 | ⭐⭐⭐⭐ | 🥇 최고 |
🐘 Supabase | ⭐⭐⭐⭐ | 프리티어 충분 | ⭐⭐⭐ | 🥈 추천 |
ChromaDB | ⭐⭐⭐⭐ | 무료 | ⭐⭐⭐ | ⭐⭐⭐ |
Milvus | ⭐⭐ | 무료/유료 | ⭐⭐⭐⭐⭐ | ❌ 비추천 |
Astra DB | ⭐⭐⭐ | 유료 (크레딧) | ⭐⭐⭐⭐ | ⭐⭐ |
실습용 으로는 FAISS를 선택하여 진행 해보려고 한다.
왜 선택 하였는가?
- 별도 서버나 계정 불필요
- 메모리 기반이라 엄청 빠름 (검색 속도 밀리초 단위)
- LangFlow에서 기본 지원, 설정 항목이 거의 없음
- Meta에서 개발한 검증된 라이브러리
단점 : 재시작하면 데이터 사라짐 (실습용이라 문제없음)
실무용 추천 : Supabase 상세 가이드 ( 나의 경우 n8n은 supabase로 실습하였다. )
왜 실무에 좋은가?
- PostgreSQL 기반이라 개발자들이 익숙함
- 관계형 데이터와 벡터 데이터를 한 곳에서 관리
- 월 50만 토큰까지 무료 (개인 프로젝트 충분)
- 웹 대시보드로 데이터 확인 가능
- 백업, 복구 등 운영 기능 내장
단점 : 대규모(100만+ 벡터)에서는 성능 한계
1. 복잡한 설치: Docker Compose, 포트 설정, 환경변수 등 번거로움
2. 높은 진입장벽: 컬렉션, 스키마, 인덱스 개념을 알아야 함
3. 과도한 기능: 실습용으로는 오버엔지니어링
4. 에러 메시지: 초보자가 해결하기 어려운 복잡한 오류들
물론 Milvus는 훌륭한 기술이지만, 학습 목적이라면 더 간단한 옵션으로 RAG 개념을 익히고 나중에 업그레이드하는 것을 추천한다.
실습용 벡터 DB 설정 방법
FAISS 설정
- Components > FAISS 검색 > FAISS Component 추가

- Astra DB를 클릭하고 삭제 > FAISS로 대체하고 동일하게 Chunk > Ingest Data, Embedding Model 끼리 연결 해준다.
- Step3 참고 : Chunk Overlap, Chunk Size 는 하기 별도의 내용에 작성해 두었다.
- Step4 참고 : embedding 모델은 text-embedding-3-small / 본인의 OpenAi Key도 입력하여 준다.

- 하기 설치 방법은 참고만 하자.
# 1. 설치 (이미 LangFlow에 포함되어있어 설치할 필요 없다.)
pip install faiss-cpu
# 2. LangFlow에서 설정
Vector Store 컴포넌트: FAISS 선택
Folder Path: "./faiss_index" # 자동 생성됨
Index Name: "langflow_index"
# 끝! 추가 설정 불필요
Supabase 설정 (이후에 작업 해 볼 예정이니 메모라고 생각하고 패스)
- 간단한 개요는 다음글 참고 :
2025.07.27 - [AI/Database for AI] - [Supabase 시작하기] - 회원 가입부터 기초 CRUD, RAG를 위한 pgvector 활성화 하기
# 1. Supabase 프로젝트 생성 (https://supabase.com)
# 2. SQL Editor에서 pgvector 확장 활성화
CREATE EXTENSION IF NOT EXISTS vector;
# 3. LangFlow에서 설정
Vector Store: Supabase Vector Store
Supabase URL: "https://your-project.supabase.co"
Supabase Key: "your-anon-key" # API Keys에서 복사
Table Name: "documents"
Query Name: "match_documents"
# 4. 테이블 자동 생성됨 - 별도 설정 불필요
Step 1 : 실습/학습 목적인가? → YES: FAISS 선택
Step 2 : 데이터 영속성이 필요한가? → YES: Supabase 선택
Step 3 : 대규모 데이터(100만+ 벡터)인가? → YES: Milvus 고려
Step 4 : 관리 부담을 줄이고 싶은가? → YES: Astra DB 선택
Step 3 : 텍스트 청킹 최적화
청킹은 RAG 성능을 좌우하는 핵심 요소다. 기본값 1000자는 대부분의 경우 비효율적이다. 문서 특성에 맞는 최적화가 필요하다.
현시점은 이정도 인것으로 보이는데, 하기 기준보다 훨씬 좋은 기준이 있다면 관련 내용을 댓글로 남겨주시면 꼭 업데이트 하도록 하겠다.
# 텍스트 스플리터 설정
chunk_size = 800 # 한국어 기준
chunk_overlap = 100
separators = ["\n\n", "\n", ".", "!", "?"] # 한국어 문장부호 포함
# 문서 타입별 추천 설정
PDF_CHUNK_SIZE = 800
MARKDOWN_CHUNK_SIZE = 1200
CODE_CHUNK_SIZE = 500
Step 4 : 임베딩 모델 선택과 성능 비교
2025년 현재 임베딩 모델 선택지가 크게 늘어났다.
OpenAI만 쓰기엔 비용이 아깝고, 오픈소스 모델들의 성능이 급격히 향상됐다.
모델 | MTEB 성능 | 한국어 성능 | 비용(1K토큰) | 추천도 |
---|---|---|---|---|
OpenAI text-3-small | 62.3 | ⭐⭐⭐⭐ | $0.00002 | ⭐⭐⭐⭐ |
OpenAI text-3-large | 64.6 | ⭐⭐⭐⭐⭐ | $0.00013 | ⭐⭐⭐⭐⭐ |
BGE-M3 | 64.1 | ⭐⭐⭐⭐ | 무료 | ⭐⭐⭐⭐ |
Qwen3-Embedding-8B | 70.6 🥇 | ⭐⭐⭐⭐⭐ | 무료 | ⭐⭐⭐⭐⭐ |
OpenAI ada-002는 더 이상 권장하지 않는다. text-embedding-3-small/large가 성능도 좋고 비용도 훨씬 저렴하다.
Qwen3-Embedding-8B는 2025년 6월 기준 MTEB 멀티링구얼 리더보드 1위를 차지하며, 특히 한국어와 중국어에서 뛰어난 성능을 보인다.
Step 5 : 실제 문서로 RAG 테스트하기
이제 실제 문서를 업로드해서 RAG가 제대로 작동하는지 테스트해보자.
테스트용으로는 기술 문서나 FAQ가 좋다.
ex) 나는 이상한 나라의 앨리스 동화책으로 실습해보려 한다.
Load Data Flow 실행하기
1. File 컴포넌트에서 문서 업로드 (PDF, TXT, MD 지원)


2. Split Text 설정 확인 (청크 크기, 오버랩)
3. 임베딩 모델 API 키 설정
4. FAISS 컴포넌트에서 "Run component" 클릭

5. 성공 메시지와 저장된 청크 수 확인
- 쩡크를 잘 만들었는지 확인.

- 그렇게 아름답게 잘리진 못한 것 같다. Separator를 default 설정 이외에 건들지 않아서 그럴까? 이 부분은 추후 해보고 나도 갱신하거나, 의견 남겨주시면 좋을 것 같다.

Step 6 : Retriever Flow로 질의응답 테스트
문서가 성공적으로 벡터화되었다면 이제 Retriever Flow로 실제 질문을 던져보자.
이 영역도 DB는 FAISS로 변경해주고 동일하게 다 연결해 주었다.

- 중간 프롬프트는 다음과 같이 변경 하였다. (해당 영역 클릭 후 변경)

당신은 전문적인 AI 어시스턴트입니다.
주어진 컨텍스트를 바탕으로 정확하고 유용한 답변을 제공하세요.
컨텍스트:
{context}
사용자 질문: {question}
답변 시 주의사항:
1. 컨텍스트에 없는 정보는 추측하지 마세요
2. 출처를 명확히 밝히세요
3. 한국어로 자연스럽게 답변하세요
4. 관련 정보가 부족하다면 솔직히 말하세요
- 플레이 그라운드를 클릭하여 시작해 보자.

- 오류가 발생 하였다.


- FAISS에서 4개의 텍스트 청크를 검색해서 반환해서 오류가 발생하였다. 1개로 합쳐서 전달해보자.

- "Data Operations" 추가 - Operations는 Combine을 선택한다 > 응답 결과를 하나로 합쳐 주기 위해서.
(실제로 이후에 잘 합쳐진것도 확인 가능하다.)



- 최종적으로 이런 모습이 되어 버렸다.

- 다시 PlayGround에서 내용을 물어보자.

- 올바른 내용을 찾는것을 볼 수 있다.

정리
- 벡터 DB는 용도에 맞게 : 실습, 실무는, 규모에 경제에 맞춰 선택 하자.
- 작은 것부터 시작 : 복잡한 멀티모달 RAG보다 단순한 텍스트 RAG를 먼저 완성하자
- 문서 품질이 핵심 : 아무리 좋은 모델을 써도 엉터리 문서로는 좋은 결과가 나올 수 없다
- 비용 최적화 : OpenAI API만 쓰지 말고 오픈소스 모델도 적극 활용하자
- 사용자 피드백 필수 : 실제 사용자들이 만족하는지 지속적으로 확인하고 개선하자
자주 묻는 질문 ❓
참고 자료
- LangFlow Vector Store RAG 공식 가이드 - 기본 구현 방법
- FAISS 공식 문서 - 실습용 벡터 DB
- Supabase Vector Embeddings 가이드 - 실무용 벡터 DB
- MTEB 임베딩 리더보드 - 최신 모델 성능 비교
- LangChain RAG 튜토리얼 - 순수 코드 구현 방법
주의: 위 링크들과 기술 정보는 빠르게 변화하므로, 실제 프로젝트 적용 전 최신 공식 문서를 반드시 확인하시기 바랍니다.
LangFlow로 RAG 시스템을 구축하는 과정을 단계별로 살펴봤다. RAG는 단순한 문서 검색을 넘어 지능적인 정보 종합 시스템으로 진화해오고 있다. 특히 한국어 지원이 크게 개선되어 국내 프로젝트에서도 충분히 실용적이다.
중요한 건 기술만 쫓지 말고 실제 사용자의 니즈에 맞춰 점진적으로 개선해나가는 것이다. 완벽한 RAG는 없다. 벡터 데이터베이스 선택부터 신중하게 하고, 사용자 피드백을 바탕으로 지속적으로 발전시켜나가자.
'AI > Workflow : 자동화' 카테고리의 다른 글
[자동화 실습] n8n으로 AI를 활용하여 가상 피팅모델 만들어 보기 (feat. 패션테크 트렌드 따라잡기, ) (8) | 2025.08.06 |
---|---|
LangFlow 설치 및 기본 사용방법(feat GPT없이, ollama로 챗봇 만들기) (5) | 2025.08.03 |
소중한 공감 감사합니다