이제 랙의 가장 중요한 측면에 대해 얘기할 때가 됐습니다 벡터 개념이죠
벡터와 벡터 내장법에 익숙하시다면 잠시만요
빨리 훑어보도록 하죠
몰랐던 걸 알게 될 수도 있어요 제가 설명한 대로요
먼저 중요한 배경 정보가 있습니다 이 과정을 통해 다양한
LMS에 관해 얘기해왔는데요 우리가 얘기한 거의 모든 LMS는 하나의
종류였습니다 자동적 허용 LM이라고 불리는 거죠
LM에는 완전히 다른 범주가 있습니다 자동 코드화라고 하죠
차이가 뭐죠?
LMS 자동 이탈 LMS는 과거의 토큰 세트를 받고 시퀀스에서 다음 토큰을 생성해야
합니다 미래 토큰이요 과거가 주어지죠
계속 반복해서 다음 토큰을 생성하죠
토큰의 역사를 보면 자동적 차별적인 LM이에요
물론 그게 대세죠
우리가 함께 일하는 대부분의 사람들이죠
GPT 4호와 클로드 제미니 계획도 있고요
자동 코드 형식이라는 것도 있습니다 과거와 현재, 미래를 모두 나타내는 완전한
입력을 하죠
입력 비트가 가득하고 입력 전체를 반영하는 출력 비트를 생성하죠
그걸 현실화하려면 몇 가지 확실한 예가 있죠
감정 분석은 문장을 보고 긍정인지 부정인지 판단하는 거예요
분류 구역에서는 문장을 양동이에 담아 Put을 해요
2주 전에 어깅페이스 파이프라인과 관련해 잠깐 탐구한 것들이죠
둘 다 자동 코드 llms의 예죠
또 다른 방법으로 사용되기도 합니다 벡터 내장이라는 것을 생성할 때 사용되죠
오늘 얘기할 게 바로 그거예요
벡터 엠베딩은 텍스트의 문장이나 다른 여러 가지를 취하는 방법인데 보통은 텍스트의
문장이죠
그걸 일련의 숫자로 바꾸는 거죠 어떤 면에선 그 텍스트의 의미를 반영하는
일련의 숫자요
그게 무슨 뜻인지 잠시 후에 살펴보죠
지금은 좀 추상적으로 들리지만 아이디어는 텍스트를 숫자로 변환하는 겁니다
그 숫자들은 공간의 한 점을 나타내는 비트죠
텍스트를 세 개의 숫자로 바꾼다고 해보죠 엑스나 Y, Z로
생각할 수 있어요 이건 공간에서 무언가가 있는 위치를 나타내죠
보통 이렇게 하면 수백, 수천 개의 숫자로 변환돼요
천 차원 공간에 있는 한 지점을 나타내는 거예요
시각화하기가 좀 어렵죠 우린 3차원으로만 생각할 수 있으니까요 하지만
생각은 같죠
공간의 점을 반영하고 어떤 의미에서든 그 점은 자동 인코딩의
예로 생성된 텍스트의 의미를 나타내죠
구글의 버트예요
첫 주에 버트 얘기를 했던 거 기억하시죠?
버트는 꽤 오래 출연했어요
OpenAI의 오픈 인공지능 엠베딩도 있는데 자동 오토 젠코더 모델로
이번 주에 래그 프로젝트에 사용할 거예요
비트 코어의 의미에 대해 좀 더 얘기해 보죠
먼저, 여러분은 단일 문자에 대한 벡터 중 하나를 만들 수 있습니다 토큰이나 다수의 문자
단어, 문장, 단락, 전체 문서에 대한 것 혹은 추상적인 것에
대한 것에요
제 회사, 네뷸라처럼 재능이나 일자리 같은 것의 벡터를 만들어요
이런 벡터들을 작업할 때 수백, 수천 개의 차원이 있는 경우가 많아요
텍스트 한 덩어리를 나타내는 수천 개의 숫자처럼요
이 숫자들이 입력값의 의미를 반영한다고 여러 번 말씀드렸죠
그게 무슨 뜻이죠?
간단히 말해서, 이 말은 여러 단락의 텍스트가 서로 가까운 공간의
비슷한 지점으로 매핑이 된다는 거죠.
이 텍스트 블록들은 비슷한 의미를 가져야 해요
같은 단어를 쓸 필요는 없어요
완전히 다른 단어일 수도 있지만 의미는 같아요
벡터 공간에서 서로 가까워질 거예요 숫자로 바뀔 때 서로 가까워진다는
건 비슷한 걸 의미하죠
그게 기본 아이디어죠
이 이면에는 좀 더 정교한 아이디어가 있어요 이 점을 포함해서요 이런 것들의
의미 뒤에 숨은 벡터 수학이라고 불리는 걸 할 수 있어요
그리고 이 예시가 있습니다. 아주 오래된 예시죠.
들어 보셨을 수도 있는데 킹이라는 단어가 있다고 가정해 봅시다 킹이라는
단어를 가지고 벡터 인코딩을 이용해서 킹이라는 단어를 나타내는 공간의
점을 찾는다고 해보죠
인간이란 단어를 반영하는 벡터도 찾을 수 있죠
여성이라는 단어를 반영하는 벡터도요
킹이라는 단어에서 남자를 빼면 남자가 있는 방향으로
뒤로 가고 여자가 있는 방향으로 전진하는 거예요
당신은 왕이라는 개념을 받아들여서 남자를 여자로 대체하고
싶다고 했어요 즉, 왕이라는 뜻이죠
그리고 놀랍게도 이렇게 하면 벡터 공간에 들어가게 됩니다 퀸이라는
단어가 있는 위치와 같은 위치죠
그러니까 왕이라는 단어에서 왕의 의미를 따지고 남자 측면을 여자로
대체하면 여왕이라는 단어의 의미를 반영하는 무언가가 되는 거죠
그런 점에서 벡터들은 벡터들이 나타내는 단어의 의미를 반영하는 것
같아요 비슷한 단어들이 서로 가까이 있다는 점과 벡터 수학을
수행하는 능력도요 덕분에 개념 간의 관계를 이해할 수 있죠
이게 래그랑 무슨 상관이죠?
여기서 모든 게 합쳐져요
래그의 핵심 아이디어죠
아까와 같은 도표예요
비트보다 더 많은 걸 할 거예요
상단엔 LM 인코딩이라는 새 상자가 있죠
어떤 텍스트를 벡터로 바꿀 수 있는 거죠
맨 밑에는 벡터 데이터 저장소가 있어요
지식 기반 이전에 있던 데이터 저장소 같아요
텍스트와 함께 텍스트를 나타내는 벡터도 저장할 수 있어요 텍스트의 의미를
나타내는 벡터요
좋아요
이렇게 하죠
사용자가 질문을 던지죠
가장 먼저 할 일은 질문을 벡터로 바꾸는 겁니다 벡터화라고도 하죠
에이미 미가 누구냐는 질문이라면요
랭커스터요
에이미 랭커스터가 누구인지를 질문의 의미로 해석하는
거예요
제가 다음에 할 말은 아마 짐작이 가실 거예요
이제 벡터 데이터베이스로 가서 벡터 데이터베이스에서 벡터들이 에이미 랭커스터에 가까운
곳에 있는 정보를 요청합니다 에이미 랭커스터가 누구인가요?
저 안에 있는 다양한 문서들을 보세요
전부 벡터로 만들었어요
에이미 랭커스터가 누구인지 궁금해할 벡터들이 있을 거예요
벡터들을 제공하고 벡터로 바뀐 원래 정보와 텍스트를 제공하죠
에이미 랭커스터의 항공 문서가 벡터와 가까운 곳에 있을 가능성이 높습니다
에이미 랭커스터가 누구죠?
그래서 정보를 얻으면 텍스트를 get 하면 되죠
이전의 장난감 예제처럼 그걸 LLM 프롬프트에 밀어넣으면 응답을 얻습니다
아마도 추가적인 컨텍스트를 이용하겠죠
그게 사용자에게 돌아가는 거죠
장난감 예제와 같지만 관련 데이터를 찾는 데 훨씬 더 강력한 기술을
사용합니다 벡터를 이용해 우리의 지식 중 어떤 것이 질문의 의미와 가장
유사한지 이해하는 거죠
그게 다인 것 같아요
이번 주의 마무리가 되었네요. 왜냐하면 다음 시간에는 이것을 action에 넣고
데이터베이스에서 벡터를 볼 것이기 때문이죠.
다음엔 랭 체인이라는 것도 살펴볼 겁니다 프레임워크가 훌륭하죠
이런 응용 프로그램을 쉽게 만들도록 디자인됐어요
전부 수동으로 할 수 있어요
벡터를 생성해 다양한 API를 이용해 벡터 데이터베이스에 저장할 수 있죠
랑 체인은 아주 간단해요 곧 보시겠지만요
그래디오 경험과 좀 비슷할 겁니다 코드 두어 줄로 아주
강력한 걸 하는 거죠
그래서 기대돼요
당신도 그랬으면 좋겠네요
그때 봐요