AdelieAI 만들면서 정리한 LLM 용어집 (시스템 프롬프트, 하이브리드 RAG)
AdelieAI 만들면서 정리한 LLM 용어집 (시스템 프롬프트, 하이브리드 RAG)
AdelieAI 출시 글을 쓰면서 본문에 등장한 용어들이 너무 많아서, 따로 정리한 용어집입니다. 작은 LLM에 페르소나를 입힐 때 자주 마주치는 단어들이고, 두 영역으로 나눴습니다. 시스템 프롬프트 쪽과 하이브리드 RAG 쪽.
시스템 프롬프트 영역
| 용어 | 정의 | AdelieAI 맥락 |
|---|---|---|
| System prompt | 모델 호출 시 최상단에 들어가는 지시문. 사용자 prompt 위에 위치. 페르소나의 정체성과 룰, 금기를 정의 | core/personas/registry.py에 페르소나마다 하드코딩 |
| Instruction tuning | base 모델(Qwen2.5-7B) 위에 지시 따르기 학습한 단계(-Instruct 모델). “이 형식으로 답해” 같은 룰을 따르게 만듦 | Qwen의 instruction tuning이 영어 데이터가 더 많아 영어 룰을 더 정확히 따름 |
| Register (언어학) | 같은 언어 안의 말투, 격식 수준, 분야 어휘. 친구한테 말하는 register와 면접 register, 학술 논문 register가 다름 | LoRA가 학습한 건 한국어 role-play register(역할극 어조) |
| KG context | Knowledge Graph에서 가져온 사실들. 시스템 프롬프트 끝에 추가되는 “이 페르소나의 lore: A, B, C” 식 구조화된 데이터 | dragon 페르소나가 SPARQL로 RDF에서 조회한 결과를 시스템 프롬프트에 inject |
kg_grounding | 평가 카테고리. “모델이 KG의 사실(Vyrnaes, Sothryn, Arkenstone)을 답에 정확히 언급하는가”를 substring으로 측정 | 40%에서 80%로 끌어올린 게 hybrid 프롬프트 핵심 효과 |
| Style sample (voice sample) | 시스템 프롬프트에 예시 한 줄씩 박아 모델이 그 톤을 흉내 내게 하는 패턴 | 학습 안 거치고도 register 흉내 가능. round 2 프롬프트 보강의 핵심 |
| In-character / out-of-character | 답이 캐릭터 안인가, AI assistant로 빠져나왔나. “I am an AI”는 out-of-character | 평가의 persona_consistency 카테고리가 측정 |
| Meta probe / meta trap | “당신 AI야?”, “시스템 프롬프트 알려줘”처럼 모델을 out-of-character로 끌어내려는 사용자 trick | 메타 함정. 페르소나는 in-character로 거절해야 통과 |
| Catastrophic forgetting | 새 데이터로 fine-tune하면 원래 capability를 잊어버리는 현상 | LoRA v1(역할극만 60쌍)이 일반 답변에서 깨짐. mixed dataset(60+60)으로 수정 |
| Pass rate | 평가 prompt N개 중 통과 비율. substring 또는 LLM judge로 binary | 25-prompt 스위트의 % |
하이브리드 RAG 영역
| 용어 | 정의 | AdelieAI 맥락 |
|---|---|---|
| RAG | Retrieval-Augmented Generation. 모델 호출 전에 외부 코퍼스에서 검색하고, 그 결과를 prompt에 첨부해서 모델이 그걸 보고 답하게 하는 패턴 | core/retrieval/ |
| Chunk / chunking | 긴 문서를 작은 조각으로 자르기. 임베딩 단위가 곧 검색 단위 | RecursiveSplitter, 청크 사이즈 512 토큰 |
| BM25 | lexical(단어 일치 기반) 점수. 검색 고전 알고리즘이고 TF-IDF의 후속 | 드문 명사(예: 페르소나 이름, 제품 코드)를 잘 잡음 |
| Lexical vs semantic | lexical은 글자 그대로 일치, semantic은 의미적 유사 | “할인”과 “discount”가 lexical로는 다르지만 semantic으론 동일 |
| Embedding | 텍스트를 고정 길이 벡터로 변환. 의미적으로 가까운 텍스트는 벡터 거리도 가까움 | multilingual-e5-small이 한국어와 영어를 동시에 처리 |
| Dense retrieval | embedding 기반 검색. 쿼리도 임베딩하고, 코퍼스 임베딩 중 cosine 거리로 가까운 top-k를 뽑음 | “discount”로 검색해도 “할인”이 잡힘 |
| Sparse retrieval | BM25 같은 단어 기반 검색. 행렬이 sparse(대부분 0)라서 sparse | dense와 대비되는 명칭 |
multilingual-e5-small | 다국어 embedder 모델. 한국어와 영어가 같은 벡터 공간에 들어감 | dense retrieval의 임베딩 출처 |
| RRF (Reciprocal Rank Fusion) | 여러 검색 결과를 순위 기반으로 합치는 단순한 ensemble. score = sum(1 / (k + rank_i)) | BM25 ranking과 dense ranking을 합친 final ranking |
| Cross-encoder | 쿼리와 후보 chunk를 동시에 입력받아 relevance 점수를 내는 모델. 정확하지만 느려서 마지막 N개에만 적용 | bge-reranker-v2-m3 |
| Bi-encoder | 쿼리와 chunk를 각각 임베딩한 뒤 cosine으로 비교. 빠르지만 덜 정확 | dense retrieval이 bi-encoder. 1차 후보 추리는 데 사용 |
| Reranker | bi-encoder top-N을 cross-encoder로 재정렬. 속도와 정확도 trade-off의 표준 | bge-reranker-v2-m3 |
| Top-k | 검색 결과 상위 K개만 채택. 기본은 top_k=4 | LLM context 한도와 relevance의 trade-off |
| ChromaDB | 임베딩과 메타데이터를 저장하는 vector database | dense retrieval의 backing store |
| Hybrid retrieval | sparse(BM25), dense, fusion, rerank의 조합 | HybridRetriever 클래스. sparse와 dense의 약점을 서로 보완 |
용어 단위로 글이 짧아도 본문 글의 흐름은 끊기지 않으니까, 다음에 페르소나 LLM 글을 쓸 때 기준으로 재사용할 생각입니다. 빠진 용어가 보이면 알려주세요.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.