Open WebUI RAG 시스템 구조 설명

daramzzi·2026년 1월 19일

OpenWebUI

목록 보기
6/6

Open WebUI RAG 시스템 구조 설명

Open WebUI의 RAG(Retrieval-Augmented Generation) 시스템은 /backend/open_webui/retrieval/ 디렉토리에 구현되어 있으며, 4개의 주요 컴포넌트로 구성됩니다:

1. Vector (벡터 데이터베이스)

경로: retrieval/vector/

지원하는 벡터 DB (11종):

  • Chroma (기본값)
  • Qdrant
  • Milvus
  • Pinecone
  • OpenSearch
  • PgVector (PostgreSQL)
  • OpenGauss
  • Elasticsearch
  • Oracle23ai
  • Weaviate
  • S3Vector

주요 기능:

  • 벡터 삽입/업데이트/삭제
  • 유사도 검색 (similarity search)
  • 메타데이터 필터링
  • Collection 관리

2. Loaders (문서 로더)

경로: retrieval/loaders/

지원 형식:

  • YouTube: 비디오 자막 추출
  • Tavily: 웹 검색 엔진 통합
  • External Web: 일반 웹페이지
  • External Document: 외부 문서
  • Mistral: Mistral AI 통합
  • Datalab Marker: 문서 마커
  • MinerU: 문서 처리

3. Web (웹 검색)

경로: retrieval/web/

지원 검색 엔진:

  • Google PSE, Bing, DuckDuckGo
  • Brave, Kagi, Perplexity
  • SearXNG, YaCy, Mojeek
  • Serper, SerpAPI, SearchAPI
  • Tavily, Jina Search
  • Azure Search, Ollama Search
  • 외부 API

4. Models (재순위 모델)

경로: retrieval/models/

  • ColBERT: 컨텍스트 기반 재순위
  • Base Reranker: 기본 재순위 모델
  • External: 외부 재순위 API

핵심 기능 (utils.py)

Embedding 생성:

  • OpenAI/Azure OpenAI embeddings
  • Ollama embeddings
  • Sentence Transformers (로컬)
  • 배치 처리 및 비동기 지원

검색 방식:

  1. Vector Search: 임베딩 기반 유사도 검색

  2. Hybrid Search: BM25 + Vector Search 결합

    • BM25: 키워드 기반 검색
    • Weight 조정 가능 (하이브리드 밸런스)
  3. Enriched Texts: 메타데이터 강화 검색

    • 파일명, 제목, 섹션 헤딩 포함

Reranking (재순위):

  • 검색 결과를 쿼리와의 관련성으로 재정렬
  • Score threshold 설정 가능
  • Top-K 결과 선택

데이터 소스:

  • 파일 (PDF, DOCX 등)
  • 웹 URL
  • YouTube 비디오
  • 채팅 이력
  • 노트
  • Knowledge Base (컬렉션)

RAG 워크플로우

1. 문서 업로드/URL 입력
   ↓
2. Loader로 텍스트 추출
   ↓
3. 청크 분할 (Chunking)4. Embedding 생성
   ↓
5. Vector DB에 저장
   ↓
6. 사용자 쿼리 → Embedding
   ↓
7. Vector/Hybrid Search
   ↓
8. Reranking (선택적)9. 상위 K개 결과 반환
   ↓
10. LLM에 컨텍스트로 전달
profile
Github: https://github.com/STARC00KIE

0개의 댓글