반응형
LlamaIndex와 OpenAI API 연동 실습
OpenAI API와 LlamaIndex를 연동하면 자연어 기반의 질문 응답 시스템을 간단히 구현할 수 있습니다. 이번 글에서는 OpenAI의 GPT 모델과 LlamaIndex를 활용하여 데이터 인덱싱 및 검색 기능을 제공하는 질문 응답 시스템을 만드는 과정을 설명합니다.
1. 프로젝트 개요
목표
- OpenAI API와 LlamaIndex를 연동하여 질문 응답 시스템을 구현합니다.
- JSON 데이터를 인덱싱하고, 자연어로 질의에 대한 답변을 제공합니다.
주요 기능
- LlamaIndex로 데이터 인덱싱
- OpenAI API를 활용한 자연어 처리
- 질문에 대한 적절한 응답 생성
2. 개발 환경 준비
2.1 필수 라이브러리 설치
다음 명령어를 실행하여 필요한 라이브러리를 설치합니다:
pip install llama-index openai
참고: OpenAI API를 사용하려면 API 키가 필요합니다.
2.2 기본 설정
Python 3.8 이상의 환경에서 개발을 권장합니다. 가상 환경(venv, Conda)을 사용하여 의존성 관리를 간편하게 할 수 있습니다.
3. 질문 응답 시스템 구현
3.1 데이터 준비
아래와 같은 샘플 데이터를 준비합니다:
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 LlamaIndex로 데이터 인덱싱
LlamaIndex를 활용하여 데이터를 인덱싱합니다.
import os
import json
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")
print("데이터 인덱싱 완료!")
3.3 질문 응답 기능 구현
사용자가 입력한 질문에 대해 응답을 생성합니다.
# 질문 응답 처리
while True:
query = input("질문을 입력하세요 (종료하려면 'exit' 입력): ")
if query.lower() == "exit":
print("프로그램을 종료합니다.")
break
response = index.query(query)
print(f"답변: {response}")
4. 실행 결과
데이터 예시
ID | Name | Role | Department |
---|---|---|---|
1 | Alice | Software Engineer | Engineering |
2 | Bob | HR Manager | Human Resources |
3 | Charlie | Data Scientist | Engineering |
4 | Diana | Accountant | Finance |
실행 예시
질문을 입력하세요 (종료하려면 'exit' 입력): Engineering 부서의 직원은 누구인가요?
답변: Engineering 부서에는 Alice (Software Engineer), Charlie (Data Scientist)가 있습니다.
질문을 입력하세요 (종료하려면 'exit' 입력): exit
프로그램을 종료합니다.
5. 확장 가능성
5.1 데이터 소스 확장
- JSON 외에도 텍스트 파일, 데이터베이스, 또는 실시간 API 데이터를 인덱싱할 수 있습니다.
5.2 고급 검색 기능
- 키워드 기반 필터링, 특정 열에 집중한 검색, 또는 조건부 검색 기능을 추가할 수 있습니다.
5.3 웹 애플리케이션 통합
- Flask 또는 FastAPI를 사용하여 RESTful API로 배포하고, 웹 애플리케이션에서 질문 응답 기능을 제공합니다.
5.4 사용자 경험 향상
- 결과를 요약하거나 강조 표시하여 사용자 친화적인 검색 경험을 제공합니다.
참고 자료
반응형
'LlamaIndex' 카테고리의 다른 글
Python으로 LlamaIndex 기반 AI 챗봇 개발 (1) | 2025.01.22 |
---|---|
LlamaIndex와 Streamlit을 활용한 데이터 검색 웹 애플리케이션 (0) | 2025.01.22 |
LlamaIndex와 PyTorch를 활용한 텍스트 분류 모델 (1) | 2025.01.22 |
LlamaIndex와 Pandas를 이용한 데이터 분석 및 검색 (0) | 2025.01.22 |
LlamaIndex와 FastAPI를 결합한 검색 API 개발 (0) | 2025.01.22 |