728x90
RAG(Retrieval-Augmented Generation) 시스템에 시(Poetry) 데이터베이스를 구축할 때 임베딩 검색(Vector Search)과 메타데이터 필터링(Metadata Filtering)을 동시에 극대화할 수 있는 최적의 포맷 2가지를 제안합니다.
1. JSON 포맷 (Vector DB 메타데이터 저장용 추천)
ChromaDB, Pinecone, Qdrant 등 주요 Vector DB에 Document 및 Metadata로 탑재할 때 가장 직관적이고 검색 정확도가 높은 구조입니다.
JSON
{
"doc_id": "yoon_dong_ju_chimney_01",
"metadata": {
"author": "윤동주",
"title": "굴뚝",
"genre": "시 (Poetry)",
"type": "동시 / 향토시",
"era": "일제강점기",
"keywords": ["윤동주", "굴뚝", "감자", "총각애들", "옛이야기", "연기", "오막살이", "동심"]
},
"search_summary": "산골 오막살이 굴뚝에서 피어나는 연기를 보며 아이들이 모여 앉아 감자를 구워 먹고 옛이야기를 나누는 따뜻하고 정겨운 풍경을 담은 윤동주 시인의 동시.",
"content": "산골짜기 오막살이 낮은 굴뚝엔\n몽기몽기 웨인연기 대낮에 솟나,\n\n감자를 굽는 게지 총각애들이\n깜박깜박 검은눈이 모여 앉아서\n입술에 꺼멓게 숯을 바르고\n옛이야기 한커리에 감자 하나씩.\n\n산골짜기 오막살이 낮은 굴뚝엔\n살랑살랑 솟아나네 감자 굽는내."
}
2. Markdown 포맷 (LangChain / LlamaIndex 로더용 추천)
문서 로더(Document Loader)를 통해 텍스트 패키징 및 텍스트 분할(Chunking)을 진행할 때 최적인 YAML 프론트매터(Frontmatter) 방식입니다.
Markdown
---
author: 윤동주
title: 굴뚝
category: 시
keywords: [윤동주, 굴뚝, 감자, 오막살이, 숯, 동심, 정경]
summary: 산골 오막살이 굴뚝 연기와 감자를 굽는 아이들의 동심을 그린 윤동주의 시.
---
# 윤동주 - 굴뚝
## 시 본문
산골짜기 오막살이 낮은 굴뚝엔
몽기몽기 웨인연기 대낮에 솟나,
감자를 굽는 게지 총각애들이
깜박깜박 검은눈이 모여 앉아서
입술에 꺼멓게 숯을 바르고
옛이야기 한커리에 감자 하나씩.
산골짜기 오막살이 낮은 굴뚝엔
살랑살랑 솟아나네 감자 굽는내.
💡 AI와 RAG 성능이 올라가는 3가지 이유
- 메타데이터 구조화: "윤동주 시인 작품만 찾아줘"나 "시 제목이 '굴뚝'인 것 알려줘" 같은 요청 시, 벡터 임베딩 단독 검색보다 필터링(Filter) 기능을 병행하여 100% 정확한 문서를 집어낼 수 있습니다.
- 요약문(search_summary) 작성: 사용자가 *"아이들이 감자 구워 먹는 옛날 시"*처럼 시 제목을 몰라도 맥락(의도) 중심 Query를 던졌을 때 벡터 유사도 매칭 확률을 크게 높여줍니다.
- 연(Stanza) 단위 줄바꿈 유지: 시는 행과 연의 구분이 중요하므로 이스케이프 문자(\n) 또는 마크다운 줄바꿈을 원형 그대로 보존해야 LLM이 답변을 인용할 때 형태를 깨뜨리지 않습니다.
728x90
'프로그램 활용 > 인공지능(AI)' 카테고리의 다른 글
| llm에서 7b, 10b, 128b 등은 왜 나뉘어지는가? llm 구조가 다른가? llm에 누적된 데이터량이 다른가? (0) | 2026.08.07 |
|---|---|
| PostgreSQL과 Milvus를 동일한 ID로 상호 연결하여 RAG를 구현 (0) | 2026.08.05 |
| Ollama 설치 및 기초 사용방법(feat 로컬 LLM환경 구축) (0) | 2026.08.04 |
| LLM과 RAG 환경 구축 (0) | 2026.08.04 |
| AI | LanceDB란 (0) | 2026.08.04 |