멋쟁이사자처럼에서 파이썬으로 RAG를 구현하게 되었다
주제로는 TRPG 의 필수요소이자 꽃인 GM 을 ai로 구현하여 언제든지 편하게 TRPG를 하는 건 어떨까 란 주제였다
문제로는 항상 ai 응답을 다르게해서 응답을 일관시키거나 특정엔딩으로 달려나가야하는데 그렇지 않은 문제가 있었다.
RAG 를 써보는건 어떨까란 생각이 들어서 사용해보았다. 다음은 RAG와 프로그램에 대한 설명이다.
던전톡 AI 서비스는 Spring Boot 백엔드와 연동되는 독립적인 Python AI 마이크로서비스입니다.
┌─────────────────────────────────────────────────────────────────┐
│ 던전톡 시스템 아키텍처 │
└─────────────────────────────────────────────────────────────────┘
┌──────────────────┐ HTTP API ┌─────────────────────────────┐
│ Spring Boot │◄──────────────►│ Python AI Service │
│ 백엔드 서버 │ (Port 8001) │ (FastAPI) │
│ (Port 8080) │ │ │
└──────────────────┘ └─────────────────────────────┘
│ │
│ │
▼ ▼
┌──────────────────┐ ┌─────────────────────────────┐
│ PostgreSQL │◄────────────────│ RAGEngine │
│ (dungeondb) │ pgvector │ ┌─────────────────────┐ │
│ Port 5432 │ embeddings │ │ Vector Store │ │
└──────────────────┘ │ │ (PGVector) │ │
│ └─────────────────────┘ │
│ ┌─────────────────────┐ │
│ │ LLM Provider │ │
│ │ - DeepSeek │ │
│ │ - Claude (백업) │ │
│ │ - OpenAI (백업) │ │
│ └─────────────────────┘ │
│ ┌─────────────────────┐ │
│ │ Embeddings │ │
│ │ - OpenAI │ │
│ │ - HuggingFace │ │
│ └─────────────────────┘ │
└─────────────────────────────┘
│
▼
┌─────────────────────────────┐
│ Documents │
│ ┌─────────────────────┐ │
│ │ NPC 정보 │ │
│ │ 세계관 설정 │ │
│ │ 게임 규칙 │ │
│ │ 시나리오 │ │
│ │ 아이템 정보 │ │
│ └─────────────────────┘ │
└─────────────────────────────┘
dungeontalk_raglangchain_pg_collection: 문서 컬렉션langchain_pg_embedding: 벡터 임베딩 저장deepseek-chat)claude-3-haiku-20240307)text-embedding-3-small)intfloat/multilingual-e5-large)
/ai-response → Python AI Servicedocuments/ 폴더 내 .txt, .md, .csv 파일