SQLBolt · JOIN 인터랙티브 실습 ↗
두 표를 JOIN한 뒤, JOIN 조건을 바꾸면 결과 행이 어떻게 달라지는지 확인해 보세요.
SQLite → 문서 조각 → 임베딩 → 검색 → RAG → 평가. 직접 움직이는 작은 실험과 외부의 검증된 시각화·튜토리얼을 연결했습니다.
교육용 단순화 사례입니다. 아래의 몬스터·마법 수치와 시각화 좌표는 실제 게임 데이터나 실제 임베딩 모델 출력이 아닙니다. 운영 문서의 경로·주소·DB 식별자·원본 데이터는 포함하지 않았습니다.
기존 문서를 추출·정리·분할하고 숫자 벡터로 표현해 검색 DB에 보관합니다. 질문할 때 이 자료를 다시 찾을 수 있습니다. 답변 LLM의 가중치는 바뀌지 않습니다.
훈련 예제로 모델 가중치를 수정합니다. 최신 문서 추가와 출처 조회를 대신하는 기본 기능으로 혼동하면 안 됩니다.
RAG는 그중 첫 번째 흐름을 이용하여 답변을 생성합니다. 검색 결과를 모델에 근거로 제공하되, 출처가 실제 주장을 뒷받침하는지는 따로 확인합니다.
정확한 DB 검색만 필요한 질문은 마지막 LLM 생성 없이 답할 수 있습니다. 벡터 DB가 원본이나 관계 DB를 완전히 대체하는 것도 아닙니다.
LangChain · RAG 학습 경로 ↗ · 개념·구현 튜토리얼
학습 포인트: Semantic Search와 RAG Agent를 구분하여, 검색 결과를 만들 때와 답변을 만들 때를 나눠 설명해 보세요.
SQL은 개체의 고유 ID를 기준으로 표를 연결합니다. 아이템의 획득처처럼 정확한 관계·수량·NULL이 중요한 질문은 문장 유사도만 보는 것보다 구조화된 DB 조회가 적절할 수 있습니다.
| id | name | hp |
|---|---|---|
| m1 | 연습쥐 | 10 |
| m2 | 연습박쥐 | 20 |
| m3 | 미상몬스터 | NULL |
| monster_id | item |
|---|---|
| m1 → monsters.id | 연습열매 |
| m2 → monsters.id | 연습열매 |
이름이 바뀌어도 ID 연결은 유지할 수 있습니다. JOIN은 두 표의 같은 ID를 맞춰 붙이는 동작입니다.
이 화면은 고정 예시를 JavaScript로 보여 줍니다. 실제 SQLite 실행은 10장의 실습 A에서 합니다.
SQLBolt · JOIN 인터랙티브 실습 ↗ · 브라우저 실습
학습 포인트: 두 표를 JOIN한 뒤, JOIN 조건을 바꾸면 결과 행이 어떻게 달라지는지 확인해 보세요.
문서를 표현하는 벡터와 질문 벡터의 방향·거리를 비교해 관련 문서를 찾습니다. 아래 2차원 예제는 사람이 만든 좌표이며 실제 학습 모델의 고차원 벡터가 아닙니다.
코사인 유사도 = 두 화살표가 같은 방향을 보는 정도.cosine distance = 1 − cosine similarity
실제 vec0는 현재 cosine distance를 사용하며 거리가 작을수록 가깝습니다. 여기서는 각도를 직접 정해 원리를 보여 줍니다. 2차원으로 실제 검색 품질을 재현하지는 않습니다.
먼저 각도를 움직여 회복·공격 문서의 순위 변화를 보세요. 이후 TensorFlow Projector에서 실제 고차원 표현을 2D/3D로 축소해 탐색해 보시면 좋습니다. 단, 차원 축소 그림에서 가까운 점이 모든 원래 차원에서도 항상 가장 가까운 것은 아닙니다.
TensorFlow · Embedding Projector ↗ · 인터랙티브 시각화
학습 포인트: 데모 데이터를 불러와 PCA·t-SNE·UMAP 보기와 데이터 레이블을 전환해 보세요. 2D 배치는 고차원 유사도의 완전한 보증이 아닙니다.
OpenAI · Vector embeddings ↗ · 공식 개념·API
학습 포인트: 벡터 차원과 유사도 사용 사례를 읽고, 질문과 문서 임베딩에 같은 모델 구성이 필요한 이유를 정리해 보세요.
긴 문서 전체를 하나의 벡터로 만들면 세부 항목이 묻힐 수 있고, 아주 짧게 자르면 숫자·조건·부정 표현이 서로 떨어질 수 있습니다.
연습회복술
대상: 자신
조건: 마력 10 이상
효과: HP 30 회복
출처: 교육용 문서 2절
이름·조건·효과가 연결됩니다.
30 회복
누가? 무엇을? 언제?
다음 페이지에는 “실패할 수 있음”
숫자만 잘 검색돼도 조건을 잃으면 오답이 됩니다.
문서의 제목·절·표·조건에 맞춰 조각을 나눌지 판단하고, 각 조각에서 출처와 원문 범위를 역추적할 수 있도록 만듭니다.
Pinecone · Chunking Strategies ↗ · 그림·설명
학습 포인트: 고정 길이 분할과 문서 구조 기반 분할을 비교하고, 조건·효과가 서로 떨어지는 사례를 찾아보세요.
| 모드 | 비교 대상 | 적합한 예 |
|---|---|---|
exact | 정확한 이름·ID | 아이템 ID가 알려졌을 때 |
lexical | 핵심 단어·철자 | 정확한 고유명사나 표현을 포함할 때 |
semantic | 벡터의 의미상 거리 | 이름을 모르고 의미만 설명할 때 |
hybrid | 키워드와 의미 결과를 함께 사용 | 일상적인 혼합 질문에 범용 접근 |
문서 A가 키워드 1위·의미 3위, 문서 B가 키워드 2위·의미 1위일 때:
RRF는 각 채널에서 1/(60 + 순위)를 더합니다. 현재 코드도 이 공식을 쓰지만, 정확 일치·명시 이름 우선과 의미 후보 재정렬이 추가되어 최종 순위가 이 단순 예제와 같지는 않습니다. 출력 score는 확률이 아닙니다.
RRF는 각 검색 방식의 점수 크기가 달라도 순위 자체를 합칠 수 있습니다. 실제 서비스는 이름 우선 규칙이나 후단 재정렬 등을 추가할 수 있습니다.
sqlite-vec · KNN queries ↗ · 공식 SQL 예제
학습 포인트: MATCH·k·distance 조건을 확인하고, 벡터 생성과 벡터 검색의 책임을 구분해 보세요.
Elastic · Hybrid Search ↗ · 그림·개념
학습 포인트: 키워드 검색이 놓치는 질문과 의미 검색이 혼동하는 숫자·고유명사 사례를 각각 하나씩 생각해 보세요.
Elastic · Reciprocal Rank Fusion ↗ · 공식 수식·예제
학습 포인트: 문서의 순위가 1위·3위인 경우와 2위·1위인 경우를 비교하여 RRF가 원점수를 사용하지 않는 이유를 살펴보세요.
Retrieval-Augmented Generation은 검색과 문장 생성을 연결하는 패턴입니다. 예를 들어 ‘어디서 얻나요?’라는 질문에는 근거 문서뿐 아니라 몬스터·드롭·지역 관계가 필요할 수 있습니다.
LangChain · RAG 학습 경로 ↗ · 개념·구현 튜토리얼
학습 포인트: Semantic Search와 RAG Agent를 구분하여, 검색 결과를 만들 때와 답변을 만들 때를 나눠 설명해 보세요.
Arize Phoenix · Tracing Tutorial ↗ · 실행 추적·시각화
학습 포인트: 질문에서 검색·도구 호출·모델 응답까지 span으로 추적하면 어떤 단계의 오류인지 확인할 수 있는지 살펴보세요.
정답 문서가 상위 k개에 들어오는지, 필터 밖의 문서가 섞이지 않는지, 특정 관계가 누락되지는 않는지를 검사합니다.
예: Recall@5, 누락률, 조건별 회귀 테스트
검색된 근거가 실제 답을 뒷받침하는지, 원문에 없는 내용이 추가되지는 않았는지, 출처를 올바르게 인용하는지 검사합니다.
예: Faithfulness, 정답 대조, 인용 적합성 검사
실제 호출을 시각화하는 Phoenix와 평가 메트릭을 설명하는 Ragas를 함께 비교해 보세요. 도구를 도입하지 않고 개념만 학습해도 좋습니다.
Arize Phoenix · Tracing Tutorial ↗ · 실행 추적·시각화
학습 포인트: 질문에서 검색·도구 호출·모델 응답까지 span으로 추적하면 어떤 단계의 오류인지 확인할 수 있는지 살펴보세요.
Ragas · RAG 평가 메트릭 ↗ · 평가 개념·예제
학습 포인트: Context Recall과 Faithfulness가 서로 다른 실패를 측정한다는 점을 사례로 설명해 보세요.
원본 사이트의 자료를 그대로 링크합니다. 이미지·영상·예제 코드를 이 사이트에 복사하거나 재배포하지 않았습니다. 실습에 필요하면 공용 예제 데이터만 사용하시고, 운영 데이터와 API 키는 올리지 마세요.
두 표를 JOIN한 뒤, JOIN 조건을 바꾸면 결과 행이 어떻게 달라지는지 확인해 보세요.
데모 데이터를 불러와 PCA·t-SNE·UMAP 보기와 데이터 레이블을 전환해 보세요. 2D 배치는 고차원 유사도의 완전한 보증이 아닙니다.
벡터 차원과 유사도 사용 사례를 읽고, 질문과 문서 임베딩에 같은 모델 구성이 필요한 이유를 정리해 보세요.
고정 길이 분할과 문서 구조 기반 분할을 비교하고, 조건·효과가 서로 떨어지는 사례를 찾아보세요.
MATCH·k·distance 조건을 확인하고, 벡터 생성과 벡터 검색의 책임을 구분해 보세요.
키워드 검색이 놓치는 질문과 의미 검색이 혼동하는 숫자·고유명사 사례를 각각 하나씩 생각해 보세요.
문서의 순위가 1위·3위인 경우와 2위·1위인 경우를 비교하여 RRF가 원점수를 사용하지 않는 이유를 살펴보세요.
Semantic Search와 RAG Agent를 구분하여, 검색 결과를 만들 때와 답변을 만들 때를 나눠 설명해 보세요.
질문에서 검색·도구 호출·모델 응답까지 span으로 추적하면 어떤 단계의 오류인지 확인할 수 있는지 살펴보세요.
Context Recall과 Faithfulness가 서로 다른 실패를 측정한다는 점을 사례로 설명해 보세요.
위젯 변경으로 재실행될 때 어떤 값이 보존되는지, 새 세션이 열리면 어떻게 다른지 살펴보세요.
각 링크의 개념은 이 공개 교육 예제를 보완하기 위한 것으로, 특정 제품의 정확한 구현이나 검색 결과가 일치한다는 의미는 아닙니다. 외부 사이트의 인터페이스와 URL은 향후 바뀔 수 있습니다.