
정석을 고집하는 나는 시간이 없는데도 리액트로 프론트엔드를 만들고 ai 파일에 폴더를 나누고 비효율적으로 스터디를 하던 중에
이번에 대대적인 코드 변환을 꾀하다 보니 에너지가 없어서
그동안 성희가 계속 언급했고, 지난 스터디에는 유나가 자신의 프로젝트에 그라디오를 붙였다며 좋아하길래
아 모르겠다 나도 쉽게 가자 해서 그라디오를 붙여봤다.
근데 이 녀석이 뭔지 궁금하다 이말이야..
그래서 알아봤다.
Gradio는 머신러닝 모델이나 파이썬 코드를 웹 기반의 인터페이스로 아주쉽고 빠르게 만들어 주는 오픈소스 파이썬 라이브러리다.
주로 AI 모델을 개발한 뒤에 복잡한 프론트엔드(웹 디자인) 지식 없이도 다른 사람들이 직접 사용해 볼 수 있도록 데모 웹사이트를 구축할 대 많이 사용노디ㅏ.
주요 특징
- 빠른배포
- 다양한 컴포넌트
- 공유 기능
-주피터 노트북 호환
간단한 코드 예시
import gradio as gr
def greet(name):
return f"안녕하세요, {name}님!"
# 'name' 입력을 받고 'text' 결과를 출력하는 인터페이스 생성
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.launch()
구조는
ui
> tabs
> indexing_tab.py
> search_tab.py
1. gradio_app.py
import gradio as gr
from ui.tabs.indexing_tab import create_indexing_tab
from ui.tabs.search_tab import create_search_tab
#
def create_gradio_app():
with gr.Blocks(title="RAG 파이프라인") as app:
gr.Markdown("## RAG 파이프라인")
create_indexing_tab()
create_search_tab()
return app
2.1. indexing_tab.py
import gradio as gr
from service.rag.ingestion import IndexBuilder
def index_pdf(pdf_file):
if pdf_file is None:
return "PDF를 먼저 업로드하세요."
try:
return IndexBuilder.index_pdf(pdf_file.name)
except Exception as e:
return f"❌ 오류: {e}"
def create_indexing_tab():
with gr.Tab("PDF 인덱싱"):
gr.Markdown("PDF를 업로드하면 텍스트를 추출해 벡터 DB에 저장합니다.")
pdf_input = gr.File(label="PDF 업로드", file_types=[".pdf"])
index_btn = gr.Button("인덱싱 시작", variant="primary")
index_out = gr.Textbox(label="결과", lines=3)
index_btn.click(
fn=index_pdf,
inputs=[pdf_input],
outputs=[index_out]
)
2.2. search_tab.py
import gradio as gr
from service.rag.rag_pipeline import RAGPipeline
def search(query):
if not query or not query.strip():
return "질문을 입력해주세요."
results = RAGPipeline.search(query, k=3)
return "\n\n".join([
f"[{i + 1}] 유사도: {r['similarity']:.4f}\n{r['content'][:500]}"
for i, r in enumerate(results)
])
def create_search_tab():
with gr.Tab("질문 검색"):
gr.Markdown("질문을 입력하면 벡터 DB에서 관련 문서를 검색합니다.")
query_input = gr.Textbox(label="질문", placeholder="예: 기준금리란?")
search_btn = gr.Button("검색", variant="primary")
search_out = gr.Textbox(label="검색 결과", lines=15)
search_btn.click(
fn=search,
inputs=[query_input],
outputs=[search_out]
)
왜 많이 쓸까
최근 허깅페이스에 인수되면서 AI 커뮤니티의 표준처럼 자리 잡았다.
특히 LLM이나 이미지 생성 AI 의 데모를 만들 때 가장 먼저 고려되는 도구이다.
만약 개발중인 RAG 파이프라인이나 AI 에이전트를 시각적으로 확인하고 싶다면 그라디오가 가장 효율적인 선택지가 될수 있다.
'스터디 > RAG' 카테고리의 다른 글
| [코드리뷰] Refactoring 4 (0) | 2026.05.05 |
|---|---|
| [framework] 랭체인은 쉽게되는데 왜 우리는 안됐을까? (0) | 2026.05.03 |
| [Python - Library] BaseModel이 뭐다냐? (0) | 2026.05.03 |
| [개념짚고가기] FAISS 이 녀석은 왜 나타났나? (0) | 2026.04.23 |
| [코드리뷰] VectorStore - 리팩토링2 (0) | 2026.04.20 |