반응형
LlamaIndex와 Streamlit을 활용한 데이터 검색 웹 애플리케이션
Streamlit은 빠르고 간단하게 웹 애플리케이션을 구축할 수 있는 Python 프레임워크입니다. 이를 LlamaIndex와 결합하면 사용자가 데이터를 검색할 수 있는 직관적인 웹 인터페이스를 만들 수 있습니다. 이번 글에서는 Streamlit으로 사용자 인터페이스를 구축하고 LlamaIndex로 검색 기능을 구현하는 과정을 단계별로 설명합니다.
1. 프로젝트 개요
목표
- Streamlit으로 웹 기반 사용자 인터페이스(UI)를 구축합니다.
- LlamaIndex를 활용해 데이터 검색 기능을 추가합니다.
주요 기능
- JSON 데이터를 LlamaIndex로 인덱싱
- 자연어 검색 기능 제공
- Streamlit을 통해 실시간으로 검색 결과를 시각화
2. 개발 환경 준비
2.1 필수 라이브러리 설치
아래 명령어를 실행하여 필요한 라이브러리를 설치합니다:
pip install streamlit llama-index openai
참고: OpenAI API를 사용하려면 API 키가 필요합니다.
2.2 기본 설정
Python 3.8 이상의 환경에서 개발을 권장하며, 가상 환경(venv, Conda)을 사용하면 의존성 관리를 간편하게 할 수 있습니다.
3. 데이터 검색 웹 애플리케이션 구현
3.1 샘플 데이터 준비
아래와 같은 JSON 데이터를 사용합니다:
data.json:
[
{"id": 1, "name": "Alice", "role": "Software Engineer", "department": "Engineering"},
{"id": 2, "name": "Bob", "role": "HR Manager", "department": "Human Resources"},
{"id": 3, "name": "Charlie", "role": "Data Scientist", "department": "Engineering"},
{"id": 4, "name": "Diana", "role": "Accountant", "department": "Finance"}
]
3.2 Streamlit과 LlamaIndex 통합 코드
아래 코드는 Streamlit으로 검색 인터페이스를 구축하고 LlamaIndex를 통해 검색 결과를 표시하는 방법을 보여줍니다.
import os
import json
import streamlit as st
from llama_index import GPTSimpleVectorIndex, Document
# OpenAI API 키 설정
os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY"
# 데이터 로드 및 인덱스 생성
def load_data_and_create_index(file_path):
with open(file_path, "r", encoding="utf-8") as file:
data = json.load(file)
documents = [Document(f"Name: {item['name']}\nRole: {item['role']}\nDepartment: {item['department']}") for item in data]
index = GPTSimpleVectorIndex.from_documents(documents)
return index
# 데이터 로드 및 인덱스 생성
index = load_data_and_create_index("data.json")
# Streamlit UI 설정
st.title("LlamaIndex 기반 데이터 검색")
st.write("JSON 데이터를 검색할 수 있는 웹 애플리케이션입니다.")
# 사용자 입력 받기
query = st.text_input("질문을 입력하세요:")
# 검색 결과 처리
if query:
response = index.query(query)
st.subheader("검색 결과")
st.write(response)
3.3 Streamlit 실행
Streamlit 앱을 실행하려면 아래 명령어를 터미널에서 실행합니다:
streamlit run app.py
app.py는 위 코드를 저장한 파일 이름입니다. 파일명이 다를 경우 해당 파일 이름으로 명령어를 수정하세요.
4. 실행 결과
웹 애플리케이션 인터페이스
- 질문 입력: 사용자가 자연어로 질문을 입력합니다.
- 검색 결과 표시: LlamaIndex가 반환한 검색 결과가 화면에 표시됩니다.
예시
질문:
Engineering 부서의 직원은 누구인가요?
검색 결과:
Engineering 부서에는 Alice (Software Engineer), Charlie (Data Scientist)가 있습니다.
5. 확장 가능성
5.1 데이터 소스 확장
- JSON 파일 외에도 데이터베이스, CSV, 또는 실시간 API에서 데이터를 가져와 인덱싱할 수 있습니다.
5.2 고급 UI 기능 추가
- 검색 결과 하이라이트 기능
- 필터링 및 정렬 옵션 추가
- 데이터 시각화를 통한 직관적인 검색 결과 제공
5.3 배포
- Streamlit Cloud, Heroku, AWS 등 클라우드 플랫폼에 배포하여 웹 애플리케이션을 공개할 수 있습니다.
참고 자료
반응형
'LlamaIndex' 카테고리의 다른 글
Python으로 LlamaIndex 기반 AI 챗봇 개발 (1) | 2025.01.22 |
---|---|
LlamaIndex와 OpenAI API 연동 (0) | 2025.01.22 |
LlamaIndex와 PyTorch를 활용한 텍스트 분류 모델 (1) | 2025.01.22 |
LlamaIndex와 Pandas를 이용한 데이터 분석 및 검색 (0) | 2025.01.22 |
LlamaIndex와 FastAPI를 결합한 검색 API 개발 (0) | 2025.01.22 |