답변을 생성할때 필요한 데이터는 ⇒ 사용자가 원하는 정보
1.
사용자의 질문과 관련있는 데이터
a.
관련이 있다는 것을 어떻게 판단할까?
b.
관련성 파악을 위해 vector를 활용함
i.
단어 또는 문장의 유사도를 파악해서 관련성을 측정함
2.
Vector를 생성하는 방법
a.
Embedding 모델을 활용해서 vector를 생성함 (openai의 embedding모델)
b.
문장에서 비슷한 단어가 자주 붙어있는 것을 학습
i.
왕은 왕자의 아버지다
ii.
여왕은 왕자의 어머니다
c.
“왕자의”라는 단어 앞에 등장하는 “왕”과 “여왕”은 관련이 있을 가능성이 높다.
Vector Database
1.
Embedding 모델을 활용해 생성된 vector를 저장
a.
단순히 vector만 저장하면 안되고 metadata도 같이 저장
i.
이 항목이 상당히 중요함
ii.
문서의 이름, 페이지 번호 등등을 같이 저장 → LLM이 생성하는 답변의 퀄리티가 상승함
2.
Vector를 대상으로 유사도 검색 실시
a.
사용자의 질문과 가장 비슷한 문서를 가져오는 것 → Retrieval
i.
소득세법을 RAG의 지식 베이스로 활용할 예정
ii.
문서 전체를 활용하면 속도도 느리고, 토큰 수 추가로 답변 생성이 안될 수도 있음
iii.
문서를 chunking 나눠서 저장해야함
•
LangChain 공식문서 : Split, Store (나눠서 저장)
b.
가져온 문서를 prompt를 통해 LLM에 제공 - Augmented
c.
LLM은 prompt를 활용해서 답변 생성 - Generation
upstage embedding 추천
•
upstage console 구글 검색 > api key 발급
•
(영문)king과 (한글)왕의 유사도 → 0.55
•
upstage 사용시 → 0.85
⇒ 한글 embedding 사용시 upstage model 추천!


