Ollama와 함께 항공사 리뷰를 위한 로컬 RAG AI 에이전트 구축
Source: Dev.to

저는 Retrieval‑Augmented Generation (RAG)을 활용한 완전 local AI agent가 얼마나 멀리 갈 수 있는지 탐구하고 싶었습니다. 작은 호기심 기반 저녁 프로젝트로, 저는 항공사 리뷰에 관한 질문에 답변할 수 있는 에이전트를 구축했습니다 — 완전히 오프라인이며, 빠르고, 비용도 저렴합니다.
기술 스택 개요
언어: Python
LLM 런타임: Ollama
모델
llama3.2는 질문 응답용mxbai-embed-large는 임베딩용
벡터 스토어: Chroma
라이브러리
langchainlangchain-ollamalangchain-chromapandas
데이터셋: Kaggle의 Airline Reviews (CSV)
왜 Ollama인가?
- 로컬에서 쉽게 실행 가능
- 저렴함 (API 비용 없음)
- 실험에 충분히 빠름
사이드 프로젝트와 학습에 완벽합니다.
데이터셋 준비
이 데이터셋은 Kaggle에서 가져온 것으로, CSV 형식의 항공사 리뷰를 포함하고 있습니다.
벡터 인제스트를 더 빠르고 가볍게 만들기 위해, 의미 검색에 관련된 열(리뷰 텍스트, 항공사 이름, 평점 등)만 남긴 축소된 CSV 버전을 만들었습니다. 이를 통해 크게 개선되었습니다:
- 임베딩 생성 시간
- 벡터 스토어 로딩 속도
고수준 아키텍처
- pandas를 사용하여 CSV에서 항공사 리뷰를 로드합니다.
- mxbai-embed-large로 임베딩을 생성합니다.
- 벡터를 Chroma에 저장합니다.
- 사용자 질문에 대한 관련 리뷰를 검색합니다.
- 검색된 리뷰와 질문을 llama3.2에 전달합니다.
- 검색된 내용에만 엄격히 기반한 답변을 생성합니다.
프롬프트 디자인
프롬프트는 명확하고 제한적이며 환각을 방지하도록 설계되었습니다:
You are an expert in answering questions about airline reviews.
Use the provided reviews to answer the question as accurately as possible.
Here are some relevant reviews: {reviews}
Here is the question to answer: {question}
IMPORTANT: Base your answer ONLY on the reviews provided above. If no reviews are provided, say "No reviews were found."
이 단일 지시문만으로도 답변 신뢰성이 크게 향상되었습니다.
최소 파이썬 설정 (개념적)
import pandas as pd
from langchain_ollama import OllamaEmbeddings, OllamaLLM
from langchain_chroma import Chroma
from langchain.chains import RetrievalQA
# 1. Load CSV
df = pd.read_csv("airline_reviews_reduced.csv")
# 2. Create embeddings
embeddings = OllamaEmbeddings(model="mxbai-embed-large")
# 3. Build vector store
vector_store = Chroma.from_documents(
documents=df["review_text"].tolist(),
embedding=embeddings,
collection_name="airline_reviews"
)
# 4. Set up LLM
llm = OllamaLLM(model="llama3.2")
# 5. RetrievalQA chain
qa = RetrievalQA.from_chain_type(
llm=llm,
retriever=vector_store.as_retriever(),
chain_type_kwargs={"prompt": YOUR_PROMPT_STRING}
)
# 6. Ask a question
answer = qa.run("How do passengers generally feel about Emirates?")
print(answer)
이 코드는 의도적으로 간단하고 읽기 쉽게 작성되었으며, 추상화 레이어보다 명확성에 중점을 두었습니다.
예시 결과
✅ 예시 1: 유효한 질문
Question: 승객들은 일반적으로 Emirates에 대해 어떻게 느끼나요?
Result: 에이전트는 여러 관련 리뷰를 검색하고 올바르게 요약했습니다.

❌ 예시 2: 관련 데이터 없음
Question: Honda CRA는 좋은 SUV 차인가요?
Result: 관련 리뷰가 검색되지 않아 에이전트가 다음과 같이 응답했습니다:
No reviews were found…

GitHub 리포지토리
전체 소스 코드는 여기에서 확인할 수 있습니다:
👉 GitHub Repo: local-AI-agent-RAG
README의 지침에 따라 리포지토리를 클론하고 프로젝트를 실행할 수 있습니다.
최종 생각
이 프로젝트는 호기심과 재미로 시작되었습니다—복잡하게 만들지 않고 로컬 RAG 시스템을 실험할 수 있는 방법이죠. 동일한 접근 방식은 더 확장할 수 있습니다: 더 큰 데이터셋과 성능이 뛰어난 하드웨어를 사용하면 훨씬 빠르고, 더 정확하며, 프로덕션‑준비된 것을 만들 수 있습니다.
현재는 확실한 개념 증명으로서, 의미 있는 AI 프로젝트를 시작하는 데 항상 방대한 인프라가 필요하지 않다는 것을 상기시켜 줍니다 🚀