프로젝트 내 챗봇 기능을 만들기 위해 공부한 내용을 정리하였습니다.
임베딩과 벡터
문장 → 숫자열로 바꾸는 이유
- 컴퓨터는 숫자만 이해할 수 있기 때문에, 글자나 단어, 문장 하나하나를 벡터라는 숫자 배열로 바꾸어 저장한다.
임베딩 벡터란?
- 임베딩 : 단어, 문장 의미를 숫자로 표현하는 기법
- 벡터 : [0.12, -0,34 …] 처럼 생긴 일종의 좌표로
- 차원이 높을 수록 더 섬세한 의미 표현 가능
- 사과와 배의 벡터는 가깝고, 사과와 자동차의 벡터는 멀다
왜 사용할까?
- 문장 간 의미 유사도를 벡터 사이의 거리로 계산할 수 있다.
- 가까운 (의미가 비슷한)문장을 찾거나
- 사용자의 질문과 가장 비슷한 공시, 뉴스 문서를 빠르게 고를때 활용한다.
RAG (Retrieval-Augmented Generation)
RAG의 전체 그림
1. Retrieval (검색)
- 사용자의 질문을 임베딩 →
- 벡터 DB에 물어서, 가장 비슷한 문서 3개를 꺼냄
2. Augmented(보강)
- 꺼낸 문서 내용을(발췌) ‘추가정보’로 LLM (ex. Chat cpt)에 전달
- 이 대회에서는 이 부분이 하이퍼x가 될려나??
3. Generation(생성)
- LLM이 이 문서들을 참고해서 질문에 답해줘.라고 지시 →
- 자연어(한국어) 답병늘 만들어냄)
단계별 비유
- 문장 임베딩 → 지도 위에 고객의 질문을 좌표로 찍기
- 검색 → 지도에서 가장 가까운 레스토랑 3개 찾기
- 문서보강 → 그 식당의 메뉴판을 출력해서 주방장에게 보여주기
- 생성 → 주방장이 메뉴를 참고해서, 이게 오늘의 특선 설명
개발중인 서비스 내 사용 예시 흐름
사용자
- 이번달 예상 배당금액은?
보강
- 추출된 문서 (공시요약, ETF보고서, 채권 전망)등을 발췌문으로 LLM에게 전달
생성
- LLM이 이번달 예상 배당은 약 210만원입니다. 근거 … 형태로 자연어 문장 작성
'Server > 공부' 카테고리의 다른 글
[Server/공부] GraphQL이란? REST와 비교 (4) | 2025.08.10 |
---|---|
[Spring/프로젝트] 교정 좋아요 여부 조회 최적화: N+1 문제 해결하기 (0) | 2025.07.22 |
[서버/공부] 데이터베이스 설계 및 정규화 이론 (0) | 2024.11.05 |