오늘 모 회사 면접을 갔는데.. LLM을 통해서 B2B 솔루션을 개발하는 회사였다. 사실 LLM에 대해서는 아무 생각이 없었는데 좀 찾아보다보니까 너무 재밌어 보이는 거다. 그래서 오늘부터 아주아주 단기간 안에 LLM 어플리케이션을 하나 개발해보는 것을 목표로 한다. 파이썬 써보긴 했지만 너무 옛날이고 너무 야매로 해서 잘 기억이 안나는데 잘 해낼 수 있겠지!
RAG는 LLM 어플리케이션에서 진짜 중요한 개념인데 NLP부터 사용했던 개념이다. 우리말로 풀어서 설명하면 검색-증강-생성이라고 한다.
Retrieval (검색 단계)
-유저가 질문을 던지면,
-검색 시스템이 외부 데이터베이스나 문서에서 관련된 정보 검색
-예: Wikipedia나 내부 데이터베이스에서 문서 찾기
-데이터를 가져오는 것
-컴퓨터 시스템에 저장된 자료를 취득하는 것
-우리가 필요로 하는 데이터를 잘 가져오는 것
-언어모델이 가지고 있지 않은 데이터를 가져오는 것 -> 언어모델이 아웃풋을 만드는 데 필요한 정보를 제공
Augmented
-마치 사실인 것처럼!
-LLM에게 정보를 주면서 마치 이 정보를 아는 것처럼 답변하도록 하는 것
Generation (생성 단계)
-검색된 정보 바탕으로 대형 언어 모델이 응답 생성
-정보를 활용해 구체적이고 신뢰성 있는 답변 제공
-학습된 데이터 외의 정보까지 활용 가능
-최신 정보나 외부 문서 기반으로 보다 정확한 응답 가능
질문: "2024년 현재 서울 날씨는?"
-retrieval: 날씨 관련 API 또는 최신 기사를 검색
-generation: 검색한 정보를 바탕으로 "현재 서울은 맑고 온도는 20도입니다."와 같은 응답 생성
R-A 까지가 개발자의 역할이다. G는 LLM이 하는 것. 개발자는 데이터를 잘 가져와서 잘 저장해야 한다. 잘 전달하려면 프롬프트를 잘 활용해야 하고. 랭체인은 자체적으로 프롬프트를 많이 테스트한 다음 적합한 프롬프트들을 많이 제공하고 있다. 이것이 랭체인 활용의 이점.