본문 바로가기
Python

[RAG] Vector Database 알아보기

by 잉나영 2024. 9. 27.
반응형

[사용자가 원하는 정보]

 

1. 사용자의 질문과 관련있는 데이터

 a. 관련이 있다는 것을 어떻게 판단할까?

 b. 관련성 파악을 위해 vector를 활용함

  ㄱ. 단어 또는 문장의 유사도를 파악해서 관련성을 측정함

 

2. Vector를 생성하는 방법

 a. Embedding 모델을 활용해서 vector를 생성함

 b. 문장에서 비슷한 단어가 자주 붙어있는 것을 학습

  ㄱ. 왕은 왕자의 아버지다.

  ㄴ. 여왕은 왕자의 어머니다.

 c. "왕자의"라는 단어 앞에 등장하는 "왕"과 "여왕"은 유사할 가능성이 높다

 

3. Embedding 모델을 활용해 생성된 vector를 저장

 a. 단순히 vector만 저장하면 안되고 metadata도 같이 저장

 ㄱ. 이 항목이 상당히 중요

 ㄴ. 문서의 이름, 페이지 번호 등등을 같이 저장 -> LLM이 생성하는 답변의 퀄리티가 상승함

 

4. Vector를 대상으로 유사도 검색 실시

 a. 사용자의 질문과 가장 비슷한 문서를 가져오는 것 -> Retrieval

  ㄱ. 소득세법을 RAG의 knowledge base로 활용할 예정

  ㄴ. 문서 전체를 활용하면 속도도 느리고, 토큰수 추과로 답변 생성이 안될 수도 있음

  ㄷ. 문서를 chunking, 나눠서 저장해야함

 b. 가져온 문서를 prompt를 통해 LLM에 제공 -> Augmented

 c. LLM은 prompt를 활용해서 답변 생성 -> Generation

 

5. 추가 TIP!

 

upstage를 사용하면 무료 API제공해주면서 임베딩 테스트 가능해짐! 

구글에 upstage 검색 후 api키 받기

한국어 사용 시 upstage embedding을 활용할 것

openai embedding 모델 사용도 괜찮

아래 참고해서 upstage 사용해보기 !

https://lnylnylnylny.tistory.com/36

반응형