티스토리 뷰

반응형

비전공자를 위한 AI Agent 7편

“폴더 하나로 RAG Agent 만들기 – 문서를 읽고, 찾고, 판단하는 AI”

솔직히 여기까지 왔다면
이런 생각 한 번쯤 했을 거예요.

“개념은 이제 알겠는데…
이걸 내 문서 폴더 기준으로 바로 써먹고 싶다.”

맞습니다.
오늘 글은 완전 실전입니다.

  • PDF 몇 개
  • TXT, MD 섞여 있는 폴더
  • 그걸 AI 에이전트가 직접 읽고
  • 질문에 맞는 내용만 찾아서
  • 근거 기반으로 답변

👉 진짜 RAG Agent를 만듭니다.


0️⃣ 오늘 우리가 만들 것 (명확한 목표)

🎯 목표

  • docs/ 폴더 안의 문서들을 전부 읽는다
  • 문서를 자동으로 쪼갠다
  • 임베딩(벡터)로 변환해 저장한다
  • 질문이 들어오면 관련 문서만 검색
  • 그 근거를 바탕으로 AI가 답변한다

❌ 안 하는 것

  • 웹 서버
  • 복잡한 DB
  • 대규모 분산 구조

👉 로컬에서 바로 실행 가능한 RAG Agent


1️⃣ 준비물 (이거 그대로 맞추면 됨)

Python 3.10+

python --version

필수 라이브러리 설치

pip install openai chromadb tiktoken

ChromaDB는 로컬에서 쓰기 제일 편한 벡터 DB라서 선택했어요.
나중에 Pinecone, Weaviate로 바꿔도 구조는 동일합니다.


2️⃣ 프로젝트 구조

rag-agent/
 ├─ agent.py
 └─ docs/
     ├─ guide.txt
     ├─ meeting.md
     └─ memo.txt

docs/ 예시 (guide.txt)

AI Agent는 목표 중심으로 동작한다.
단순 챗봇과 달리 도구를 사용해 실제 행동을 수행한다.

3️⃣ RAG Agent 전체 흐름 (이게 전부다)

문서 폴더 읽기
 → 텍스트 추출
 → chunk로 분리
 → 임베딩 생성
 → 벡터 DB 저장

질문 입력
 → 벡터 검색
 → 관련 chunk 추출
 → AI에게 전달
 → 답변 생성

복잡해 보이지만
코드로 보면 진짜 단순합니다.


4️⃣ 실행 가능한 전체 코드 (검증 완료)

반응형

agent.py

import os
from openai import OpenAI
import chromadb
from chromadb.config import Settings

client = OpenAI()

# 1️⃣ 벡터 DB 초기화
chroma_client = chromadb.Client(
    Settings(persist_directory="./chroma", anonymized_telemetry=False)
)
collection = chroma_client.get_or_create_collection(name="docs")


# 2️⃣ 문서 로딩
def load_documents(folder_path: str):
    docs = []
    for file in os.listdir(folder_path):
        if file.endswith((".txt", ".md")):
            with open(os.path.join(folder_path, file), "r", encoding="utf-8") as f:
                docs.append(f.read())
    return docs


# 3️⃣ 문서 쪼개기 (아주 단순하게)
def split_text(text: str, chunk_size=500):
    return [text[i:i+chunk_size] for i in range(0, len(text), chunk_size)]


# 4️⃣ 문서 임베딩 후 저장
def index_documents():
    docs = load_documents("docs")
    chunk_id = 0

    for doc in docs:
        chunks = split_text(doc)
        for chunk in chunks:
            embedding = client.embeddings.create(
                model="text-embedding-3-small",
                input=chunk
            ).data[0].embedding

            collection.add(
                documents=[chunk],
                embeddings=[embedding],
                ids=[str(chunk_id)]
            )
            chunk_id += 1

    print("✅ 문서 인덱싱 완료")


# 5️⃣ 질문 → 검색 → 답변
def ask_agent(question: str):
    query_embedding = client.embeddings.create(
        model="text-embedding-3-small",
        input=question
    ).data[0].embedding

    results = collection.query(
        query_embeddings=[query_embedding],
        n_results=3
    )

    context = "\n".join(results["documents"][0])

    prompt = f"""
너는 문서 기반 AI 에이전트다.
아래 문서 내용을 근거로 질문에 답변해라.

문서:
{context}

질문:
{question}

근거에 없는 내용은 추측하지 마라.
"""

    response = client.chat.completions.create(
        model="gpt-4.1-mini",
        messages=[
            {"role": "system", "content": "너는 신뢰 가능한 RAG Agent다."},
            {"role": "user", "content": prompt}
        ],
        temperature=0.2
    )

    print("\n🤖 에이전트 답변:")
    print(response.choices[0].message.content)


if __name__ == "__main__":
    index_documents()
    ask_agent("AI Agent와 챗봇의 가장 큰 차이는?")

5️⃣ 실행 방법

python agent.py

실행 결과 예시 👇

✅ 문서 인덱싱 완료

🤖 에이전트 답변:
AI Agent는 단순히 질문에 답변하는 챗봇과 달리,
명확한 목표를 가지고 도구를 활용해 실제 행동을 수행한다는 점이 가장 큰 차이입니다.

👉 이 답변은
docs 폴더 안 문서에 근거해서만 나온 겁니다.


6️⃣ 이게 왜 “Agent”냐면

보통 RAG 예제는 여기서 끝나요.

질문 → 검색 → 답변

근데 우리는 이미 다음 확장이 가능합니다.

  • 답변이 부족하면?
    → 다시 검색
  • 근거가 약하면?
    → 다른 chunk 탐색
  • 질문이 모호하면?
    → 질문 재정의

👉 검색 자체를 판단 대상으로 삼을 수 있음

이게 바로
RAG + Agent 구조입니다.


7️⃣ 비전공자 기준 실무 팁 (진짜 중요)

✅ 문서 품질 > 모델 성능

  • 정리 안 된 문서 100개 ❌
  • 잘 쓴 문서 10개 ⭕

✅ chunk는 크지 않게

  • 너무 크면 검색이 흐림
  • 너무 작으면 문맥 붕괴

✅ “근거 없으면 말하지 마라” 꼭 넣기

  • 이 한 줄이 환각을 크게 줄입니다

8️⃣ 여기까지 오면 이제 이런 생각 든다

“이제 문서도 보고,
판단도 하는데…
이걸 업무 흐름에 엮을 수는 없을까?”

정확합니다.
다음 단계는 실제 서비스 구조입니다.


다음 글 예고

8편 – 실무형 AI Agent 설계: 실패, 로그, 통제의 세계

  • 왜 에이전트는 반드시 실패하는지
  • 로그 없으면 왜 운영이 불가능한지
  • 어디까지 AI에게 맡기고, 어디서 사람 개입이 필요한지

👉 여기부터는
‘사이드 프로젝트’가 아니라 ‘제품’ 이야기입니다.


오늘 요약 (이 문장 하나면 충분)

RAG Agent는
문서를 기억하는 AI가 아니라
문서를 찾아보는 AI다

이 구조만 잡히면,
여러분의 폴더는 곧 지식 에이전트의 뇌가 됩니다.


 

RAG Agent 실습,AI 에이전트 문서검색,Vector DB 기초,비전공자 RAG 튜토리얼,AI Agent Python,ChromaDB 사용법,AI 문서 기반 답변,LLM RAG 실전,AI Agent 만들기,생성형 AI 실무

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함
반응형