feat(wiki): implement P-Reinforce v3.0 standard & integrate 26+ new knowledge artifacts
- Formalized automatic record migration protocol in System Manual. - Integrated high-density knowledge for RAG, AI, Business Strategy, and Leadership. - Enhanced graph connectivity across core strategic hubs. - Archived raw data and updated timeline records.
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-ADR-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, adaptive-rag, rag, query-routing, search-optimization]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# [[Adaptive RAG|Adaptive RAG]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "질문의 무게에 따른 맞춤형 검색: 단순한 질문은 LLM의 지식으로 처리하고, 복잡한 질문은 정밀한 검색 파이프라인을 가동하여 리소스 낭비를 줄이고 응답 품질을 최적화하는 동적 검색 아키텍처."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
적응형 RAG(Adaptive RAG)는 사용자의 쿼리 복잡도를 사전에 분석하여 가장 적합한 검색 전략을 동적으로 선택하는 고도화된 RAG 프레임워크입니다.
|
||||
|
||||
1. **동적 쿼리 라우팅 (Dynamic Query Routing)**:
|
||||
* **Level 1 (단순)**: LLM이 이미 학습한 지식으로 충분히 답변 가능한 질문. 검색 없이 즉시 응답하여 지연 시간과 비용을 최소화합니다.
|
||||
* **Level 2 (중간)**: 단일 문서나 제한된 출처 확인이 필요한 질문. 표준 [[Retrieval-Augmented Generation (RAG)|RAG]] 프로세스를 가동합니다.
|
||||
* **Level 3 (복잡)**: 여러 문서 간의 교차 검증이나 추론이 필요한 다중 홉([[Multi-hop Reasoning|Multi-hop]]) 질문. [[Agentic RAG|Agentic RAG]]나 [[GraphRAG|GraphRAG]]를 가동하여 심층 리서치를 수행합니다.
|
||||
|
||||
2. **핵심 메커니즘**:
|
||||
* **쿼리 분류기 (Query Classifier)**: 질문의 의도, 구체성, 최신성 필요 여부 등을 판단합니다.
|
||||
* **검색 전략 최적화**: 매번 같은 방식으로 검색하는 것이 아니라, 필요에 따라 키워드, 벡터, 또는 웹 검색을 조합합니다.
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **분류 오류의 리스크**: 쿼리 분류기가 질문의 복잡도를 과소평가하면 검색 없이 잘못된 답변(환각)을 내놓을 수 있고, 과대평가하면 불필요한 검색 비용과 시간이 발생합니다.
|
||||
* **시스템 복잡성**: 여러 갈래의 검색 파이프라인을 유지 관리해야 하므로 전체 아키텍처의 복잡도가 증가합니다.
|
||||
|
||||
## 💻 실전 구현 코드 (Boilerplate)
|
||||
쿼리 복잡도에 따라 검색 여부를 결정하는 라우터의 개념적 예시입니다.
|
||||
|
||||
```python
|
||||
def adaptive_rag_router(query):
|
||||
# 1. 쿼리 복잡도 분석 (간단한 예시: 길이 및 특정 키워드 기반)
|
||||
complexity_score = analyze_complexity(query)
|
||||
|
||||
if complexity_score < 0.3:
|
||||
# LLM 직접 응답
|
||||
return llm.generate(f"지식 기반 답변: {query}")
|
||||
|
||||
elif complexity_score < 0.7:
|
||||
# 표준 RAG 가동
|
||||
context = vector_db.search(query)
|
||||
return llm.generate_with_context(query, context)
|
||||
|
||||
else:
|
||||
# 에이전틱 리서치 모드 가동
|
||||
return agent_engine.run_mission(query)
|
||||
|
||||
def analyze_complexity(query):
|
||||
# 실제로는 소형 모델이나 프롬프트를 통해 판단
|
||||
if "비교해줘" in query or "분석해줘" in query:
|
||||
return 0.9
|
||||
return 0.2
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
* **기반 기술**: [[Retrieval-Augmented Generation (RAG)|RAG]], [[Semantic Search|Semantic Search]]
|
||||
* **고도화 모델**: [[Agentic RAG|Agentic RAG]], [[GraphRAG|GraphRAG]]
|
||||
* **평가 지표**: [[Cost per Query|쿼리당 비용]], [[Latency|지연 시간]]
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
@@ -1,38 +1,74 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-ARAG-001
|
||||
category: Unified
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-AGR-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, agentic-rag, autonomous-agent, multi-step-retrieval, reasoning-loop]
|
||||
tags: [auto-reinforced, agentic-rag, self-rag, multi-hop-reasoning, autonomous-agent, rag]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# [[Agentic RAG|Agentic RAG]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "생각하는 검색: 단순히 질문에 답하는 것을 넘어, 에이전트가 스스로 쿼리를 분해하고, 검색 결과가 충분한지 판단하며, 필요하다면 다시 검색하거나 도구를 사용하는 자율적인 지식 탐구 루프."
|
||||
> "스스로 생각하고 검색하는 자율형 AI: 고정된 파이프라인을 따르지 않고, AI 에이전트가 문제 해결을 위해 스스로 검색 전략을 수립하고, 결과를 비판적으로 분석하며, 필요시 추가 정보를 능동적으로 수집하는 지능형 검색 체계."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
Agentic RAG는 전통적인 일회성 RAG 파이프라인에 에이전트의 추론(Reasoning) 능력을 결합한 고도화된 아키텍처입니다.
|
||||
에이전틱 RAG(Agentic RAG)는 AI 에이전트가 도구(Tool)를 활용하여 지식 수집 및 생성 과정을 자율적으로 제어하는 고급 RAG 아키텍처입니다.
|
||||
|
||||
1. **핵심 차이점**:
|
||||
* **Naive RAG**: 질문 $\rightarrow$ 검색 $\rightarrow$ 답변 (선형적).
|
||||
* **Agentic RAG**: 질문 $\rightarrow$ 전략 수립 $\rightarrow$ 검색 $\rightarrow$ 평가 $\rightarrow$ (부족하면) 재전략/재검색 $\rightarrow$ 최종 답변 (순환적).
|
||||
2. **주요 메커니즘**:
|
||||
* **Query Decomposition**: 복잡한 질문을 여러 개의 하위 질문으로 나누어 각각 검색합니다.
|
||||
* **Self-Correction**: 검색된 결과가 질문과 관련이 없거나 상충될 경우, 에이전트가 이를 감지하고 검색어(Query)를 수정하여 다시 시도합니다.
|
||||
* **Tool Use**: 벡터 DB뿐만 아니라 웹 검색, SQL 실행, 계산기 등 다양한 도구를 상황에 맞게 선택하여 활용합니다.
|
||||
3. **해결하는 문제**:
|
||||
* **[[Lost in the middle|Lost in the middle]]**: 방대한 컨텍스트를 한꺼번에 주입하는 대신, 가장 강력한 증거만 선별하여 전략적으로 배치함으로써 모델의 인지 부하를 줄입니다.
|
||||
* **Loud Failure**: 검색이 실패했을 때 모르는 것을 명확히 인지하고 사용자에게 다시 묻거나 대안을 제시할 수 있습니다.
|
||||
1. **자율적 워크플로우 (Autonomous Workflow)**:
|
||||
* **계획 수립 (Planning)**: 질문을 분석하여 어떤 정보를 어디서 검색할지 결정합니다.
|
||||
* **도구 활용 (Tool Use)**: [[Vector Database|벡터 DB]], 웹 검색, API 등을 상황에 맞게 호출합니다.
|
||||
* **자기 반성 ([[Self-Reflection|Self-Reflection]])**: 검색된 정보가 충분한지, 생성된 답변에 모순이 없는지 스스로 검토(Self-Critique)합니다.
|
||||
* **반복 개선 (Iteration)**: 정보가 부족하다고 판단되면 새로운 검색 쿼리를 생성하여 과정을 반복합니다.
|
||||
|
||||
2. **핵심 기법**:
|
||||
* **[[Multi-hop Reasoning|Multi-hop Reasoning]]**: 흩어져 있는 여러 정보를 연결하여 복잡한 인과관계를 추론합니다.
|
||||
* **Corrective RAG (CRAG)**: 검색 결과의 품질을 평가하고, 부적절할 경우 대체 검색원(예: 웹)을 가동하여 오류를 수정합니다.
|
||||
* **Self-RAG**: 생성된 텍스트의 각 구절이 출처에 기반하는지 실시간으로 검증합니다.
|
||||
|
||||
3. **지식의 고도화**:
|
||||
* 단순 검색을 넘어, 정보를 비판적으로 수용하고 [[Knowledge Graph|Knowledge Graph]]와 결합하여 고밀도의 지식 아키텍처를 구축하는 데 기여합니다.
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **높은 비용 및 지연**: 여러 번의 LLM 호출과 반복적인 검색 루프를 거치므로 단발성 RAG보다 응답 속도가 느리고 비용이 많이 발생합니다.
|
||||
* **루프 탈출 문제**: 에이전트가 답을 찾지 못하고 무한 루프에 빠지거나 엉뚱한 방향으로 파고들 위험이 있어, 명확한 종료 조건과 가드레일 설계가 필수적입니다.
|
||||
* **무한 루프 리스크**: 에이전트가 명확한 결론에 도달하지 못하고 유사한 검색을 반복하는 무한 루프에 빠질 수 있습니다. (검색 예산 및 타임아웃 설정 필수)
|
||||
* **지연 시간 및 비용**: 다단계 추론과 반복적 LLM 호출로 인해 응답 속도가 느려지고 운영 비용이 크게 증가합니다.
|
||||
* **불투명한 의사결정**: 에이전트가 왜 특정 정보를 검색하기로 결정했는지 추론 과정(Chain of Thought)을 모니터링하기 위한 가시성([[Production Observability|Observability]]) 도구가 반드시 동반되어야 합니다.
|
||||
|
||||
## 💻 실전 구현 코드 (Boilerplate)
|
||||
에이전트가 스스로 검색 필요성을 판단하고 도구를 호출하는 `LangGraph` 스타일의 개념 구조입니다.
|
||||
|
||||
```python
|
||||
from langgraph.graph import StateGraph, END
|
||||
|
||||
# 1. 에이전트 상태 정의
|
||||
class AgentState:
|
||||
query: str
|
||||
context: list
|
||||
answer: str
|
||||
steps: int
|
||||
|
||||
# 2. 노드 정의: 검색이 필요한지 판단
|
||||
def judge_retrieval(state):
|
||||
if "모르겠어" in state.answer or not state.context:
|
||||
return "retrieve"
|
||||
return "finalize"
|
||||
|
||||
# 3. 노드 정의: 자가 반성 및 루프 제어
|
||||
def self_reflect(state):
|
||||
if state.steps > 3: return END
|
||||
# 답변 품질 검증 로직...
|
||||
return "improve"
|
||||
|
||||
# 4. 그래프 구성
|
||||
workflow = StateGraph(AgentState)
|
||||
workflow.add_node("retrieve", search_tool)
|
||||
workflow.add_node("generate", llm_generate)
|
||||
# ... 조건부 엣지 및 루프 설정
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
* **기반 기술**: [[Retrieval-Augmented Generation (RAG)|Retrieval-Augmented Generation (RAG)]], [[Autonomous Agents|Autonomous Agents]]
|
||||
* **연관 기술**: [[Re-ranking|Re-ranking]], [[Chain-of-Thought (CoT)|Chain-of-Thought (CoT)]], [[Model Context Protocol (MCP)|MCP]]
|
||||
* **해결 현상**: [[Lost in the middle|Lost in the middle]]
|
||||
* **기반 기술**: [[Retrieval-Augmented Generation (RAG)|Advanced RAG]], [[Self-Reflection|Self-Reflection]]
|
||||
* **핵심 아키텍처**: [[Multi-hop Reasoning|Multi-hop Reasoning]], [[Adaptive RAG|Adaptive RAG]]
|
||||
* **운영 체계**: [[Production Observability|Observability]], [[Chain of Thought|CoT (Chain of Thought)]]
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
|
||||
@@ -1,28 +1,65 @@
|
||||
---
|
||||
id: BERT-001
|
||||
category: Unified
|
||||
confidence_score: 1.0
|
||||
tags: [ai, nlp, bert, transformer, language-model, google-[[Research|Research]]]
|
||||
last_reinforced: 2026-04-26
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-BRT-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, bert, nlp, transformer, semantic-search, deep-learning]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# BERT (Bidirectional Encoder Representations from [[Transformers|Transformers]])
|
||||
# [[BERT|BERT]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "문장의 왼쪽과 오른쪽을 동시에 보며 단어의 진짜 의미를 파악하라" — 구글이 제안한 혁신적인 사전 학습 모델로, 문맥의 양방향성을 모두 고려하여 단어의 의미를 수치화함으로써 NLP 분야의 수많은 벤치마크 기록을 갱신한 모델.
|
||||
> "문맥의 양방향 이해자: 단어를 순차적으로 처리하는 대신, 문장 전체의 구조를 한꺼번에 분석하여 단어가 앞뒤 문맥에 따라 가지는 미묘한 의미 차이를 정확히 파악하는 혁신적인 언어 모델."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
- **추출된 패턴:** 문장 내의 일부 단어를 가리고(Masked LM) 원래 단어를 맞히는 과정과, 두 문장이 이어지는지(NSP) 예측하는 과정을 통해 깊이 있는 언어 이해력을 갖추는 사전 학습 패턴.
|
||||
- **핵심 특징:**
|
||||
- **Bidirectional Context:** 이전 시점의 정보만 보는 GPT와 달리, 앞뒤 문맥을 한꺼번에 고려하여 중의성 해결에 탁월함.
|
||||
- **Transformer Encoder:** 트랜스포머 아키텍처의 인코더 부분만 층층이 쌓아 올려 구성.
|
||||
- **Pre-training & [[Fine-tuning|Fine-tuning]]:** 방대한 일반 텍스트로 먼저 학습한 뒤, 특정 태스크(질의응답, 감성 분석 등)에 맞춰 살짝만 튜닝하여 고성능 확보.
|
||||
- **Contextual Embeddings:** 동일한 단어라도 주변 문맥에 따라 서로 다른 벡터 값을 가짐.
|
||||
BERT(Bidirectional Encoder Representations from Transformers)는 트랜스포머 아키텍처를 기반으로 구글에서 개발한 사전 학습(Pre-training) 모델입니다.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌:** 단방향 언어 모델의 한계를 극복하고, '이해' 중심의 NLP 태스크에서 독보적 지위를 확보. 이후 RoBERTa, ALBERT 등 다양한 변형 모델의 탄생을 이룸.
|
||||
- **정책 변화:** Antigravity 프로젝트는 문서 간의 의미적 유사성 판별 및 개체명 인식(NER) 작업에 BERT 기반의 임베딩 모델을 주력으로 사용함.
|
||||
1. **기술적 특징 (Key Features)**:
|
||||
* **양방향 문맥 분석 (Bidirectional)**: 문장 내 단어의 앞뒤 위치를 동시에 고려하여 문맥을 파악합니다. (예: '배(Ship)'와 '배(Pear)'를 주변 단어로 완벽히 구분)
|
||||
* **Transformer Encoder**: 셀프 어텐션(Self-Attention) 메커니즘을 통해 단어 간의 관계적 거리를 계산합니다.
|
||||
* **사전 학습 (Pre-training)**: 방대한 양의 텍스트로 언어의 구조를 미리 학습한 후, 특정 작업(검색, 요약 등)에 맞게 미세 조정(Fine-tuning)합니다.
|
||||
|
||||
2. **검색 시스템에서의 역할**:
|
||||
* **의미론적 검색 ([[Semantic Search|Semantic Search]])**: 단순 키워드 매칭을 넘어 사용자의 '의도'를 이해합니다.
|
||||
* **벡터 임베딩 생성**: 문서와 질의를 고차원 벡터로 변환하여 [[Vector Search|Vector Search]]의 기반을 제공합니다.
|
||||
* **롱테일 키워드 대응**: 길고 복잡한 대화형 질문에 대해 매우 정확한 관련 문서를 찾아냅니다.
|
||||
|
||||
3. **검색 패러다임의 변화**:
|
||||
* 정확히 일치하는 단어를 반복하는 구식 SEO 전략을 무력화하고, 실제 내용의 품질과 맥락적 관련성이 높은 콘텐츠를 상단에 배치하도록 유도했습니다.
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **컴퓨팅 리소스**: 기존 키워드 검색(BM25)에 비해 훨씬 높은 GPU 연산 능력과 메모리가 필요하여, 실시간 대규모 검색 시 지연 시간(Latency) 관리가 관건입니다.
|
||||
* **특수 도메인 한계**: 일반적인 텍스트로 학습되었기 때문에 의료, 법률, 제품 코드 등 특수 용어가 난무하는 도메인에서는 별도의 도메인 특화 학습이 필요합니다.
|
||||
* **Hybrid 권장**: 고유 명사나 특정 숫자 검색에는 여전히 키워드 매칭이 유리하므로, BERT 기반 검색과 [[Keyword Search|Keyword Search]]를 결합한 [[Hybrid Search|Hybrid Search]]가 실무 표준으로 사용됩니다.
|
||||
|
||||
## 💻 실전 구현 코드 (Boilerplate)
|
||||
`Hugging Face Transformers` 라이브러리를 사용하여 BERT 임베딩을 추출하는 핵심 예시입니다.
|
||||
|
||||
```python
|
||||
from transformers import AutoTokenizer, AutoModel
|
||||
import torch
|
||||
|
||||
# 1. 모델 및 토크나이저 로드 (다국어 BERT 추천)
|
||||
tokenizer = AutoTokenizer.from_pretrained("bert-base-multilingual-cased")
|
||||
model = AutoModel.from_pretrained("bert-base-multilingual-cased")
|
||||
|
||||
# 2. 텍스트 준비 및 인코딩
|
||||
text = "Astra 프로젝트의 P-Reinforce 표준은 지식의 구조화를 돕습니다."
|
||||
inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True)
|
||||
|
||||
# 3. 모델 추론 (임베딩 추출)
|
||||
with torch.no_grad():
|
||||
outputs = model(**inputs)
|
||||
|
||||
# 4. 문장 벡터(CLS 토큰 사용) 추출
|
||||
sentence_embedding = outputs.last_hidden_state[:, 0, :]
|
||||
print(f"Embedding Shape: {sentence_embedding.shape}")
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- [[Transformer-Architecture|Transformer-Architecture]], NLP, Attention-Mechanisms, Transfer-Learning-Foundations
|
||||
- **Raw Source:** 10_Wiki/Topics/AI/BERT.md
|
||||
* **기반 아키텍처**: [[Transformer|Transformer]], [[Deep Learning|Deep Learning]]
|
||||
* **활용 분야**: [[Semantic Search|Semantic Search]], [[Vector Embedding|Vector Embedding]]
|
||||
* **관련 모델**: [[RoBERTa|RoBERTa]], [[ALICE|ALICE]], [[GPT|GPT]] (Generative comparison)
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-COG-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, metacognition, cognitive-bias, heuristics, behavioral-science, self-efficacy, cbt]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# [[Cognitive Psychology & Behavioral Science|Cognitive Psychology & Behavioral Science]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "인간 지능의 하드웨어와 소프트웨어 이해: 인간이 정보를 처리하고, 판단을 내리며, 행동을 결정하는 내적 메커니즘을 파악하여, 인지적 한계(편향, 휴리스틱)를 극복하고 능동적 변화와 선제적 행동을 이끌어내는 인공지능 및 심리학적 프레임워크."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
|
||||
인간의 사고와 행동은 복잡한 인지적 프로세스와 신념 체계의 상호작용으로 이루어집니다.
|
||||
|
||||
### 1. 인지적 상위 제어: [[Metacognition|Metacognition (메타인지)]]
|
||||
* **자신의 사고에 대한 사고**: 자신이 무엇을 알고 무엇을 모르는지 파악하는 능력입니다.
|
||||
* **모니터링 및 조절**: 학습이나 문제 해결 과정에서 자신의 인지 상태를 실시간으로 점검하고, 필요에 따라 전략을 수정하여 최적의 결과를 도출합니다.
|
||||
|
||||
### 2. 판단과 의사결정의 지름길: [[Heuristics|Heuristics]] & [[Cognitive Bias|Cognitive Bias]]
|
||||
* **휴리스틱**: 복잡한 문제를 해결하기 위해 사용하는 직관적인 지름길입니다. 속도는 빠르지만 논리적 오류의 가능성이 있습니다.
|
||||
* **인지적 편향**: 휴리스틱의 오용으로 발생하는 체계적인 사고의 오류입니다.
|
||||
* **확증 편향**: 자신의 신념과 일치하는 정보만 선택적으로 수용.
|
||||
* **가용성 편향**: 최근에 보았거나 강렬한 기억에 의존하여 판단.
|
||||
|
||||
### 3. 행동 변화 모델: [[Theory of Planned Behavior|TPB (계획된 행동 이론)]] & [[Self-efficacy|Self-efficacy]]
|
||||
* **계획된 행동 이론**: 인간의 행동 의도는 태도, 주관적 규범, **인지된 행동 제어감**에 의해 결정됩니다.
|
||||
* **자기효능감 (반두라)**: 특정 과제를 성공적으로 수행할 수 있다는 스스로에 대한 믿음으로, 행동의 동기와 지속성을 결정하는 핵심 요인입니다.
|
||||
|
||||
### 4. 인지행동 및 정서 조절 모델 (CBT & Emotion Regulation)
|
||||
* **사고-감정-행동의 연결**: 사건(A) 자체보다 이를 해석하는 신념(B)이 결과적인 감정과 행동(C)을 결정합니다.
|
||||
* **[[Cognitive Restructuring|Cognitive Restructuring (인지재구조화)]]**: 자동적으로 발생하는 **인지적 왜곡(Cognitive Distortion)**을 식별하고, 이를 합리적이고 기능적인 사고로 전환하는 개입 기법입니다.
|
||||
* **정서 조절 (Emotion Regulation)**: 복잡한 문제 상황에서 발생하는 스트레스와 불안을 관리하고 조절하는 능력으로, 냉철한 비판적 사고를 유지하기 위한 정서적 기초가 됩니다.
|
||||
* **관점 수용 (Perspective-taking)**: 타인의 관점에서 상황을 바라봄으로써 자신의 인지적 편향을 완화하고 집단지성을 촉진하는 고등 인지 기술입니다.
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **직관 vs 분석**: 휴리스틱은 긴박한 상황에서 생존과 효율을 보장하지만, 정밀한 분석이 필요한 비즈니스 리스크 관리에서는 치명적인 오류를 낳을 수 있습니다.
|
||||
* **인지적 융통성의 한계**: 인지행동 모델은 변화 의지가 있는 대상에게 효과적이나, 사고의 경직성이 극심하거나 인지 장애가 있는 경우 적용에 제약이 있습니다.
|
||||
* **강화와 처벌의 위험**: 행동주의적 접근(스키너)은 외적 통제에만 의존하게 만들어, 인간의 내적 동기나 가치 체계를 간과할 위험이 있습니다.
|
||||
|
||||
## 💻 실전 구현 코드 (Boilerplate)
|
||||
인지적 편향(가용성 편향)을 방지하기 위해 데이터를 무작위 추출하여 객관적으로 분석하는 파이썬 스크립트 예시입니다.
|
||||
|
||||
```python
|
||||
import random
|
||||
|
||||
class ObjectiveAnalyzer:
|
||||
def __init__(self, raw_data):
|
||||
self.data = raw_data
|
||||
|
||||
def sample_check(self, sample_size=5):
|
||||
"""
|
||||
가용성 편향 방지를 위해 무작위 샘플링을 통한 객관적 검증 실행
|
||||
"""
|
||||
if len(self.data) < sample_size:
|
||||
return self.data
|
||||
return random.sample(self.data, sample_size)
|
||||
|
||||
# 실전 적용: 최근 기억에만 의존하지 않고 전체 로그 중 무작위 샘플 분석
|
||||
logs = ["Success", "Success", "Failure", "Success", "Warning", "Failure", "Success"]
|
||||
analyzer = ObjectiveAnalyzer(logs)
|
||||
print(f"Random Samples for Objective Review: {analyzer.sample_check()}")
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
* **상위 개념**: [[AI_and_ML|AI_and_ML]], [[Psychology|Psychology]]
|
||||
* **핵심 모델**: [[CBT|CBT]], [[Social Cognitive Theory|Social Cognitive Theory]]
|
||||
* **연결 기법**: [[Critical Thinking|Critical Thinking]], [[Decision-Making|Decision-Making]]
|
||||
* **조직 적용**: [[Psychological Safety|Psychological Safety]], [[Growth Mindset|Growth Mindset]]
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
@@ -0,0 +1,72 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-DTX-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, decision-tree, xgboost, gradient-boosting, learning-to-rank, machine-learning]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# [[Decision Tree & XGBoost|Decision Tree & XGBoost]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "데이터의 의사결정 지도: 복잡한 조건들을 예/아니오의 트리 구조로 분해하여 결과를 예측하거나 순위를 매기며, 특히 수많은 약한 모델을 결합하는 부스팅(Boosting) 기법을 통해 현대 검색 시스템의 랭킹 성능을 극대화하는 알고리즘."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
의사결정 트리와 이를 고도화한 XGBoost는 정형 데이터(Structured Data) 분석 및 순위 학습(Learning to Rank) 분야에서 가장 강력한 성능을 발휘하는 기계 학습 모델입니다.
|
||||
|
||||
1. **의사결정 트리 (Decision Tree)**:
|
||||
* **원리**: 데이터의 특정 특징(Feature)을 기준으로 가지를 치며 정답을 찾아가는 구조입니다.
|
||||
* **장점**: 모델의 판단 근거를 시각적으로 확인하기 쉽고 직관적입니다.
|
||||
* **한계**: 데이터가 조금만 바뀌어도 트리가 크게 변하는 불안정성(Overfitting)이 존재합니다.
|
||||
|
||||
2. **XGBoost (Extreme Gradient Boosting)**:
|
||||
* **원리**: 여러 개의 얕은 의사결정 트리를 순차적으로 생성하되, 이전 트리의 오차를 보완하는 방식으로 학습하는 앙상블(Ensemble) 기법입니다.
|
||||
* **특징**: 병렬 처리를 통해 학습 속도가 매우 빠르고, 과적합 방지를 위한 정규화 기능을 내장하고 있습니다.
|
||||
|
||||
3. **검색 시스템에서의 활용 (LTR)**:
|
||||
* **[[LambdaMART|LambdaMART]]**: 의사결정 트리와 부스팅 기법을 결합하여 검색 결과의 순위를 최적화하는 표준 알고리즘이며, XGBoost가 이를 구현하는 대표적 라이브러리입니다.
|
||||
* 사용자의 과거 클릭 패턴, 문서의 신선도, 텍스트 유사도 등 수십 가지 특징을 종합하여 최적의 검색 순위를 결정합니다.
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **컴퓨팅 리소스**: 특징(Feature)의 수가 늘어날수록 트리 깊이가 깊어지고 훈련 시간이 기하급수적으로 증가합니다. (단계적 특징 도입이 권장됩니다.)
|
||||
* **외부 추론 구조**: Elasticsearch와 같은 검색 엔진은 트리 기반 모델의 추론(Inference)은 지원하지만, 모델을 훈련하는 과정은 반드시 별도의 컴퓨팅 환경에서 수행되어야 하는 아키텍처적 제약이 있습니다.
|
||||
* **데이터 의존성**: 학습 데이터(Judgment List)의 품질이 낮으면 모델이 편향된 순위를 내놓게 됩니다.
|
||||
|
||||
## 💻 실전 구현 코드 (Boilerplate)
|
||||
`XGBoost`를 사용한 회귀 예측(또는 랭킹을 위한 점수 산출)의 기초 예시입니다.
|
||||
|
||||
```python
|
||||
import xgboost as xgb
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.metrics import mean_squared_error
|
||||
import pandas as pd
|
||||
|
||||
# 1. 데이터 준비 (특징: 문서 유사도, 클릭수, 신선도 / 타깃: 관련성 점수)
|
||||
data = {
|
||||
'sim_score': [0.9, 0.5, 0.8, 0.2],
|
||||
'clicks': [100, 20, 80, 5],
|
||||
'freshness': [0.95, 0.3, 0.88, 0.1],
|
||||
'relevance': [4, 1, 3, 0] # Ground Truth
|
||||
}
|
||||
df = pd.DataFrame(data)
|
||||
X = df.drop('relevance', axis=1)
|
||||
y = df['relevance']
|
||||
|
||||
# 2. 모델 생성 및 학습
|
||||
model = xgb.XGBRegressor(objective='reg:squarederror', n_estimators=50)
|
||||
model.fit(X, y)
|
||||
|
||||
# 3. 새로운 결과에 대한 점수 예측
|
||||
new_docs = pd.DataFrame({'sim_score': [0.85], 'clicks': [50], 'freshness': [0.9]})
|
||||
predicted_relevance = model.predict(new_docs)
|
||||
|
||||
print(f"Predicted Relevance Score: {predicted_relevance[0]:.4f}")
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
* **상위 개념**: [[Machine Learning (Machine Learning)|Machine Learning]], [[Learning to Rank (LTR)|Learning to Rank]]
|
||||
* **핵심 알고리즘**: [[LambdaMART|LambdaMART]], [[Random Forest|Random Forest]] (Bagging vs Boosting)
|
||||
* **평가 체계**: [[nDCG|nDCG]], [[MAP|MAP]]
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
@@ -0,0 +1,67 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-FEG-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, feature-engineering, feature-extraction, data-processing, ml-pipeline]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# [[Feature Engineering|Feature Engineering]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "데이터의 재구성: 원본 데이터에서 머신러닝 알고리즘이 패턴을 더 잘 파합할 수 있도록 유용한 특징(Feature)을 선택, 변형, 생성하여 모델의 성능을 극대화하는 과정."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
특징 공학(Feature Engineering)은 원시 데이터(Raw Data)를 머신러닝 모델에 적합한 형태의 입력 변수로 변환하는 작업으로, 모델의 정확도에 결정적인 영향을 미칩니다.
|
||||
|
||||
1. **주요 프로세스**:
|
||||
* **[[Feature Extraction|Feature Extraction (특징 추출)]]**: 고차원의 원본 데이터에서 가장 중요한 정보를 보존하면서 차원을 축소하거나 새로운 속성을 만들어냅니다. (예: 텍스트에서 [[Vector Embedding|임베딩]] 추출)
|
||||
* **Feature Selection (특징 선택)**: 수많은 특징 중 모델 성능에 기여도가 높은 유의미한 변수만을 골라냅니다.
|
||||
* **Feature Transformation (특징 변환)**: 데이터의 스케일을 조정하거나 분포를 정규화합니다.
|
||||
|
||||
2. **데이터 인코딩 기법**:
|
||||
* **[[One-hot Encoding|One-hot Encoding (원-핫 인코딩)]]**: 범주형 데이터를 0과 1로 구성된 벡터로 변환합니다. 각 카테고리가 독립적일 때 유용하지만 차원이 급격히 늘어나는 단점이 있습니다.
|
||||
* **Label Encoding**: 범주형 데이터를 단순 숫자로 변환합니다.
|
||||
|
||||
3. **검색 시스템에서의 활용**:
|
||||
* 사용자 행동 데이터(클릭률, 체류 시간)를 특징으로 변환하여 [[Learning to Rank (LTR)|LTR]] 모델의 입력값으로 사용합니다.
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **데이터 오염의 위험**: 오류가 있는 데이터 파이프라인에서 추출된 특징은 실제를 잘못 대변하며, 이는 모델 전체의 신뢰도를 무너뜨립니다.
|
||||
* **차원의 저주**: 너무 많은 특징을 추가하면 연산 비용이 급증하고 모델이 복잡해져 성능이 저하될 수 있습니다. (단계적 확장이 권장됩니다.)
|
||||
* **도메인 지식 의존성**: 효과적인 특징을 설계하기 위해서는 해당 데이터의 비즈니스적 맥락(도메인 지식)이 깊게 요구됩니다.
|
||||
|
||||
## 💻 실전 구현 코드 (Boilerplate)
|
||||
`Pandas`와 `Scikit-learn`을 활용한 기본적인 원-핫 인코딩 및 스케일링 예시입니다.
|
||||
|
||||
```python
|
||||
import pandas as pd
|
||||
from sklearn.preprocessing import OneHotEncoder, StandardScaler
|
||||
|
||||
# 1. 샘플 데이터 (범주형 '도시', 수치형 '인구')
|
||||
df = pd.DataFrame({
|
||||
'city': ['Seoul', 'Busan', 'Incheon', 'Seoul'],
|
||||
'population': [9400, 3300, 2900, 9500]
|
||||
})
|
||||
|
||||
# 2. 원-핫 인코딩 적용
|
||||
encoder = OneHotEncoder(sparse_output=False)
|
||||
city_encoded = encoder.fit_transform(df[['city']])
|
||||
city_df = pd.DataFrame(city_encoded, columns=encoder.get_feature_names_out(['city']))
|
||||
|
||||
# 3. 수치 데이터 스케일링 (표준화)
|
||||
scaler = StandardScaler()
|
||||
df['pop_scaled'] = scaler.fit_transform(df[['population']])
|
||||
|
||||
# 4. 결합된 특징 데이터프레임
|
||||
final_features = pd.concat([city_df, df['pop_scaled']], axis=1)
|
||||
print(final_features)
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
* **관련 개념**: [[Machine Learning (Machine Learning)|Machine Learning]], [[Natural Language Processing (NLP)|NLP]]
|
||||
* **기술적 도구**: [[One-hot Encoding|One-hot Encoding]], [[Vector Embedding|Vector Embedding]]
|
||||
* **연결 알고리즘**: [[Learning to Rank (LTR)|Learning to Rank]]
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
@@ -0,0 +1,75 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-FRG-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, federated-rag, privacy-preserving, data-governance, rag, distributed-search]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# [[Federated RAG|Federated RAG]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "데이터 주권을 지키는 협력적 검색: 민감한 원본 데이터를 한곳에 모으지 않고, 파편화된 각 로컬 저장소에서 독립적으로 검색을 수행한 뒤 결과값만 안전하게 통합하여 전체적인 지식을 구성하는 프라이버시 보호형 RAG."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
페더레이티드 RAG(Federated RAG)는 데이터 거버넌스와 프라이버시가 중요한 엔터프라이즈 환경에서 데이터를 중앙 집중화하지 않고도 고품질의 지식 증강 서비스를 제공하는 아키텍처입니다.
|
||||
|
||||
1. **동작 원리 (Federated Workflow)**:
|
||||
* **분산 검색 (Distributed Retrieval)**: 질문을 각기 다른 보안 구역이나 클라우드에 흩어진 로컬 데이터베이스들로 전달합니다.
|
||||
* **로컬 처리**: 각 데이터베이스는 자신의 구역 내에서 관련 정보를 찾고, 필요한 경우 로컬에서 1차 요약을 수행합니다.
|
||||
* **결과 통합 (Aggregation)**: 중앙의 오케스트레이터가 각 로컬에서 전달된 안전한 결과값들(원본 데이터가 아닌 요약이나 익명화된 정보 등)을 수집하여 최종 응답을 생성합니다.
|
||||
|
||||
2. **보안 기술의 결합**:
|
||||
* [[Privacy-preserving computation|프라이버시 보존 연산]]: 데이터를 노출하지 않고 유사도를 계산합니다.
|
||||
* [[Federated Learning|Federated Learning]]: 데이터를 전송하지 않고 각 로컬의 데이터를 기반으로 모델의 성능을 개선합니다.
|
||||
|
||||
3. **필요성 (Why Federated?)**:
|
||||
* **규제 준수**: 금융, 의료 등 데이터의 외부 반출이 법적으로 엄격히 제한되는 산업군에 필수적입니다.
|
||||
* **데이터 주권**: 조직 내 각 부서가 자신의 데이터 제어권을 유지하면서도 전사적인 지식 혜택을 누릴 수 있습니다.
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **성능 하락**: 모든 데이터를 한곳에 모아 최적화된 인덱스를 사용할 때보다 검색 정밀도나 응답 속도가 떨어질 수 있습니다.
|
||||
* **아키텍처 복잡성**: 여러 분산 노드의 가동 상태를 관리하고 결과를 조율하는 오케스트레이션 계층의 구축 난이도가 매우 높습니다.
|
||||
* **통신 비용**: 질문과 결과를 주고받는 과정에서 네트워크 지연 시간과 비용이 발생할 수 있습니다.
|
||||
|
||||
## 💻 실전 구현 코드 (Boilerplate)
|
||||
여러 분산 저장소에 질문을 동시 배포하고 결과를 통합하는 오케스트레이터의 개념적 예시입니다.
|
||||
|
||||
```python
|
||||
import asyncio
|
||||
|
||||
async def federated_search(query, nodes):
|
||||
"""
|
||||
여러 로컬 노드에 비동기로 검색 요청을 보냄
|
||||
"""
|
||||
tasks = [node.retrieve(query) for node in nodes]
|
||||
results = await asyncio.gather(*tasks)
|
||||
|
||||
# 각 노드로부터 수집된 결과를 통합(Fusion)
|
||||
final_context = merge_and_rerank(results)
|
||||
return final_context
|
||||
|
||||
class LocalNode:
|
||||
def __init__(self, node_id, local_db):
|
||||
self.node_id = node_id
|
||||
self.db = local_db
|
||||
|
||||
async def retrieve(self, query):
|
||||
# 1. 로컬에서 검색 수행
|
||||
docs = self.db.similarity_search(query)
|
||||
# 2. 보안을 위해 요약된 결과만 반환
|
||||
summary = summarize_locally(docs)
|
||||
return {"node": self.node_id, "content": summary}
|
||||
|
||||
# 통합 엔진 가동
|
||||
# nodes = [NodeA, NodeB, NodeC]
|
||||
# context = await federated_search("환자의 최근 진료 이력을 분석해줘", nodes)
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
* **기반 기술**: [[Retrieval-Augmented Generation (RAG)|RAG]], [[Data Governance|Data Governance]]
|
||||
* **보안 기술**: [[Federated Learning|Federated Learning]], [[Privacy-preserving computation|Privacy-preserving computation]]
|
||||
* **관련 아키텍처**: [[Zero-Trust Architecture|Zero-Trust Architecture]], [[Hybrid Search|Hybrid Search]]
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
@@ -1,37 +1,65 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-GRAG-001
|
||||
category: Unified
|
||||
confidence_score: 0.95
|
||||
tags: [auto-reinforced, graphrag, knowledge-graph, relational-reasoning, structured-knowledge]
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-GRG-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, graph-rag, knowledge-graph, rag, semantic-relationship, complex-reasoning]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# [[GraphRAG|GraphRAG]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "관계의 그물망: 파편화된 문서 조각(Chunk)을 넘어, 정보 간의 논리적 연결 고리를 노드와 엣지로 구조화함으로써 복잡한 인과 관계와 전체 맥락을 꿰뚫는 고차원적 검색 증강 기술."
|
||||
> "정보의 지도를 그리는 검색: 문서를 단순한 텍스트 덩어리가 아닌 엔티티(Entity)와 관계(Relationship)의 네트워크로 재구성하여, 여러 문서에 걸쳐 있는 복잡한 맥락과 주제 단위의 질문에 완벽하게 답변하는 지식 그래프 기반 RAG."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
GraphRAG는 정보를 노드(Node)와 엣지(Edge) 형태의 지식 그래프(Knowledge Graph)로 구성하여 검색 성능을 높이는 RAG의 진화된 형태입니다.
|
||||
GraphRAG는 지식 그래프(Knowledge Graph)의 구조적 이점과 LLM의 생성 능력을 결합하여 평면적인 벡터 검색의 한계를 극복하는 차세대 RAG 아키텍처입니다.
|
||||
|
||||
1. **핵심 차이점**:
|
||||
* **전통적 RAG**: 텍스트를 단순한 조각(Chunk)으로 나누어 벡터 공간에 배치 $\rightarrow$ 정보 간의 맥락적 연결이 끊어질 위험이 큼.
|
||||
* **GraphRAG**: 엔티티(Entity) 간의 관계를 명시적으로 정의 $\rightarrow$ "A가 B의 원인이다"와 같은 구조적 지식을 보존.
|
||||
2. **주요 이점**:
|
||||
* **관계적 추론 (Relational Reasoning)**: 단순 키워드 매칭으로는 찾기 힘든 데이터 간의 잠재적 연관성을 효과적으로 탐색합니다.
|
||||
* **전체론적 요약**: 특정 조각이 아닌 전체 그래프를 탐색하여 문서 집합 전체에 대한 고수준의 통찰을 제공할 수 있습니다.
|
||||
* **IBM의 평가**: 기존 RAG가 가진 관계적 추론의 한계를 극복하는 가장 효과적인 대안 중 하나로 꼽힙니다.
|
||||
3. **작동 원리**:
|
||||
* LLM을 사용하여 비정형 텍스트에서 엔티티와 관계를 추출하고 그래프 DB(예: Neo4j)를 구축합니다.
|
||||
* 질문이 들어오면 그래프 탐색(Graph Traversal)을 통해 관련 노드와 엣지를 수집하여 답변 생성에 활용합니다.
|
||||
1. **동작 원리 (Mechanism)**:
|
||||
* **그래프 추출 (Graph Extraction)**: LLM을 사용하여 텍스트 데이터에서 인물, 장소, 개념 등의 엔티티와 그들 사이의 관계를 추출합니다.
|
||||
* **커뮤니티 요약 (Community Summarization)**: 거대한 그래프를 밀접하게 연결된 그룹(Community)으로 나누고, 각 그룹에 대한 요약을 미리 생성해둡니다.
|
||||
* **전역 및 국소 검색**: 전체 지식의 개요를 묻는 질문(Global Query)에는 커뮤니티 요약을 활용하고, 특정 엔티티에 대한 질문(Local Query)에는 그래프 노드를 탐색합니다.
|
||||
|
||||
2. **왜 GraphRAG인가?**:
|
||||
* **다단계 추론 ([[Multi-hop Reasoning|Multi-hop]])**: 문서 A와 문서 C 사이의 연결 고리를 그래프 상에서 직접 추적할 수 있습니다.
|
||||
* **주제적 통찰**: "이 전체 문서들의 핵심 주제가 뭐야?"와 같은 포괄적인 질문에 대해 벡터 검색보다 훨씬 우수한 답변을 제공합니다.
|
||||
|
||||
3. **지식의 밀도**:
|
||||
* 파편화된 정보를 연결된 지식 체계로 승격시켜, 정보의 누락 없는 고밀도 컨텍스트를 LLM에 제공합니다.
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **높은 전처리 비용**: 텍스트에서 그래프를 추출하고 구축하는 과정에서 LLM 토큰 비용과 시간이 Naive RAG보다 월등히 많이 소요됩니다.
|
||||
* **그래프 유지보수**: 새로운 데이터가 추가될 때 기존 그래프와의 무결성을 유지하며 업데이트하는 과정이 복잡합니다.
|
||||
* **고비용 전처리**: 지식 그래프를 구축하고 커뮤니티 요약을 생성하는 과정에서 일반 RAG 대비 3~5배 이상의 LLM 토큰 비용이 발생합니다.
|
||||
* **구축 지연 시간**: 방대한 양의 문서를 그래프로 인덱싱하는 데 상당한 시간이 소요됩니다.
|
||||
* **추출 노이즈**: 엔티티 인식 및 관계 정의 과정에서 AI가 잘못된 연결을 생성할 수 있으므로, 그래프 정제 로직이 필요합니다.
|
||||
|
||||
## 💻 실전 구현 코드 (Boilerplate)
|
||||
`Microsoft GraphRAG` 라이브러리의 개념적 인덱싱 워크플로우 예시입니다.
|
||||
|
||||
```python
|
||||
# GraphRAG 프로젝트 설정 및 인덱싱 (CLI 예시)
|
||||
# 1. 초기화
|
||||
# graphrag init --root ./my_knowledge_garden
|
||||
|
||||
# 2. 인덱싱 실행 (텍스트 -> 엔티티 추출 -> 그래프 구축)
|
||||
# graphrag index --root ./my_knowledge_garden
|
||||
|
||||
# 3. 질의 실행 (Global/Local 쿼리 모드 선택 가능)
|
||||
from graphrag.query.context_builder import GlobalContextBuilder
|
||||
from graphrag.query.engine import GlobalSearch
|
||||
|
||||
# 개념적 파이썬 API 호출 예시
|
||||
query_engine = GlobalSearch(
|
||||
context_builder=GlobalContextBuilder(graph_storage, community_reports),
|
||||
llm=ChatOpenAI(model="gpt-4-turbo")
|
||||
)
|
||||
|
||||
response = query_engine.search("이 지식 기지의 주요 아키텍처적 특징들을 요약해줘.")
|
||||
print(response.answer)
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
* **상위 개념**: [[Retrieval-Augmented Generation (RAG)|Retrieval-Augmented Generation (RAG)]], [[Knowledge Graph|Knowledge Graph]]
|
||||
* **연관 기술**: [[Entity Extraction|Entity Extraction]], [[Vector Database|Vector Database]], [[Reasoning Chains|Reasoning Chains]]
|
||||
* **기반 기술**: [[Knowledge Graph|Knowledge Graph]], [[Retrieval-Augmented Generation (RAG)|RAG]]
|
||||
* **고도화 기법**: [[Multi-hop Reasoning|Multi-hop Reasoning]], [[Entity Relationship Mapping|ER Mapping]]
|
||||
* **비교 개념**: [[Vector Search|Vector Search (Baseline)]], [[Adaptive RAG|Adaptive RAG]]
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-HBS-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, hybrid-search, bm25, vector-search, rag, search-optimization]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# [[Hybrid Search|Hybrid Search]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "검색의 양손잡이 전략: 키워드 기반의 정확성([[Keyword Search|Keyword Search]])과 문맥 기반의 유연성([[Semantic Search|Semantic Search]])을 결합하여, 어떤 형태의 질문에도 최적의 정답을 찾아내는 하이브리드 검색 아키텍처."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
하이브리드 검색은 전통적인 키워드 기반 검색과 현대적인 벡터 기반 의미론적 검색을 통합하여 상호보완적으로 활용하는 기술입니다.
|
||||
|
||||
1. **구성 요소 (The Duo)**:
|
||||
* **[[Keyword Search|Keyword Search]] (BM25)**: 문서 내 단어의 빈도와 희소성을 계산합니다. 특정 용어, 모델명, 고유 명사 검색에 매우 정확합니다.
|
||||
* **[[Semantic Search|Semantic Search]] (Vector)**: 텍스트의 의미를 고차원 공간에 매핑합니다. 동의어, 문맥, 질문의 의도를 파악하는 데 탁월합니다.
|
||||
|
||||
2. **결합 방식 (Fusion Logic)**:
|
||||
두 방식에서 도출된 결과를 하나로 통합하기 위해 순위를 재조정하는 과정이 필요합니다.
|
||||
* **Reciprocal Rank Fusion (RRF)**: 각 방식의 순위(Rank)만을 사용하여 가중치를 매기고 통합합니다. 점수 체계가 달라도 효과적으로 결합할 수 있어 가장 널리 쓰입니다.
|
||||
* **Weighted Scoring**: 키워드 점수와 벡터 점수에 임의의 가중치(예: Keyword 0.3, Vector 0.7)를 곱하여 합산합니다.
|
||||
|
||||
3. **왜 하이브리드인가?**:
|
||||
* 벡터 검색은 'iPhone 15 Pro'와 같은 특정 제품명을 찾을 때 '스마트폰' 관련 문서를 가져오는 등 지나치게 일반화될 위험이 있습니다.
|
||||
* 키워드 검색은 '지식 관리 방법'을 물을 때 'PKM'이나 'Second Brain' 같은 유의어가 포함된 핵심 문서를 놓칠 수 있습니다.
|
||||
* 하이브리드는 이 두 사각지대를 모두 보완합니다.
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **시스템 복잡도**: 두 종류의 인덱스(Inverted Index & Vector Index)를 유지하고 관리해야 하므로 운영 리소스가 증가합니다.
|
||||
* **Fusion 파라미터 튜닝**: 도메인 특성에 따라 키워드와 벡터 중 어느 쪽에 더 무게를 둘지 결정하는 튜닝 과정이 필요합니다.
|
||||
* **오버헤드**: 두 번의 검색 과정을 거쳐야 하므로 Naive RAG 대비 응답 속도가 소폭 느려질 수 있습니다.
|
||||
|
||||
## 💻 실전 구현 코드 (Boilerplate)
|
||||
Python 환경에서 `RRF(Reciprocal Rank Fusion)`를 구현하는 핵심 개념 로직입니다.
|
||||
|
||||
```python
|
||||
def reciprocal_rank_fusion(keyword_results, vector_results, k=60):
|
||||
"""
|
||||
keyword_results, vector_results: [(id, rank), ...] 형태의 리스트
|
||||
"""
|
||||
scores = {}
|
||||
|
||||
# 1. 키워드 결과 점수 합산
|
||||
for doc_id, rank in keyword_results:
|
||||
scores[doc_id] = scores.get(doc_id, 0) + 1 / (k + rank)
|
||||
|
||||
# 2. 벡터 결과 점수 합산
|
||||
for doc_id, rank in vector_results:
|
||||
scores[doc_id] = scores.get(doc_id, 0) + 1 / (k + rank)
|
||||
|
||||
# 3. 점수 높은 순으로 정렬하여 최종 순위 도출
|
||||
final_rank = sorted(scores.items(), key=lambda x: x[1], reverse=True)
|
||||
return final_rank
|
||||
|
||||
# 예시 데이터
|
||||
kw_res = [("docA", 1), ("docB", 2)]
|
||||
vec_res = [("docC", 1), ("docA", 2)]
|
||||
|
||||
final = reciprocal_rank_fusion(kw_res, vec_res)
|
||||
print(f"Fused Results: {final}")
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
* **기반 기술**: [[Information Retrieval (IR)|Information Retrieval (IR)]], [[BM25|BM25]], [[Vector Search|Vector Search]]
|
||||
* **활용 아키텍처**: [[Retrieval-Augmented Generation (RAG)|Advanced RAG]], [[Enterprise Search|엔터프라이즈 검색]]
|
||||
* **평가 지표**: [[nDCG|nDCG]], [[MAP|MAP]]
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-LLM-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, llm, large-language-model, gpt, transformer, generative-ai]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# [[Large Language Model (LLM)|Large Language Model (LLM)]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "인류 지식의 거대한 압축: 수조 개의 매개변수와 방대한 텍스트 데이터를 학습하여 언어의 패턴을 완벽히 모사하고, 새로운 텍스트 생성부터 복잡한 추론까지 수행하는 현대 인공지능의 심장."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
대규모 언어 모델(LLM)은 트랜스포머 아키텍처를 기반으로 방대한 양의 텍스트 데이터를 학습한 신경망 모델입니다.
|
||||
|
||||
1. **핵심 아키텍처: [[Transformer|Transformer]]**:
|
||||
* **Self-Attention**: 문장 내의 모든 단어가 서로에게 미치는 영향도를 계산하여 중요한 정보를 선별합니다.
|
||||
* **확장성 (Scalability)**: 매개변수(Parameter)와 데이터가 늘어날수록 성능이 비약적으로 향상되는 법칙(Scaling Law)을 따릅니다.
|
||||
|
||||
2. **주요 기능**:
|
||||
* **텍스트 생성**: 주어진 문맥을 바탕으로 가장 자연스러운 다음 단어를 예측하여 답변을 생성합니다.
|
||||
* **제로샷/퓨샷 학습**: 사전 학습만으로도 별도의 데이터 없이(Zero-shot) 혹은 몇 개의 예시만으로(Few-shot) 새로운 작업을 수행할 수 있습니다.
|
||||
* **추론 및 도구 활용**: 복잡한 문제를 단계별로 생각하거나([[Chain of Thought|CoT]]), 외부 도구(검색, 코드 실행)를 자율적으로 호출합니다.
|
||||
|
||||
3. **지식 관리에서의 역할**:
|
||||
* **[[Retrieval-Augmented Generation (RAG)|RAG]]의 핵심 엔진**: 검색된 외부 문서를 이해하고 요약하여 최종 답변을 생성하는 역할을 수행합니다.
|
||||
* **지식 구조화**: 파편화된 정보를 분석하여 [[Knowledge Graph|Knowledge Graph]]나 위키 문서를 생성하는 지능형 비서 역할을 합니다.
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **환각 현상 (Hallucination)**: 존재하지 않는 정보를 사실인 것처럼 그럴싸하게 지어내는 문제가 있어, [[RAG|RAG]]와 같은 검증 시스템이 필수적입니다.
|
||||
* **지식의 정체**: 학습 데이터 컷오프(Cut-off) 이후의 최신 정보를 알지 못하므로, 실시간 검색 증강이 필요합니다.
|
||||
* **막대한 비용**: 모델을 실행하기 위해 고가의 GPU 자원이 필요하며, API 호출마다 비용이 발생합니다.
|
||||
|
||||
## 💻 실전 구현 코드 (Boilerplate)
|
||||
`OpenAI` 또는 `Anthropic` API를 사용하여 구조화된 답변을 얻는 기본적인 프롬프트 엔지니어링 예시입니다.
|
||||
|
||||
```python
|
||||
import openai
|
||||
|
||||
def get_structured_summary(content):
|
||||
response = openai.ChatCompletion.create(
|
||||
model="gpt-4",
|
||||
messages=[
|
||||
{"role": "system", "content": "너는 P-Reinforce v3.0 표준을 따르는 전문 지식 관리자야. 모든 응답을 마크다운 구조로 작성해줘."},
|
||||
{"role": "user", "content": f"다음 내용을 요약해줘: {content}"}
|
||||
],
|
||||
temperature=0 # 일관성을 위해 0으로 설정
|
||||
)
|
||||
return response.choices[0].message.content
|
||||
|
||||
# content = "LLM은 인류의 지식을 압축한 모델입니다..."
|
||||
# print(get_structured_summary(content))
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
* **기반 아키텍처**: [[Transformer|Transformer]], [[Deep Learning|Deep Learning]]
|
||||
* **활용 아키텍처**: [[Retrieval-Augmented Generation (RAG)|RAG]], [[Agentic RAG|Agentic RAG]]
|
||||
* **관련 모델**: [[GPT-4|GPT-4]], [[Claude|Claude]], [[Llama|Llama]] (Open Source)
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
@@ -0,0 +1,70 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-LTR-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, learning-to-rank, ltr, reranking, machine-learning, ranking-algorithms]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# [[Learning to Rank (LTR)|Learning to Rank (LTR)]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "데이터로 학습하는 최적의 정렬: 단순히 단어 빈도를 세는 것을 넘어, 클릭 데이터나 인간의 피드백을 머신러닝 모델로 학습시켜 사용자가 가장 만족할 만한 순서로 검색 결과를 재배치하는 기술."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
Learning to Rank(LTR)는 지도 학습(Supervised Learning)을 통해 정보 검색 시스템의 랭킹 모델을 구축하는 기계 학습의 한 분야입니다.
|
||||
|
||||
1. **3대 주요 접근 방식**:
|
||||
* **[[Pointwise Approach|Pointwise Approach]]**: 각 문서의 관련성을 개별적으로 예측합니다 (회귀/분류).
|
||||
* **[[Pairwise Approach|Pairwise Approach]]**: 두 문서 중 어느 것이 더 관련성이 높은지를 비교하며 학습합니다 (RankNet, LambdaMART 등).
|
||||
* **[[Listwise Approach|Listwise Approach]]**: 전체 문서 리스트의 순위 구조를 최적화합니다 (SoftRank, ListNet 등).
|
||||
|
||||
2. **데이터 소스 (Judgment List)**:
|
||||
* **인간 평가 (Explicit Feedback)**: 평가자가 직접 질문-문서 쌍에 점수를 매긴 데이터.
|
||||
* **사용자 행동 (Implicit Feedback)**: 클릭 로그, 체류 시간, 구매 이력 등을 통해 선호도를 추정합니다.
|
||||
|
||||
3. **활용 사례: [[Reranking|Reranking]]**:
|
||||
* 1단계 검색(예: BM25)에서 수천 개의 후보군을 빠르게 뽑아낸 뒤, 2단계에서 고성능 LTR 모델(또는 Cross-Encoder)을 사용하여 수십 개의 최상위 결과를 매우 정밀하게 재정렬합니다.
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **데이터 오염 및 편향**: 사용자가 상단에 있는 결과를 더 많이 클릭하는 [[Position Bias|Position Bias]] 등으로 인해 학습 데이터가 왜곡될 수 있습니다.
|
||||
* **모델 복잡도**: LTR 모델(특히 Deep LTR)은 추론 속도가 느려 실시간 검색 환경에서는 랭킹 대상 문서 수를 제한해야 하는 등 지연 시간(Latency) 관리가 필수적입니다.
|
||||
|
||||
## 💻 실전 구현 코드 (Boilerplate)
|
||||
`XGBoost` 라이브러리의 `XGBRanker`를 사용하여 간단한 LTR 모델을 학습시키는 개념 예시입니다.
|
||||
|
||||
```python
|
||||
import xgboost as xgb
|
||||
import numpy as np
|
||||
|
||||
# 1. 훈련 데이터 준비 (특징값 X, 관련성 점수 y, 그룹 정보 qid)
|
||||
# X: [문서 길이, 키워드 빈도, 클릭률 등]
|
||||
X = np.random.rand(100, 5)
|
||||
y = np.random.randint(0, 5, 100) # 0~4점 척도
|
||||
groups = [10, 10, 10, 10, 10, 10, 10, 10, 10, 10] # 쿼리당 10개씩 문서가 매칭됨
|
||||
|
||||
# 2. XGBRanker 모델 설정 및 학습
|
||||
ranker = xgb.XGBRanker(
|
||||
objective="rank:ndcg",
|
||||
lambdarank_pair_method="topk",
|
||||
eta=0.1,
|
||||
max_depth=6
|
||||
)
|
||||
|
||||
ranker.fit(X, y, group=groups)
|
||||
|
||||
# 3. 새로운 문서 세트에 대한 랭킹 예측
|
||||
test_docs_features = np.random.rand(10, 5)
|
||||
scores = ranker.predict(test_docs_features)
|
||||
sorted_indices = np.argsort(scores)[::-1]
|
||||
|
||||
print(f"Top Recommended Doc Index: {sorted_indices[0]}")
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
* **기반 기술**: [[Machine Learning (Machine Learning)|Machine Learning]], [[Information Retrieval (IR)|Information Retrieval (IR)]]
|
||||
* **평가 지표**: [[nDCG|nDCG]], [[MAP|MAP]], [[ERR|ERR]]
|
||||
* **고도화 기법**: [[Reranking|Reranking]], [[LambdaMART|LambdaMART]], [[Cross-Encoder|Cross-Encoder]]
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
@@ -0,0 +1,64 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-ML-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, machine-learning, ai-ethics, ml-bias, algorithm]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# [[Machine Learning (Machine Learning)|Machine Learning (Machine Learning)]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "데이터로부터 배우는 명시적이지 않은 규칙: 개발자가 모든 예외 상황을 코딩하는 대신, 대량의 데이터 속에서 패턴을 찾아내어 예측이나 결정을 내릴 수 있도록 알고리즘을 학습시키는 기술."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
머신러닝(기계 학습)은 데이터를 활용하여 인공지능의 성능을 점진적으로 개선하는 알고리즘과 통계 모델의 연구 분야입니다.
|
||||
|
||||
1. **주요 학습 패러다임**:
|
||||
* **지도 학습 (Supervised Learning)**: 정답(Label)이 있는 데이터를 통해 입력과 출력 간의 관계를 학습합니다. (예: [[Learning to Rank (LTR)|LTR]], 스팸 분류)
|
||||
* **비지도 학습 (Unsupervised Learning)**: 정답 없이 데이터의 숨겨진 구조나 패턴을 찾습니다. (예: [[Vector Search|Clustering]], 차원 축소)
|
||||
* **강화 학습 (Reinforcement Learning)**: 환경과의 상호작용을 통해 보상을 최대화하는 행동을 학습합니다.
|
||||
|
||||
2. **검색 시스템에서의 머신러닝**:
|
||||
* [[Semantic Search|Semantic Search]]: 자연어의 문맥을 이해하기 위한 임베딩 생성.
|
||||
* [[Learning to Rank (LTR)|Learning to Rank]]: 사용자 피드백을 기반으로 검색 결과의 순위를 최적화.
|
||||
* [[Intent Recognition|Intent Recognition]]: 사용자의 검색 의도를 분류.
|
||||
|
||||
3. **학습 알고리즘 모델**:
|
||||
* 신경망 기반: [[BERT|BERT]], Transformer, Deep Learning.
|
||||
* 트리 기반: [[Decision Tree & XGBoost|Decision Tree, XGBoost, LightGBM]].
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **Machine Learning Bias (편향성)**: 학습 데이터 자체가 특정 집단에 편향되어 있거나 대표성이 부족할 경우, 모델이 불공정하거나 차별적인 결과를 내놓을 수 있습니다. 이는 검색 결과의 다양성을 저해하고 사회적 문제를 야기할 수 있습니다.
|
||||
* **오버피팅 (Overfitting)**: 모델이 훈련 데이터에 너무 과하게 최적화되어 실제 새로운 데이터(Unseen data)에 대해서는 성능이 떨어지는 현상입니다.
|
||||
* **해석 가능성 (Interpretability)**: 딥러닝과 같은 복잡한 모델은 결과가 나온 이유를 설명하기 어려운 '블랙박스' 문제가 존재합니다.
|
||||
|
||||
## 💻 실전 구현 코드 (Boilerplate)
|
||||
`Scikit-learn`을 활용한 가장 기본적인 지도 학습(분류) 파이프라인 예시입니다.
|
||||
|
||||
```python
|
||||
from sklearn.datasets import load_iris
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.ensemble import RandomForestClassifier
|
||||
from sklearn.metrics import accuracy_score
|
||||
|
||||
# 1. 데이터 로드 및 분할
|
||||
iris = load_iris()
|
||||
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)
|
||||
|
||||
# 2. 모델 선택 및 학습 (Random Forest)
|
||||
model = RandomForestClassifier(n_estimators=100)
|
||||
model.fit(X_train, y_train)
|
||||
|
||||
# 3. 예측 및 평가
|
||||
predictions = model.predict(X_test)
|
||||
print(f"Model Accuracy: {accuracy_score(y_test, predictions):.4f}")
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
* **기반 기술**: [[Natural Language Processing (NLP)|NLP]], [[Computer Science and Theory|Computer Science]]
|
||||
* **핵심 기법**: [[Feature Engineering|Feature Engineering]], [[Learning to Rank (LTR)|Learning to Rank]]
|
||||
* **윤리/품질**: [[Machine Learning Bias|Bias]], [[Model Evaluation|평가 지표]]
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
@@ -0,0 +1,75 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-MAS-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, multi-agent-system, mas, agent-orchestration, autonomous-agents, ai-collaboration]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# [[Multi-Agent System (Multi-Agent System)|Multi-Agent System (Multi-Agent System)]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "협동하는 인공지능들: 하나의 거대한 모델이 모든 것을 해결하는 대신, 특정 분야에 특화된 여러 에이전트가 사회적 구조를 형성하여 서로 통신하고 협력함으로써 복잡한 문제를 효율적으로 해결하는 분산형 지능 체계."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
멀티 에이전트 시스템(MAS)은 자율성을 가진 다수의 소프트웨어 에이전트가 공동의 목표를 달성하거나 각자의 목표를 위해 상호작용하는 시스템입니다.
|
||||
|
||||
1. **핵심 아키텍처**:
|
||||
* **특화된 역할 분담 (Specialization)**: 검색 에이전트, 코딩 에이전트, 검증 에이전트 등 각자의 전문 영역을 가집니다.
|
||||
* **통신 프로토콜 (Communication)**: 에이전트 간의 정보 교환을 위한 표준 규약(예: [[Model Context Protocol|MCP]])을 사용합니다.
|
||||
* **오케스트레이션 (Orchestration)**: 전체 작업의 흐름을 제어하고 에이전트 간의 충돌을 조율하는 관리자 에이전트가 존재할 수 있습니다.
|
||||
|
||||
2. **지식 관리에서의 MAS**:
|
||||
* [[P-Reinforce|P-Reinforce]] 시스템처럼 수집, 정제, 강화, 아카이빙 등의 각 단계를 전담 에이전트가 처리하여 전체적인 지식 품질을 높입니다.
|
||||
* **[[Agentic RAG|Agentic RAG]]**: 검색 에이전트가 정보를 찾아오면, 분석 에이전트가 이를 검증하고, 작가 에이전트가 최종 문서를 생성하는 협업 모델입니다.
|
||||
|
||||
3. **이점 (Benefits)**:
|
||||
* **확장성**: 새로운 기능이 필요할 때 해당 기능을 가진 에이전트만 추가하면 됩니다.
|
||||
* **안정성**: 한 에이전트에 오류가 발생해도 다른 에이전트가 이를 보완하거나 전체 시스템이 멈추지 않도록 설계할 수 있습니다.
|
||||
* **복잡성 해결**: 단일 모델이 처리하기 힘든 대규모 프로젝트의 의사결정 과정을 분산 처리할 수 있습니다.
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **통신 오버헤드**: 에이전트 간의 잦은 메시지 교환으로 인해 지연 시간(Latency)과 토큰 비용이 급증할 수 있습니다.
|
||||
* **조율의 어려움 (Coordination Failure)**: 에이전트들이 서로 상충하는 결정을 내리거나 무한 루프에 빠지는 등 복잡한 상호작용 문제를 해결해야 합니다.
|
||||
* **가시성 확보**: 다수의 에이전트가 동시에 동작하므로, 어떤 에이전트가 어떤 결정을 내렸는지 추적하고 디버깅하는 난이도가 매우 높습니다.
|
||||
|
||||
## 💻 실전 구현 코드 (Boilerplate)
|
||||
`LangGraph` 또는 `CrewAI` 스타일의 간단한 협업 구조 개념 예시입니다.
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
# 1. 역할별 에이전트 생성
|
||||
researcher = Agent(
|
||||
role='지식 수집가',
|
||||
goal='주제에 대한 최신 논문과 기술 문서를 검색한다.',
|
||||
backstory='당신은 정보의 바다에서 가장 가치 있는 원석을 찾아내는 전문가입니다.'
|
||||
)
|
||||
|
||||
writer = Agent(
|
||||
role='기술 작가',
|
||||
goal='수집된 정보를 바탕으로 P-Reinforce v3.0 표준 위키 문서를 작성한다.',
|
||||
backstory='당신은 복잡한 기술 개념을 명료하고 아름다운 마크다운으로 변환하는 예술가입니다.'
|
||||
)
|
||||
|
||||
# 2. 작업 정의 및 할당
|
||||
task1 = Task(description='GraphRAG의 최신 동향 조사', agent=researcher)
|
||||
task2 = Task(description='조사된 내용을 바탕으로 Wiki 생성', agent=writer)
|
||||
|
||||
# 3. 협업(Crew) 가동
|
||||
tech_crew = Crew(
|
||||
agents=[researcher, writer],
|
||||
tasks=[task1, task2],
|
||||
verbose=True
|
||||
)
|
||||
|
||||
result = tech_crew.start()
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
* **기반 기술**: [[Autonomous Agent|Autonomous Agent]], [[Agentic RAG|Agentic RAG]]
|
||||
* **조율 모델**: [[Orchestration|Orchestration]], [[Swarm Intelligence|Swarm Intelligence]]
|
||||
* **표준 규약**: [[Model Context Protocol (MCP)|Model Context Protocol (MCP)]]
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
@@ -0,0 +1,60 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-MRG-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, multimodal-rag, image-retrieval, video-search, cross-modal-reasoning, ai-architecture]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# [[Multimodal RAG|Multimodal RAG]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "글자를 넘어선 지능형 검색: 텍스트뿐만 아니라 이미지, 도표, 비디오, 오디오 등 다양한 형태의 데이터를 통합하여 검색하고, 이를 바탕으로 복합적인 맥락을 추론하는 미래형 지식 증강 아키텍처."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
다중 모달 RAG(Multimodal RAG)는 서로 다른 형태의 데이터(Modality)를 공통된 의미 공간에 매핑하여 교차 검색 및 생성을 수행하는 기술입니다.
|
||||
|
||||
1. **데이터의 확장 (Multimodality)**:
|
||||
* **비정형 데이터 통합**: 문서 내의 차트, 제품 사진, 회의 녹취록, 교육용 영상 등을 모두 지식 베이스로 활용합니다.
|
||||
* **교차 모달 검색 (Cross-modal Retrieval)**: 텍스트로 질문하여 이미지를 찾거나, 이미지를 업로드하여 관련 설명 문서를 찾는 작업이 가능합니다.
|
||||
|
||||
2. **핵심 아키텍처**:
|
||||
* **Shared Embedding Space**: CLIP과 같은 모델을 사용하여 텍스트와 이미지를 동일한 차원의 벡터로 변환, 유사도를 직접 계산합니다.
|
||||
* **Multimodal LLM (LMM)**: GPT-4o나 Claude 3.5 Sonnet처럼 이미지와 텍스트를 동시에 이해하고 생성할 수 있는 모델을 생성 단계에서 활용합니다.
|
||||
|
||||
3. **엔터프라이즈 활용**:
|
||||
* 설계도(CAD)와 기술 문서를 함께 분석해야 하는 제조 현장이나, 수많은 차트가 포함된 금융 보고서를 요약해야 하는 도메인에서 혁신적인 효율을 제공합니다.
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **리소스 소모 극대화**: 고차원 멀티모달 데이터를 처리하고 임베딩하는 과정에서 텍스트 전용 시스템보다 훨씬 높은 컴퓨팅 파워와 스토리지 용량이 요구됩니다.
|
||||
* **복잡한 파이프라인**: 이미지 캡셔닝, 오디오 전사(STT) 등 각 모달리티를 처리하기 위한 별도의 전처리 파이프라인 구축이 필요합니다.
|
||||
* **정밀도 검증의 난해함**: 텍스트와 이미지 간의 유사도가 실제 비즈니스 맥락에서 '정답'인지를 자동으로 평가하기 위한 지표 체계가 아직 발전 단계에 있습니다.
|
||||
|
||||
## 💻 실전 구현 코드 (Boilerplate)
|
||||
텍스트와 이미지를 동시에 처리하는 멀티모달 RAG 파이프라인의 개념적 흐름입니다.
|
||||
|
||||
```python
|
||||
# 개념적 멀티모달 검색 및 생성 흐름
|
||||
# 1. 멀티모달 임베딩 모델 로드 (예: CLIP)
|
||||
model = MultiModalEmbeddingModel.load("clip-vit-base-patch32")
|
||||
|
||||
# 2. 이미지 및 텍스트 데이터 인덱싱
|
||||
vector_db.add_image("product_photo.jpg", metadata={"id": "prod_001"})
|
||||
vector_db.add_text("해당 제품은 고성능 AI 엔진입니다.", metadata={"id": "prod_001"})
|
||||
|
||||
# 3. 이미지 업로드 후 관련 문서 검색
|
||||
query_image = "user_uploaded_photo.jpg"
|
||||
relevant_docs = vector_db.search_by_image(query_image, top_k=2)
|
||||
|
||||
# 4. 멀티모달 LLM을 통한 최종 답변 생성
|
||||
prompt = "업로드된 이미지와 검색된 텍스트 내용을 바탕으로 제품 상세 설명을 작성해줘."
|
||||
answer = multimodal_llm.generate(prompt, image=query_image, context=relevant_docs)
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
* **기반 기술**: [[Vector Embedding|Vector Embedding]], [[Vector Search|Vector Search]]
|
||||
* **핵심 모델**: [[CLIP|CLIP]], [[Multimodal LLM|Multimodal LLM (LMM)]]
|
||||
* **활용 분야**: [[Visual QA|Visual QA]], [[Enterprise Document Analysis|엔터프라이즈 문서 분석]]
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
@@ -0,0 +1,58 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-NLP-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, nlp, natural-language-processing, llm, transformer, tokenization]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# [[Natural Language Processing (NLP)|Natural Language Processing (NLP)]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "기계와 인간의 대화 창구: 컴퓨터가 인간의 언어(자연어)를 이해하고, 해석하며, 생성할 수 있도록 하는 인공지능의 핵심 분야로, 단순한 단어 처리를 넘어 문맥과 뉘앙스를 파악하는 기술적 여정."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
자연어 처리(NLP)는 인간의 언어를 기계가 처리할 수 있는 형태로 변환하고 분석하는 인공지능의 한 분야입니다.
|
||||
|
||||
1. **전통적 NLP vs 현대적 NLP**:
|
||||
* **전통적 방식**: 형태소 분석, 스테밍(Stemming), [[TF-IDF|TF-IDF]] 등 규칙 기반이나 통계적 모델에 의존했습니다.
|
||||
* **현대적 방식 ([[LLM|LLM]])**: [[Transformer|Transformer]] 아키텍처와 대규모 언어 모델을 활용하여 문장의 선후 관계를 동시에 파악하고 고도의 맥락 이해를 수행합니다.
|
||||
|
||||
2. **핵심 처리 단계**:
|
||||
* **토큰화 (Tokenization)**: 문장을 단어나 서브워드(Subword) 단위로 쪼갭니다.
|
||||
* **임베딩 ([[Vector Embedding|Vector Embedding]])**: 텍스트를 고차원 공간의 숫자로 변환합니다.
|
||||
* **인코딩/디코딩**: 모델이 의미를 추출하고, 다시 자연어로 생성하는 과정입니다.
|
||||
|
||||
3. **검색 시스템에서의 활용**:
|
||||
* 사용자의 질문 의도를 파악하고([[Intent Recognition|Intent Recognition]]), 오타 교정 및 동의어 확장을 통해 검색의 정밀도를 높입니다.
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **언어적 모호성**: 같은 단어가 문맥에 따라 다른 의미를 가지는 중의성 해결은 여전히 어려운 과제입니다.
|
||||
* **데이터 편향**: 학습 데이터에 포함된 사회적 편향이 모델의 결과물에 그대로 투영될 수 있는 윤리적 리스크가 존재합니다.
|
||||
* **컴퓨팅 비용**: [[BERT|BERT]]나 GPT와 같은 최신 모델은 연산량이 매우 많아 실시간 처리를 위한 최적화가 필수적입니다.
|
||||
|
||||
## 💻 실전 구현 코드 (Boilerplate)
|
||||
Python `NLTK` 및 `Transformers`를 활용한 기본적인 텍스트 처리 예시입니다.
|
||||
|
||||
```python
|
||||
# 1. 고전적 토큰화 (NLTK)
|
||||
import nltk
|
||||
from transformers import pipeline
|
||||
|
||||
text = "Astra ConnectAI는 자율적으로 지식을 수집합니다."
|
||||
tokens = nltk.word_tokenize(text)
|
||||
print(f"Tokens: {tokens}")
|
||||
|
||||
# 2. 현대적 감정 분석 (Transformers Pipeline)
|
||||
classifier = pipeline("sentiment-analysis", model="snunlp/krobert-base-sentiment")
|
||||
result = classifier(text)
|
||||
print(f"Sentiment: {result}")
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
* **상위 개념**: [[AI_and_ML|AI_and_ML]], [[Computer Science and Theory|Computer Science]]
|
||||
* **기반 기술**: [[Vector Embedding|Vector Embedding]], [[LLM|Large Language Model (LLM)]]
|
||||
* **활용 기술**: [[Semantic Search|Semantic Search]], [[Retrieval-Augmented Generation (RAG)|RAG]]
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
@@ -0,0 +1,68 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-REF-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, rag-evaluation, ragas, faithfulness, llm-as-judge, quality-assurance]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# [[RAG Evaluation Frameworks|RAG Evaluation Frameworks]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "RAG 품질의 자율 검증 체계: 수작업 평가의 한계를 넘어 [[LLM-as-judge|LLM-as-judge]] 기법을 활용하여 검색의 정확성과 생성의 진실성을 자동으로 측정하고 개선하는 평가 엔지니어링 프레임워크."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
RAG 평가 프레임워크는 검색 증강 생성 시스템의 각 단계(검색 및 생성)를 정량적으로 평가하여 파이프라인을 최적화하는 데 사용됩니다.
|
||||
|
||||
1. **3대 핵심 평가 지표 (RAGAS Metric)**:
|
||||
* **[[Faithfulness|Faithfulness (충실도)]]**: 생성된 답변이 검색된 컨텍스트에 얼마나 기반하고 있는가? (환각 억제 능력 측정)
|
||||
* **[[Answer Relevancy|Answer Relevancy (답변 관련성)]]**: 최종 답변이 사용자의 질문 의도에 얼마나 적절히 부합하는가?
|
||||
* **[[Context Precision & Recall|Context Precision & Recall (문맥 품질)]]**: 질문에 필요한 핵심 정보가 검색된 문서들 속에 누락 없이, 상단에 포함되어 있는가?
|
||||
|
||||
2. **[[LLM-as-judge|LLM-as-judge]] 방법론**:
|
||||
* 사람이 아닌 고성능 LLM(예: GPT-4)이 정해진 평가 기준(Rubrics)에 따라 답변의 품질을 점수화합니다.
|
||||
* RAGAS, Galileo, Maxim AI, Braintrust 등의 최신 프레임워크가 이 방식을 채택하여 평가를 자동화합니다.
|
||||
|
||||
3. **운영 프로세스 (Quality Gates)**:
|
||||
* **Golden Datasets**: 실제 실패 사례를 모아놓은 표준 데이터셋을 기준으로 시스템 개선 여부를 판단합니다.
|
||||
* **CI/CD 통합**: 새로운 알고리즘 배포 시 평가 점수가 기준치 미달일 경우 배포를 자동으로 차단하는 품질 게이트를 설정합니다.
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **평가 비용**: 고성능 LLM을 평가자로 사용할 경우, 수만 건의 쿼리를 평가하는 과정에서 상당한 API 비용과 지연 시간이 발생합니다.
|
||||
* **평가자 편향**: 평가 모델 자체가 가진 편향성으로 인해 사람이 느끼는 실제 품질과 자동화 점수 간의 괴리가 발생할 수 있으므로, 주기적인 인간 평가(Human Evaluation) 병행이 필수적입니다.
|
||||
|
||||
## 💻 실전 구현 코드 (Boilerplate)
|
||||
`RAGAS` 라이브러리를 사용하여 검색된 결과와 생성된 답변의 품질을 평가하는 예시입니다.
|
||||
|
||||
```python
|
||||
from ragas import evaluate
|
||||
from ragas.metrics import faithfulness, answer_relevancy, context_recall
|
||||
from datasets import Dataset
|
||||
|
||||
# 1. 평가용 데이터셋 준비 (질문, 답변, 검색된 컨텍스트, 정답지)
|
||||
data_samples = {
|
||||
'question': ['Astra의 P-Reinforce 표준이 뭐야?'],
|
||||
'answer': ['지식의 구조화와 보강을 위한 표준 프로토콜입니다.'],
|
||||
'contexts': [['Astra 프로젝트는 P-Reinforce v3.0 표준을 통해 위키를 자동화합니다.']],
|
||||
'ground_truth': ['P-Reinforce v3.0은 지식 보강 및 위키 표준화를 위한 프로토콜입니다.']
|
||||
}
|
||||
dataset = Dataset.from_dict(data_samples)
|
||||
|
||||
# 2. 평가 실행
|
||||
score = evaluate(
|
||||
dataset,
|
||||
metrics=[faithfulness, answer_relevancy, context_recall]
|
||||
)
|
||||
|
||||
# 3. 결과 대시보드 출력
|
||||
print(f"Faithfulness Score: {score['faithfulness']:.4f}")
|
||||
print(f"Answer Relevancy: {score['answer_relevancy']:.4f}")
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
* **상위 아키텍처**: [[Retrieval-Augmented Generation (RAG)|RAG]], [[Agentic RAG|Agentic RAG]]
|
||||
* **핵심 기술**: [[LLM-as-judge|LLM-as-judge]], [[Context Precision & Recall|Context Precision & Recall]]
|
||||
* **운영 도구**: [[Production Observability|Observability]], [[Golden Datasets|골든 데이터셋]]
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
@@ -0,0 +1,66 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-RRK-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, reranking, information-retrieval, ranking, cross-encoder, search-optimization]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# [[Reranking|Reranking]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "검색의 2차 면접: 빠른 1차 검색(Retriever)으로 선별된 수많은 후보 문서 중, 고성능 모델을 사용하여 사용자의 질문에 가장 적합한 소수의 정답 후보를 매우 정밀하게 다시 정렬하는 품질 최적화 단계."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
재순위화(Reranking)는 정보 검색 시스템에서 검색 결과의 정확도를 높이기 위해 수행하는 두 번째 랭킹 단계입니다.
|
||||
|
||||
1. **왜 재순위화가 필요한가? (Two-stage Retrieval)**:
|
||||
* **1단계 (Retrieval)**: [[Vector Search|벡터 검색]]이나 [[BM25|BM25]]를 통해 수백만 개의 문서 중 수백 개의 후보를 아주 빠르게(Low Latency) 뽑아냅니다. 하지만 정밀도가 완벽하지 않을 수 있습니다.
|
||||
* **2단계 (Reranking)**: 1단계에서 뽑힌 소수의 후보들만 대상으로 무겁지만 정교한 모델을 가동하여 순위를 조정합니다.
|
||||
|
||||
2. **핵심 모델: [[Cross-Encoder|Cross-Encoder]]**:
|
||||
* 질문(Query)과 문서(Document)를 하나의 쌍으로 묶어 동시에 입력받아 둘 사이의 관련성을 직접 계산합니다.
|
||||
* 벡터 유사도 방식([[Bi-Encoder]])보다 훨씬 정밀하게 문맥적 일치도를 파악할 수 있습니다.
|
||||
|
||||
3. **학습 알고리즘 ([[Learning to Rank (LTR)|LTR]])**:
|
||||
* [[Decision Tree & XGBoost|XGBoost]], LambdaMART 등을 활용하여 사용자 클릭 데이터나 전문가 피드백을 기반으로 최적의 랭킹 모델을 훈련시킵니다.
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **지연 시간 (Latency)**: 고성능 모델을 사용하므로 검색 속도가 느려질 수 있습니다. 따라서 랭킹 대상 문서 수를 적절히 제한(예: Top 50~100개)해야 합니다.
|
||||
* **컴퓨팅 비용**: 1단계 검색에 비해 훨씬 많은 GPU/CPU 연산 자원이 소모됩니다.
|
||||
* **데이터 의존성**: 재순위화 모델의 성능은 학습에 사용된 [[Judgment List|판단 리스트 (Judgment List)]]의 품질과 도메인 적합성에 크게 좌우됩니다.
|
||||
|
||||
## 💻 실전 구현 코드 (Boilerplate)
|
||||
`Sentence Transformers` 라이브러리를 사용하여 검색 결과의 순위를 다시 매기는 기초 예시입니다.
|
||||
|
||||
```python
|
||||
from sentence_transformers import CrossEncoder
|
||||
|
||||
# 1. 고성능 재순위화 모델 로드
|
||||
model = CrossEncoder('cross-encoder/ms-marco-MiniLM-L-6-v2')
|
||||
|
||||
# 2. 1차 검색 결과 (질문 - 문서 쌍)
|
||||
query = "Astra 프로젝트의 장점이 뭐야?"
|
||||
candidates = [
|
||||
"Astra는 자율적으로 지식을 보강하는 엔진을 가지고 있습니다.",
|
||||
"아스트라제네카 백신은 코로나 예방에 효과적입니다.", # 오답 후보 (키워드 일치)
|
||||
"P-Reinforce 표준은 위키 구조화를 돕습니다."
|
||||
]
|
||||
|
||||
# 3. 재순위화 점수 계산
|
||||
scores = model.predict([(query, doc) for doc in candidates])
|
||||
|
||||
# 4. 점수 높은 순으로 결과 재정렬
|
||||
reranked_results = sorted(zip(candidates, scores), key=lambda x: x[1], reverse=True)
|
||||
|
||||
for doc, score in reranked_results:
|
||||
print(f"Score: {score:.4f} | Content: {doc}")
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
* **기반 단계**: [[Information Retrieval (IR)|Information Retrieval (IR)]], [[Vector Search|Vector Search]]
|
||||
* **핵심 모델**: [[Cross-Encoder|Cross-Encoder]], [[Learning to Rank (LTR)|Learning to Rank (LTR)]]
|
||||
* **활용 아키텍처**: [[Retrieval-Augmented Generation (RAG)|Advanced RAG]]
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
@@ -1,41 +1,75 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-RAGM-001
|
||||
category: Unified
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-RAG-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, rag, retrieval-augmented-generation, knowledge-base, llm-context]
|
||||
tags: [auto-reinforced, rag, llm, ai-architecture, advanced-rag]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# [[Retrieval-Augmented Generation (RAG)|Retrieval-Augmented Generation (RAG)]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "오픈 북 테스트의 정석: 모든 지식을 모델의 파라미터에 우겨넣는 대신, 필요할 때마다 외부 지식 창고에서 관련 정보를 찾아 모델에게 전달함으로써 정확도를 높이고 환각을 줄이는 실용주의적 AI 아키텍처."
|
||||
> "LLM의 기억력을 넘어서는 외부 지식의 실시간 보조: 모델 내부의 정적 지식에 의존하지 않고, 신뢰할 수 있는 외부 문서를 즉시 검색하여 답변에 결합함으로써 환각(Hallucination)을 획기적으로 줄이고 정확도를 극대화하는 지식 강화 아키텍처."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
RAG(검색 증강 생성)는 거대 언어 모델이 학습 데이터에 없는 최신 정보나 특정 도메인의 지식을 활용할 수 있도록, 외부 데이터베이스에서 관련 문서를 검색하여 프롬프트에 포함시키는 기술입니다.
|
||||
검색 증강 생성(RAG)은 대규모 언어 모델(LLM)의 한계를 보완하기 위해 외부 데이터소스로부터 관련 정보를 검색하여 생성 과정에 주입하는 기술적 프레임워크입니다.
|
||||
|
||||
1. **작동 프로세스**:
|
||||
* **Indexing (인덱싱)**: 방대한 문서를 작은 조각(Chunk)으로 나누고 벡터(Vector) 형태로 변환하여 저장합니다.
|
||||
* **Retrieval (검색)**: 사용자의 질문과 유사한 의미를 가진 문서 조각들을 데이터베이스에서 찾아냅니다.
|
||||
* **Generation (생성)**: 검색된 조각들을 질문과 함께 모델에게 전달하여, 해당 근거를 바탕으로 답변을 생성하게 합니다.
|
||||
2. **핵심 이점**:
|
||||
* **환각(Hallucination) 감소**: 모델이 근거 문서를 보고 답변하므로 없는 사실을 지어낼 확률이 줄어듭니다.
|
||||
* **최신성 유지**: 모델을 재학습시키지 않고도 외부 데이터베이스만 업데이트하면 최신 지식을 반영할 수 있습니다.
|
||||
* **설명 가능성**: 답변의 출처(Source/Citation)를 명확히 제시할 수 있어 신뢰도가 높습니다.
|
||||
3. **발전 단계**:
|
||||
* **Naive RAG**: 단순 벡터 검색 기반.
|
||||
* **Advanced RAG**: 하이브리드 검색, 재순위화(Re-ranking), 쿼리 변환 등을 포함.
|
||||
* **[[Agentic RAG|Agentic RAG]]**: 에이전트가 스스로 검색 전략을 수립하고 결과의 적절성을 평가하며 루프를 수행.
|
||||
1. **핵심 워크플로우 (Core Workflow)**:
|
||||
* **인덱싱 (Indexing)**: 문서들을 의미 있는 단위(Chunk)로 나누고, [[Vector Embedding|Vector Embedding]]을 통해 벡터화하여 데이터베이스에 저장합니다.
|
||||
* **검색 (Retrieval)**: 사용자의 질문과 가장 유사한 맥락을 가진 청크들을 [[Vector Database|Vector Database]]에서 찾아냅니다.
|
||||
* **증강 (Augmentation)**: 검색된 정보를 원본 질문과 결합하여 풍부한 컨텍스트를 가진 프롬프트를 생성합니다.
|
||||
* **생성 (Generation)**: LLM이 강화된 프롬프트를 바탕으로 근거가 명확한 최종 답변을 도출합니다.
|
||||
|
||||
2. **RAG의 발전 단계**:
|
||||
* **Naive RAG**: 단순한 '검색-결합-생성'의 선형 구조입니다. 정밀도(Precision)가 낮고 관련 없는 정보를 가져올 위험이 있습니다.
|
||||
* **Advanced RAG**: [[Reranking|Reranking]], 하이브리드 검색, 지능적 청킹, 쿼리 재작성 등을 통해 검색 품질을 대폭 개선합니다.
|
||||
* **Modular RAG**: 고정된 흐름이 아닌, 유연하게 모듈을 교체하거나 추가(검색 전/후 처리 등)할 수 있는 구조입니다.
|
||||
|
||||
3. **지식의 고도화 기법**:
|
||||
* [[GraphRAG|GraphRAG]]: 문서 간의 관계를 그래프 형태로 추출하여 복잡한 다단계 추론(Multi-hop Reasoning)을 수행합니다.
|
||||
* [[Agentic RAG|Agentic RAG]]: AI 스스로 검색 도구 사용 여부를 결정하고 계획을 수립하여 문제를 해결하는 자율적 검색 체계입니다.
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **검색 의존성**: 검색 결과가 부실하면 답변 품질도 급격히 떨어집니다. (Garbage In, Garbage Out)
|
||||
* **지연 시간**: 외부 검색 단계가 추가되므로 순수 생성보다 응답 속도가 느려질 수 있습니다.
|
||||
* **Lost in the middle**: 너무 많은 정보를 검색하여 전달할 경우, 모델이 컨텍스트 중간에 있는 중요한 정보를 놓치는 현상이 발생할 수 있습니다.
|
||||
* **인프라 및 비용**: 벡터 DB 운영, 지속적인 임베딩 생성 및 인덱싱 비용이 발생하며, 검색 단계 추가로 인해 LLM 단독 호출 대비 응답 속도(Latency)가 증가합니다.
|
||||
* **품질의 불확실성**: 검색 단계에서 관련 정보를 놓치거나(Low Recall), 관련 없는 정보가 섞여 들어오면(Low Precision) LLM이 여전히 잘못된 답변을 내놓을 수 있습니다.
|
||||
* **보안 리스크**: 검색된 정보에 민감 데이터가 포함될 경우 LLM 응답을 통해 정보가 유출될 수 있으므로, 검색 계층에서의 권한 관리가 필수적입니다.
|
||||
|
||||
## 💻 실전 구현 코드 (Implementation Example)
|
||||
RAG 파이프라인의 핵심인 검색 및 컨텍스트 결합 로직의 개념적 예시입니다 (Python/LangChain 기반).
|
||||
|
||||
```python
|
||||
from langchain_community.vectorstores import FAISS
|
||||
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
|
||||
from langchain.chains import RetrievalQA
|
||||
|
||||
# 1. 벡터 데이터베이스 로드
|
||||
embeddings = OpenAIEmbeddings()
|
||||
vector_db = FAISS.load_local("index/rag_storage", embeddings)
|
||||
|
||||
# 2. 검색기(Retriever) 및 LLM 설정
|
||||
retriever = vector_db.as_retriever(search_kwargs={"k": 3})
|
||||
llm = ChatOpenAI(model_name="gpt-4-turbo", temperature=0)
|
||||
|
||||
# 3. RAG 체인 구성 (Stuff 방식: 검색된 모든 내용을 프롬프트에 주입)
|
||||
rag_chain = RetrievalQA.from_chain_type(
|
||||
llm=llm,
|
||||
chain_type="stuff",
|
||||
retriever=retriever,
|
||||
return_source_documents=True
|
||||
)
|
||||
|
||||
# 4. 실행 및 출처 확인
|
||||
query = "Astra 프로젝트의 P-Reinforce v3.0 표준에 대해 설명해줘."
|
||||
result = rag_chain.invoke(query)
|
||||
|
||||
print(f"Answer: {result['result']}")
|
||||
print(f"Sources: {[doc.metadata['source'] for doc in result['source_documents']]}")
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
* **상위 개념**: [[LLM Application Architecture|LLM Application Architecture]]
|
||||
* **세부 기술**: [[Agentic RAG|Agentic RAG]], [[GraphRAG|GraphRAG]], [[Hybrid Search|Hybrid Search]], [[Re-ranking|Re-ranking]]
|
||||
* **최적화 도구**: [[LlamaIndex|LlamaIndex]], [[LangChain|LangChain]], [[ChromaDB|ChromaDB]], [[Pinecone|Pinecone]]
|
||||
* **기반 기술**: [[Vector Embedding|Vector Embedding]], [[Vector Database|Vector Database]], [[Semantic Search|Semantic Search]]
|
||||
* **고도화 모델**: [[GraphRAG|GraphRAG]], [[Agentic RAG|Agentic RAG]], [[Adaptive RAG|Adaptive RAG]]
|
||||
* **평가 지표**: [[Context Precision & Recall|Context Precision & Recall]], [[Faithfulness & Answer Relevancy|Faithfulness & Answer Relevancy]]
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-SMS-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, semantic-search, vector-search, nlp, bert, llm]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# [[Semantic Search|Semantic Search]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "단어를 넘어선 의도의 검색: 사용자가 입력한 키워드의 단순 일치 여부가 아니라, 그 뒤에 숨겨진 '의미(Semantics)'와 '문맥(Context)'을 이해하여 가장 적합한 정보를 찾아내는 차세대 검색 기술."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
의미론적 검색(Semantic Search)은 자연어 처리(NLP)와 머신러닝 알고리즘을 활용하여 단어 간의 관계와 질문의 의도를 파악하는 검색 방식입니다.
|
||||
|
||||
1. **동작 원리 (How it works)**:
|
||||
* **의도 파악 (Intent Recognition)**: 질문이 정보를 찾는 것인지, 구매를 위한 것인지, 특정 사이트로 이동하려는 것인지 분석합니다.
|
||||
* **문맥 이해 (Contextual Awareness)**: '사과'가 과일인지 브랜드인지 주변 단어를 통해 판단합니다.
|
||||
* **벡터 변환**: 질문과 문서를 [[Vector Embedding|Vector Embedding]]으로 변환하여 수학적 거리 기반의 [[Vector Search|Vector Search]]를 수행합니다.
|
||||
|
||||
2. **핵심 기술**:
|
||||
* **[[BERT|BERT]] / Transformer**: 양방향 문맥 이해를 가능하게 하여 검색 품질을 혁신한 딥러닝 모델입니다.
|
||||
* **Knowledge Graph**: 엔티티(인물, 장소, 개념 등) 간의 관계를 구조화하여 지능적인 답변을 제공합니다.
|
||||
* **Dense Retrieval**: 키워드 매칭이 아닌 벡터 공간에서의 근접성 검색을 수행합니다.
|
||||
|
||||
3. **이점 (Benefits)**:
|
||||
* 동의어 및 유의어 처리 능력이 탁월합니다.
|
||||
* 자연어 형태의 긴 질문(Long-tail Query)에 매우 강합니다.
|
||||
* 오타나 부정확한 표현에도 유연하게 대처합니다.
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **컴퓨팅 비용**: 딥러닝 모델 추론과 벡터 연산으로 인해 전통적 검색보다 훨씬 많은 연산 자원이 필요합니다.
|
||||
* **고유 명사 취약성**: 제품 시리얼 번호나 특수 코드와 같은 '정확한 일치'가 필요한 데이터에서는 오히려 성능이 떨어질 수 있습니다.
|
||||
* **블랙박스 문제**: 특정 결과가 왜 상단에 노출되었는지 논리적으로 설명하기 어렵습니다.
|
||||
|
||||
## 💻 실전 구현 코드 (Boilerplate)
|
||||
`sentence-transformers`를 활용하여 의미론적 유사도를 기반으로 검색을 수행하는 기초 예시입니다.
|
||||
|
||||
```python
|
||||
from sentence_transformers import SentenceTransformer, util
|
||||
|
||||
# 1. 모델 로드 (다국어 지원)
|
||||
model = SentenceTransformer('jhgan/ko-sroberta-multilingual')
|
||||
|
||||
# 2. 지식 베이스 정의
|
||||
docs = [
|
||||
"인공지능 에이전트는 자율적으로 작업을 수행합니다.",
|
||||
"로컬 LLM은 데이터 프라이버시 보호에 유리합니다.",
|
||||
"옵시디언은 강력한 노트 연결 기능을 제공합니다."
|
||||
]
|
||||
doc_embeddings = model.encode(docs)
|
||||
|
||||
# 3. 사용자 질의 처리
|
||||
query = "나의 지식을 외부로 유출하지 않고 AI를 사용하고 싶어."
|
||||
query_embedding = model.encode(query)
|
||||
|
||||
# 4. 의미론적 유사도 검색
|
||||
hits = util.semantic_search(query_embedding, doc_embeddings, top_k=1)
|
||||
best_idx = hits[0][0]['corpus_id']
|
||||
|
||||
print(f"Query: {query}")
|
||||
print(f"Top Semantic Result: {docs[best_idx]} (Score: {hits[0][0]['score']:.4f})")
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
* **상위 개념**: [[Information Retrieval (IR)|Information Retrieval (IR)]], [[Natural Language Processing (NLP)|NLP]]
|
||||
* **기반 기술**: [[Vector Embedding|Vector Embedding]], [[Vector Search|Vector Search]], [[BERT|BERT]]
|
||||
* **보완 기술**: [[Hybrid Search|Hybrid Search]] (Keyword + Semantic)
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
@@ -0,0 +1,75 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-VEC-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, vector-db, rag, vector-search, storage]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# [[Vector Database|Vector Database]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "비정형 데이터의 거대한 좌표계: 텍스트나 이미지를 단순 저장하는 것을 넘어, 고차원의 숫자 배열(Vector)로 인덱싱하여 '의미적 유사성'을 기반으로 초고속 검색을 가능하게 하는 AI 시대의 핵심 저장소."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
벡터 데이터베이스는 데이터를 고차원 벡터 공간의 점으로 표현하고 저장하며, 이를 효율적으로 검색하기 위해 설계된 특수 목적의 데이터베이스 시스템입니다.
|
||||
|
||||
1. **핵심 기능 (Core Capabilities)**:
|
||||
* **벡터 저장 및 색인 (Storage & Indexing)**: 고차원 벡터 임베딩을 확장성 있게 저장하고, [[Vector Search|Vector Search]]를 위한 특화된 인덱스(HNSW, IVF 등)를 생성합니다.
|
||||
* **유사도 검색 (Similarity Search)**: 사용자의 질의 벡터와 가장 '가까운' 데이터를 수학적 거리(코사인 유사도 등)를 기반으로 찾아냅니다.
|
||||
* **속성 필터링 (Metadata Filtering)**: 벡터 검색과 함께 전통적인 메타데이터(날짜, 카테고리 등) 필터링을 결합하여 정교한 결과 도출이 가능합니다.
|
||||
|
||||
2. **주요 인덱싱 알고리즘 (ANN - Approximate Nearest Neighbor)**:
|
||||
* **[[HNSW (Hierarchical Navigable Small World)|HNSW]]**: 다층 그래프 구조로 속도와 정확도의 최적의 균형을 제공합니다.
|
||||
* **[[IVF (Inverted File Index)|IVF]]**: 공간을 클러스터로 나누어 검색 범위를 좁히는 방식입니다.
|
||||
* **[[PQ (Product Quantization)|PQ]]**: 벡터를 압축하여 메모리 사용량을 획기적으로 줄입니다.
|
||||
|
||||
3. **대표적인 솔루션**:
|
||||
* **Open Source**: Milvus, Weaviate, Qdrant, Chroma, FAISS(Library)
|
||||
* **Managed/Cloud**: Pinecone, Zilliz
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **컴퓨팅 리소스**: 유사도 계산 및 고차원 인덱스 유지를 위해 높은 CPU/메모리 사양과 리소스 비용이 발생합니다.
|
||||
* **정확도 vs 속도**: 성능을 위해 [[ANN|ANN]] 기법을 사용하면 100% 정확한 결과가 아닌 '근사치'를 반환하므로, 정밀도가 극도로 중요한 도메인에서는 인덱스 설정 튜닝이 필요합니다.
|
||||
* **해석 가능성 부족**: 시스템이 왜 특정 결과를 추천했는지 수학적 거리 외에 논리적인 이유를 설명하기 어렵습니다.
|
||||
|
||||
## 💻 실전 구현 코드 (Boilerplate)
|
||||
Python 환경에서 `ChromaDB`를 활용한 벡터 데이터베이스 구축 예시입니다.
|
||||
|
||||
```python
|
||||
import chromadb
|
||||
from chromadb.utils import embedding_functions
|
||||
|
||||
# 1. 클라이언트 생성 및 컬렉션 초기화
|
||||
client = chromadb.Client()
|
||||
sentence_transformer_ef = embedding_functions.SentenceTransformerEmbeddingFunction(model_name="all-MiniLM-L6-v2")
|
||||
|
||||
collection = client.create_collection(
|
||||
name="antigravity_wiki",
|
||||
embedding_function=sentence_transformer_ef
|
||||
)
|
||||
|
||||
# 2. 데이터 추가 (텍스트 + 메타데이터)
|
||||
collection.add(
|
||||
documents=["RAG는 검색 증강 생성의 약자입니다.", "벡터 DB는 고차원 데이터를 저장합니다."],
|
||||
metadatas=[{"category": "AI"}, {"category": "Infrastructure"}],
|
||||
ids=["id1", "id2"]
|
||||
)
|
||||
|
||||
# 3. 유사도 검색 실행
|
||||
results = collection.query(
|
||||
query_texts=["RAG가 뭐야?"],
|
||||
n_results=1
|
||||
)
|
||||
|
||||
print(f"Top Result: {results['documents'][0][0]}")
|
||||
print(f"Confidence (Distance): {results['distances'][0][0]}")
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
* **기반 기술**: [[Vector Embedding|Vector Embedding]], [[Vector Search|Vector Search]], [[Semantic Search|Semantic Search]]
|
||||
* **활용 아키텍처**: [[Retrieval-Augmented Generation (RAG)|RAG]], [[Recommendation System|추천 시스템]]
|
||||
* **핵심 알고리즘**: [[ANN|ANN (Approximate Nearest Neighbor)]], [[HNSW|HNSW]], [[Cosine Similarity|Cosine Similarity]]
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
@@ -0,0 +1,71 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-EMB-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, embedding, nlp, vector-space, transformer]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# [[Vector Embedding|Vector Embedding]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "데이터의 지문: 비정형 데이터(텍스트, 이미지 등)를 AI가 이해할 수 있는 고정된 길이의 숫자 배열로 변환하여, 컴퓨터가 정보의 '의미적 거리'를 계산할 수 있게 만드는 번역 과정."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
벡터 임베딩은 이산적인 데이터(예: 단어, 문장, 이미지)를 연속적인 다차원 벡터 공간의 점으로 변환하는 수치화된 표현 방식입니다.
|
||||
|
||||
1. **핵심 개념 (Key Concepts)**:
|
||||
* **의미론적 보존 (Semantic Preservation)**: 의미가 유사한 데이터들은 벡터 공간상에서도 서로 가깝게 위치하도록 학습됩니다 (예: '왕'-'남자' ≈ '여왕'-'여자').
|
||||
* **고차원 표현 (High-dimensional Representation)**: 수백에서 수천 차원의 공간을 사용하여 데이터의 미세한 특징(Feature)들을 포착합니다.
|
||||
* **밀집 벡터 (Dense Vector)**: 대부분의 값이 0인 Sparse Vector(예: One-hot encoding)와 달리, 대부분의 차원이 의미 있는 실수값으로 채워져 정보 밀도가 높습니다.
|
||||
|
||||
2. **임베딩 모델의 진화**:
|
||||
* **Static Embeddings**: Word2Vec, GloVe (문맥에 관계없이 동일한 단어는 동일한 벡터로 변환).
|
||||
* **Contextual Embeddings**: [[BERT]], GPT (문맥에 따라 단어의 의미와 벡터가 변화).
|
||||
|
||||
3. **임베딩 생성 프로세스**:
|
||||
* 입력 데이터 → 사전 학습된 모델(Encoder) → 고정 길이 벡터(Latent Space) → [[Vector Database|Vector Database]] 저장.
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **모델 의존성**: 어떤 임베딩 모델(OpenAI `text-embedding-3`, `all-MiniLM-L6-v2` 등)을 사용하느냐에 따라 검색 성능과 비용이 천차만별입니다.
|
||||
* **의미적 간극 (Semantic Gap)**: 모델이 학습하지 못한 도메인 특화 단어나 약어는 잘못된 벡터로 변환되어 검색 실패를 유발할 수 있습니다.
|
||||
* **차원의 저주 (Curse of Dimensionality)**: 차원이 너무 높으면 계산 복잡도가 기하급수적으로 늘어나고 유사도 측정이 모호해질 수 있습니다.
|
||||
|
||||
## 💻 실전 구현 코드 (Boilerplate)
|
||||
`sentence-transformers`를 활용하여 텍스트를 임베딩으로 변환하는 가장 기본적인 방법입니다.
|
||||
|
||||
```python
|
||||
from sentence_transformers import SentenceTransformer
|
||||
import numpy as np
|
||||
|
||||
# 1. 모델 로드 (경량화된 다국어 지원 모델 추천)
|
||||
model = SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2')
|
||||
|
||||
# 2. 텍스트 데이터 준비
|
||||
sentences = [
|
||||
"AI는 지식 수집의 효율성을 혁신합니다.",
|
||||
"인공지능은 데이터 분석을 고도화합니다.",
|
||||
"오늘 점심 메뉴는 무엇입니까?"
|
||||
]
|
||||
|
||||
# 3. 임베딩 생성
|
||||
embeddings = model.encode(sentences)
|
||||
|
||||
# 4. 코사인 유사도 계산 (첫 번째와 두 번째 문장 비교)
|
||||
def cosine_similarity(a, b):
|
||||
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
|
||||
|
||||
sim = cosine_similarity(embeddings[0], embeddings[1])
|
||||
print(f"Similarity (AI vs AI): {sim:.4f}")
|
||||
|
||||
diff = cosine_similarity(embeddings[0], embeddings[2])
|
||||
print(f"Similarity (AI vs Lunch): {diff:.4f}")
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
* **상위 개념**: [[Natural Language Processing (NLP)|NLP]], [[Machine Learning (Machine Learning)|Machine Learning]]
|
||||
* **활용 기술**: [[Vector Database|Vector Database]], [[Vector Search|Vector Search]], [[Semantic Search|Semantic Search]]
|
||||
* **관련 기법**: [[BERT|BERT]], [[TF-IDF|TF-IDF]] (Sparse Baseline)
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
@@ -0,0 +1,67 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-VSR-001
|
||||
category: AI_and_ML
|
||||
confidence_score: 1.00
|
||||
tags: [auto-reinforced, vector-search, ann, semantic-similarity, information-retrieval]
|
||||
last_reinforced: 2026-05-04
|
||||
---
|
||||
|
||||
# [[Vector Search|Vector Search]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "키워드 매칭에서 의미 매칭으로: 단순한 단어의 일치 여부를 넘어, 고차원 벡터 공간에서의 거리를 계산함으로써 사용자의 '의도'와 가장 유사한 맥락의 정보를 찾아내는 수학적 검색 기법."
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
벡터 검색(Vector Search)은 데이터를 다차원 공간의 벡터로 표현하고, 질의 벡터와의 거리(Similarity)를 계산하여 가장 관련성 높은 항목을 반환하는 기술입니다.
|
||||
|
||||
1. **전통적 검색 vs 벡터 검색**:
|
||||
* **전통적 검색 ([[Keyword Search|Keyword Search]])**: 단어의 존재 유무(TF-IDF, BM25)에 의존합니다. '사과'를 검색하면 'Apple'이 포함된 문서를 놓칠 수 있습니다.
|
||||
* **벡터 검색 ([[Semantic Search|Semantic Search]])**: 의미적 유사성을 파악합니다. '아이폰 제조사'를 검색해도 'Apple' 관련 문서를 정확히 찾아낼 수 있습니다.
|
||||
|
||||
2. **핵심 알고리즘: [[ANN (Approximate Nearest Neighbor)|ANN]]**:
|
||||
대규모 데이터셋에서 모든 벡터를 전수 조사(Brute-force)하는 것은 불가능하므로, 근사치를 빠르게 찾는 알고리즘을 사용합니다.
|
||||
* **[[HNSW|HNSW]]**: 노드 간의 근접 그래프를 계층적으로 구성하여 고속 탐색을 지원합니다.
|
||||
* **[[Product Quantization (PQ)|PQ]]**: 벡터를 압축하여 메모리 효율성을 극대화합니다.
|
||||
* **[[IVF|IVF]]**: 공간을 클러스터로 분할하여 검색 범위를 국소화합니다.
|
||||
|
||||
3. **유사도 측정 지표 (Distance Metrics)**:
|
||||
* **Cosine Similarity**: 두 벡터 사이의 각도를 측정 (가장 널리 사용).
|
||||
* **Euclidean Distance (L2)**: 두 점 사이의 직선 거리를 측정.
|
||||
* **Dot Product**: 벡터의 크기와 방향을 모두 고려.
|
||||
|
||||
## ⚖️ Trade-offs & Caveats
|
||||
* **정확도와 속도의 균형**: [[ANN|ANN]] 알고리즘을 사용하면 검색 속도는 비약적으로 빨라지지만, 100% 완벽한 최적해를 보장하지 못하는 트레이드오프가 발생합니다.
|
||||
* **컴퓨팅 오버헤드**: 벡터 변환(Embedding) 및 고차원 연산 과정에서 기존 검색 대비 훨씬 많은 리소스를 소모합니다.
|
||||
* **단순 쿼리의 비효율성**: 모델명이나 특정 ID 검색과 같은 Exact Match 작업에서는 오히려 전통적인 [[BM25|BM25]]보다 느리거나 부정확할 수 있습니다. (이 때문에 최근에는 두 방식을 결합한 [[Hybrid Search|Hybrid Search]]가 권장됩니다.)
|
||||
|
||||
## 💻 실전 구현 코드 (Boilerplate)
|
||||
`scikit-learn`을 사용하여 두 벡터 간의 유사도를 측정하는 핵심 로직 예시입니다.
|
||||
|
||||
```python
|
||||
from sklearn.metrics.pairwise import cosine_similarity
|
||||
import numpy as np
|
||||
|
||||
# 1. 예시 벡터 (임베딩 모델에서 출력된 값이라고 가정)
|
||||
query_vector = np.array([[0.1, 0.2, 0.8]]) # "인공지능 지식"
|
||||
doc_vector_1 = np.array([[0.12, 0.18, 0.75]]) # "AI 지식 강화"
|
||||
doc_vector_2 = np.array([[0.9, 0.1, 0.05]]) # "오늘의 날씨"
|
||||
|
||||
# 2. 유사도 계산
|
||||
sim_1 = cosine_similarity(query_vector, doc_vector_1)
|
||||
sim_2 = cosine_similarity(query_vector, doc_vector_2)
|
||||
|
||||
print(f"Similarity with Doc 1 (Related): {sim_1[0][0]:.4f}")
|
||||
print(f"Similarity with Doc 2 (Unrelated): {sim_2[0][0]:.4f}")
|
||||
|
||||
# 3. 결과 해석
|
||||
if sim_1 > 0.85:
|
||||
print("문맥적으로 매우 유사한 문서입니다.")
|
||||
```
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
* **기반 기술**: [[Vector Embedding|Vector Embedding]], [[Vector Database|Vector Database]]
|
||||
* **활용 분야**: [[Retrieval-Augmented Generation (RAG)|RAG]], [[Semantic Search|Semantic Search]], [[Hybrid Search|Hybrid Search]]
|
||||
* **고도화 알고리즘**: [[ANN|ANN]], [[HNSW|HNSW]], [[Product Quantization|PQ]]
|
||||
|
||||
---
|
||||
*Last updated: 2026-05-04*
|
||||
Reference in New Issue
Block a user