[Dev-Fortune] 시리즈 다시보기
1. 서론: AI는 어떻게 사주를 ‘공부’하는가?
AI에게 새로운 지식을 가르치는 방법 중 가장 경제적이고 정확한 RAG(Retrieval-Augmented Generation) 방식을 살펴봅니다. 질문이 들어올 때마다 관련 내용을 찾아서 읽어주며 답변하게 하는 원리입니다.
2. 데이터 주입 프로세스 (Data Ingestion)
JSON 파일이 어떻게 벡터화되어 메모리에 저장되는지 그 흐름을 도식화했습니다.
flowchart LR
A[(sajuAPI.json)] --> B[DataLoader]
B --> C[Text 정제: Key-Value형식]
C --> D[Embedding Model]
D --> E{SimpleVectorStore}
E --> F[RAM Memory]
style F fill:#f96,stroke:#333,stroke-width:2px
3. SimpleVectorStore와 DataLoader
우리 프로젝트는 별도의 DB 없이 메모리 기반의 SimpleVectorStore를 사용합니다. UnidocuDataLoader는 서버 기동 시점에 JSON 데이터를 읽어 벡터로 변환하여 주입합니다.
// 텍스트 정제 예시
String content = String.format(
"it_interpretation: %s\nanti_pattern: %s\nbad_habit: %s",
item.get("it_interpretation"), ...
);
4. 유사도 검색(Similarity Search)
사용자가 “프로젝트 마감"에 대해 물으면, 벡터 저장소는 의미적으로 유사한 사주 데이터 상위 3개를 찾아 AI에게 전달합니다.
다음 4편에서는 이 데이터를 기반으로 시니컬한 말투를 생성하는 ‘프롬프트 엔지니어링’에 대해 다뤄보겠습니다.