From the uDemy course on LLM engineering.
https://www.udemy.com/course/llm-engineering-master-ai-and-large-language-models
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
736 lines
20 KiB
736 lines
20 KiB
WEBVTT |
|
|
|
00:00.620 --> 00:06.080 |
|
JupyterLab의 이번 세션을 기대하시기 바랍니다 드디어 벡터를 |
|
|
|
00:06.110 --> 00:07.640 |
|
직접 보게 되니까요 |
|
|
|
00:07.670 --> 00:13.220 |
|
여러분은 5주 차 폴더에 있고 3일째에 있습니다 어느 때보다 |
|
|
|
00:13.250 --> 00:15.710 |
|
저를 따라오게 될 거예요 |
|
|
|
00:15.710 --> 00:19.910 |
|
이 예제에선 시각적으로 중요하고, 실제로 어떻게 진행되는지 감을 잡을 수 있기 때문에 중요하죠. |
|
|
|
00:19.910 --> 00:20.960 |
|
Get it. |
|
|
|
00:20.960 --> 00:25.940 |
|
이건 전날의 복사본에 더 추가된 거예요 |
|
|
|
00:25.940 --> 00:33.380 |
|
자, 가져오기부터 시작해보죠 가져오기에 추가된 것은 우리가 다룰 특별한 기능들이고요 |
|
|
|
00:33.380 --> 00:33.920 |
|
오늘요 |
|
|
|
00:33.920 --> 00:41.960 |
|
OpenAI 엠디딩을 가져올 겁니다 랑랑 체인 OpenAI 패키지의 일부죠 |
|
|
|
00:42.230 --> 00:45.860 |
|
랑 체인 크로마를 가져올 거예요 |
|
|
|
00:46.130 --> 00:50.690 |
|
그리고 불러올 것이 몇 가지 있어요 재미있게 실제로 이 벡터들을 |
|
|
|
00:50.690 --> 00:56.180 |
|
시각화할 수 있도록요 t-SNE라는 거죠 나중에 얘기할 거예요 그리고 |
|
|
|
00:56.180 --> 00:59.720 |
|
플롯리에서는 멋진 다이어그램을 줄 거예요 |
|
|
|
00:59.720 --> 01:01.750 |
|
불러오기를 해보죠 |
|
|
|
01:02.380 --> 01:07.120 |
|
좋아요, 상수를 실행해보죠 |
|
|
|
01:07.120 --> 01:09.040 |
|
환경 변수를 불러오는 거죠 |
|
|
|
01:09.040 --> 01:11.440 |
|
이제 아주 익숙해지셨겠죠 |
|
|
|
01:11.470 --> 01:14.440 |
|
로더를 이용해 지식 기반을 실을 거예요 |
|
|
|
01:14.440 --> 01:20.920 |
|
텍스트 분할기를 이용해 덩어리를 만들 건데, 123개예요 |
|
|
|
01:20.920 --> 01:27.730 |
|
4개의 폴더 각각에 구획이 있어요 계약, 제품, 직원, 회사 |
|
|
|
01:28.300 --> 01:35.110 |
|
한 번 더 삽입과 자동 역행 LMS에 대해 상기시켜 드리고 싶네요 지금까지 코스 |
|
|
|
01:35.110 --> 01:40.030 |
|
대부분에서 자동 역행 LMS에 대해 얘기했었죠 |
|
|
|
01:40.060 --> 01:46.120 |
|
자동 인코딩 LMS를 처음으로 살펴보겠습니다 전체 입력을 가져다가 하나의 출력을 |
|
|
|
01:46.120 --> 01:49.660 |
|
생성하기 위해 사용하죠 우리 경우엔 벡터죠 |
|
|
|
01:50.140 --> 01:53.890 |
|
자동 인코딩 경보의 예가 버트죠 |
|
|
|
01:53.920 --> 01:56.380 |
|
이걸 사용할 거예요 |
|
|
|
01:56.410 --> 01:58.000 |
|
오픈아이 삽입구죠 |
|
|
|
01:58.210 --> 01:59.280 |
|
실행해 보죠 |
|
|
|
01:59.520 --> 02:00.420 |
|
네 |
|
|
|
02:00.420 --> 02:05.010 |
|
크로마 데이터 저장소를 만들 거예요 |
|
|
|
02:05.310 --> 02:10.770 |
|
여기 이 부분을 집어넣었어요 이미 있는 데이터베이스를 지우거나 비우기 위해서요 |
|
|
|
02:10.800 --> 02:15.480 |
|
그렇지 않으면 코드를 실행할 때마다 벡터가 추가됩니다. 벡터 모음이 중복되어서 |
|
|
|
02:15.480 --> 02:17.520 |
|
혼란스러워져요. |
|
|
|
02:17.520 --> 02:20.760 |
|
데이터베이스를 새로 고침하는 데 도움이 되죠 |
|
|
|
02:20.760 --> 02:25.800 |
|
여러분이 이미 한 번 실행했다면∙∙∙ 저도 이미 한두 번 실행했다고 상상하실 수 있죠 그러니 |
|
|
|
02:25.800 --> 02:27.090 |
|
이건 제게 유용해요 |
|
|
|
02:27.360 --> 02:28.890 |
|
저희가 지울게요 |
|
|
|
02:29.400 --> 02:37.350 |
|
벡터 db 음 이 폴더에 있어요 그냥 db 이름이죠 상수예요 DB 이름이 |
|
|
|
02:37.350 --> 02:41.340 |
|
벡터 DB라고 표시해뒀어요 |
|
|
|
02:41.370 --> 02:45.480 |
|
SQLite 기반의 뭐든 될 수 있어요 |
|
|
|
02:45.510 --> 02:49.440 |
|
여길 보면 SQLite 관련 작업이 진행 중이죠 |
|
|
|
02:49.440 --> 02:55.950 |
|
여러 개의 다른 파일들이 있는 거죠 여러분이 부여하고자 선택한 데이터베이스 이름 |
|
|
|
02:55.950 --> 02:56.730 |
|
내에요 |
|
|
|
02:56.730 --> 02:58.730 |
|
이 경우엔 벡터 db죠 |
|
|
|
02:59.660 --> 03:06.170 |
|
이제 벡터 데이터베이스를 생성하고 벡터로 채울 차례군요 |
|
|
|
03:06.170 --> 03:08.930 |
|
또 다른 그러디오 순간을 보여드리죠 |
|
|
|
03:08.930 --> 03:14.870 |
|
여러분은 문서들을 벡터화하고 벡터 데이터베이스에 저장하는 프로세스가 |
|
|
|
03:14.870 --> 03:19.670 |
|
꽤나 복잡할 거라고 생각하실 수도 있습니다 적어도 여러 개의 |
|
|
|
03:19.700 --> 03:21.740 |
|
셀이 있을 거라고 말이죠 |
|
|
|
03:21.980 --> 03:27.200 |
|
물론 한 셀에서 할 수도 있고 한 줄의 코드에서도 할 수 있어요 |
|
|
|
03:27.200 --> 03:34.010 |
|
랭 체인이 접착 코드를 많이 발라서 가능했어요 |
|
|
|
03:34.040 --> 03:39.560 |
|
수동으로 하는 건 그리 어렵지 않아요 반복하기 위해서요 이런 각각의 |
|
|
|
03:39.560 --> 03:44.900 |
|
삽입을 각각의 덩크마다 벡터로 전환해 크로마에 저장하는 거죠 4, |
|
|
|
03:44.900 --> 03:46.970 |
|
5줄이면 될 거예요 |
|
|
|
03:47.060 --> 03:50.870 |
|
이렇게 한 번에 하면 훨씬 간단해요 |
|
|
|
03:50.870 --> 03:55.490 |
|
이것과 관련해 또 다른 장점은 다른 벡터 데이터 저장소를 시도하면 |
|
|
|
03:55.490 --> 04:00.280 |
|
랭 체인에서 불러온 다른 벡터 저장소와 같은 겁니다 여러분도 시도해 |
|
|
|
04:00.280 --> 04:01.630 |
|
보세요 |
|
|
|
04:01.630 --> 04:06.700 |
|
이 라인을 실행해 볼게요 실행됐네요 |
|
|
|
04:06.700 --> 04:11.200 |
|
벡터 스토어는 123개의 문서가 만들어졌죠 |
|
|
|
04:11.200 --> 04:14.800 |
|
그 말을 들으니 안심이 되네요 덩어리 수가 123개였거든요 |
|
|
|
04:14.800 --> 04:21.040 |
|
벡터 데이터 저장소에 같은 수의 문서가 있다는 건 좋은 일이죠 |
|
|
|
04:21.520 --> 04:26.950 |
|
크롬을 생성하고 돌아온 벡터 스토어 객체를 발견할 수 있었습니다 |
|
|
|
04:26.950 --> 04:33.880 |
|
덩크와 OpenAI 엠베딩을 전달했습니다 간단하게 데이터베이스의 |
|
|
|
04:33.880 --> 04:35.860 |
|
이름을요 |
|
|
|
04:35.860 --> 04:40.060 |
|
그게 우리가 제공한 3가지예요 완전히 말이 되죠 |
|
|
|
04:40.090 --> 04:42.820 |
|
벡터 스토어를 생성하는데 필요한 건 그게 다죠 |
|
|
|
04:42.820 --> 04:50.170 |
|
벡터 스토어는 get_Cetting.Count라고 호출할 수 있습니다 벡터 스토어 내 문서의 수를 |
|
|
|
04:50.170 --> 04:51.220 |
|
얻기 위해서요 |
|
|
|
04:51.850 --> 05:04.380 |
|
벡터들의 크기가 얼마나 되는지 알아봅시다. 이것으로 컬렉션으로부터 벡터를 얻을 수 있어요. |
|
|
|
05:04.410 --> 05:10.650 |
|
그래서 컬렉션은 이 밑줄 get을 호출하면 얻게 되는 거죠 벡터 스토어의 |
|
|
|
05:10.650 --> 05:11.640 |
|
특성 |
|
|
|
05:11.640 --> 05:14.040 |
|
그런 다음 .get을 호출하죠 |
|
|
|
05:14.070 --> 05:15.300 |
|
한계를 넘을 수 있어요 |
|
|
|
05:15.300 --> 05:16.380 |
|
우린 한 명만 원해요 |
|
|
|
05:16.380 --> 05:20.550 |
|
벡터인 내장들을 불러오길 원하죠 |
|
|
|
05:20.760 --> 05:26.490 |
|
그리고 그걸 살펴보고 얼마나 큰지 볼 거예요 |
|
|
|
05:26.490 --> 05:30.180 |
|
1536차원이에요 |
|
|
|
05:30.180 --> 05:34.920 |
|
1536개의 숫자가 이 덩어리를 이루죠 |
|
|
|
05:34.920 --> 05:38.850 |
|
우리가 직접 보죠 그냥 프린트할 수 있게요 |
|
|
|
05:38.850 --> 05:43.260 |
|
삽입 샘플을 인쇄해서 어떤지 보죠 |
|
|
|
05:43.890 --> 05:44.430 |
|
놀랍네요 |
|
|
|
05:44.430 --> 05:45.810 |
|
숫자가 많네요 |
|
|
|
05:46.080 --> 05:48.000 |
|
숫자가 많네요 |
|
|
|
05:48.030 --> 05:51.360 |
|
당신과 나에겐 무의미해요 |
|
|
|
05:51.540 --> 05:54.770 |
|
하지만 이 숫자들은 어떤 식으로든 그래요 |
|
|
|
05:55.460 --> 06:02.450 |
|
이 숫자들은 어떤 식으로든 숫자와 관련된 덩어리의 의미를 반영해요 |
|
|
|
06:02.450 --> 06:03.230 |
|
두고 봐야죠 |
|
|
|
06:03.650 --> 06:06.560 |
|
잠시 후 덩어리랑 연결시켜 보죠 |
|
|
|
06:07.370 --> 06:09.140 |
|
숫자가 엄청나요 |
|
|
|
06:09.140 --> 06:17.480 |
|
1536개의 숫자로 1536차원 공간의 좌표를 해석할 수 있어요 |
|
|
|
06:17.720 --> 06:24.830 |
|
그 좌표가 선택되면 비슷한 좌표를 가진 다른 벡터들이 벡터 공간에서 |
|
|
|
06:24.830 --> 06:28.790 |
|
비슷한 의미를 갖는 거죠 |
|
|
|
06:28.790 --> 06:30.740 |
|
그게 이 요리의 핵심이죠 |
|
|
|
06:30.980 --> 06:34.940 |
|
잠시 시각화해 보죠 |
|
|
|
06:34.940 --> 06:37.640 |
|
댓글을 없애면 좋을 것 같아요 Get it |
|
|
|
06:37.640 --> 06:44.960 |
|
좋은 방법이 될 거예요 무대 뒤에서 무슨 일이 일어나는지 제대로 조사할 수 있는 |
|
|
|
06:44.960 --> 06:46.070 |
|
방법이죠 |
|
|
|
06:46.070 --> 06:53.320 |
|
컬렉션겟티에 전화해 메타데이터와 문서 내장 정보를 요청할 수 있어요 |
|
|
|
06:53.320 --> 06:56.320 |
|
일단 그렇게 하고 나면 벡터들을 put 할 수 있어요 |
|
|
|
06:56.320 --> 07:03.010 |
|
박아둔 것들을 벡터들의 배열에 넣을 수 있습니다. doc 타입을 doc 타입이라는 것에 |
|
|
|
07:03.010 --> 07:04.720 |
|
넣을 수 있어요. |
|
|
|
07:04.720 --> 07:07.960 |
|
이제 색을 좀 만들어 볼게요 |
|
|
|
07:07.990 --> 07:10.300 |
|
Get it get get it 사전 작업이에요 |
|
|
|
07:10.600 --> 07:18.400 |
|
한 가지 문제가 있습니다 인간은 결점이 있는데 모든 걸 3차원 이상으로 |
|
|
|
07:18.430 --> 07:22.360 |
|
시각화하는 데 문제가 있다는 거죠 |
|
|
|
07:22.360 --> 07:27.610 |
|
1536차원으로 시각화하는 건 정말 어려운 일이에요 |
|
|
|
07:27.670 --> 07:34.360 |
|
다행히 다양한 기술을 활용할 수 있어요 하향 투사라는 걸 하는데 차원을 |
|
|
|
07:34.360 --> 07:41.290 |
|
2차원으로만 축소하는 거죠 그렇게 하면 사물을 분리하는 데 가장 효과적인 |
|
|
|
07:41.290 --> 07:47.680 |
|
방법으로 다차원적 표현에 충실할 수 있어요 |
|
|
|
07:47.680 --> 07:52.860 |
|
그래서 모든 면에서 좀 더 멀리 떨어져 있는 걸 만들려 하면 2차원으로 |
|
|
|
07:52.860 --> 07:57.780 |
|
투사했을 때도 여전히 꽤 멀리 떨어져 있을 거예요 |
|
|
|
07:58.290 --> 07:59.340 |
|
그게 목적이죠 |
|
|
|
07:59.370 --> 08:03.240 |
|
그에 대한 다양한 기술이 있지만 자세히 다루진 않겠습니다만 저희가 사용할 |
|
|
|
08:03.270 --> 08:04.710 |
|
기술은 아주 일반적인 거죠 |
|
|
|
08:04.710 --> 08:09.660 |
|
t-SNE라고 하는데 T 분산 가설 이웃 침투의 약자죠 구글에 검색하거나 |
|
|
|
08:09.660 --> 08:14.670 |
|
설명을 듣고 싶을 때 챗GPT에 물어보면 나오는 거예요 |
|
|
|
08:15.150 --> 08:19.710 |
|
통과할 때 몇 가지 차원을 원하죠? |
|
|
|
08:19.740 --> 08:24.630 |
|
천 가지에서 2차원으로 영사하는 거죠 |
|
|
|
08:24.630 --> 08:29.790 |
|
이 무작위 상태는 무작위 씨앗을 설정하는 방식이에요 이걸 호출할 때마다 같은 |
|
|
|
08:29.790 --> 08:33.210 |
|
결과가 나와서 이걸 재생산할 수 있죠 get it |
|
|
|
08:33.450 --> 08:41.400 |
|
그러면 감소된 벡터를 얻을 수 있습니다. t-SNE 객체에 대한 get transform 메서드를 호출하면요. |
|
|
|
08:41.820 --> 08:49.770 |
|
이제 멋진 라이브러리 플리틀리를 이용해서 멋진 분산 도표를 만들 거예요 |
|
|
|
08:49.890 --> 08:55.570 |
|
이건 전부 일종의 코드예요 원하는 대로 복사, 붙여넣기, 재사용할 수 |
|
|
|
08:55.570 --> 08:56.170 |
|
있죠 |
|
|
|
08:56.170 --> 09:01.720 |
|
하지만 멋진 걸 했어요 마커에 다른 색을 입혔죠 다양한 |
|
|
|
09:01.720 --> 09:08.260 |
|
문서 유형에 맞춰 설정한 색에 근거해서요 팝업 텍스트도 있어요 |
|
|
|
09:08.290 --> 09:14.560 |
|
청크 자체에서 첫 100개의 글자가 조각으로 나오죠 |
|
|
|
09:14.560 --> 09:20.050 |
|
여기서 보고 싶은 건 문서가 벡터 데이터베이스에서 어떻게 보이는지 보는 거예요 |
|
|
|
09:20.050 --> 09:25.810 |
|
그런 다음 각각의 다른 벡터에 대해 어떤 종류의 문서인지에 따라 색을 입힐 거예요 |
|
|
|
09:25.810 --> 09:27.850 |
|
텍스트 위로 마우스가 떠요 |
|
|
|
09:27.850 --> 09:33.100 |
|
이 비트 조각이 나타내는 텍스트 조각을 읽을 수 있어요 |
|
|
|
09:33.100 --> 09:34.600 |
|
잘 되는지 보죠 |
|
|
|
09:34.600 --> 09:35.800 |
|
그럼 멋지겠네요 |
|
|
|
09:36.370 --> 09:37.420 |
|
당연히 알죠 |
|
|
|
09:37.420 --> 09:38.470 |
|
이미 해 봤어요 |
|
|
|
09:38.530 --> 09:39.580 |
|
여기 있네요 |
|
|
|
09:39.610 --> 09:40.420 |
|
네 |
|
|
|
09:40.420 --> 09:42.040 |
|
이게 뭐죠? |
|
|
|
09:42.670 --> 09:50.670 |
|
다차원 벡터의 시각화를 보고 있는데 2D로 보여줍니다 엑스 축과 Y축의 |
|
|
|
09:50.670 --> 09:53.370 |
|
특별한 의미가 없어요 |
|
|
|
09:53.370 --> 09:59.100 |
|
여러 지점을 분산시킬 수 있는 최선의 방법이죠 |
|
|
|
09:59.190 --> 10:01.560 |
|
몇 가지 알아두셔야 할 게 있어요 |
|
|
|
10:01.560 --> 10:07.500 |
|
여기 보이는 녹색 점들은 직원들을 나타내요 |
|
|
|
10:07.530 --> 10:10.350 |
|
빨간 점은 뭘 의미할까요? |
|
|
|
10:10.530 --> 10:17.730 |
|
여기서 직원이라는 건 직원 문서에서 텍스트를 잔뜩 뽑아낸다는 뜻이에요 |
|
|
|
10:17.760 --> 10:22.020 |
|
빨간 건 계약서에서 나온 텍스트 덩어리예요 |
|
|
|
10:22.050 --> 10:28.830 |
|
파란색은 제품 문서화 노란색은 어바웃 문서화예요 |
|
|
|
10:29.760 --> 10:36.900 |
|
이 시점에서 아셔야 할 마법 같은 게 있어요 OpenAI가 비트를 |
|
|
|
10:36.930 --> 10:44.850 |
|
삽입할 때 텍스트 덩어리를 벡터화할 때 문서 유형을 몰랐어요 |
|
|
|
10:44.850 --> 10:46.830 |
|
메타데이터는 말 안 했어요 |
|
|
|
10:46.830 --> 10:52.190 |
|
여름철 직원, 여름철 제품 여름철 계약에 대해 말하지 않았어요 |
|
|
|
10:52.190 --> 10:55.580 |
|
텍스트 덩어리를 주고 벡터로 바꾸라고 했죠 |
|
|
|
10:55.580 --> 10:57.500 |
|
그게 다였어요 |
|
|
|
10:57.770 --> 11:04.880 |
|
그 덩어리들을 바탕으로 보면 이 덩어리들이 벡터 공간으로 분리되어 |
|
|
|
11:04.880 --> 11:10.730 |
|
공간 내의 다른 영역을 차지하고 있어요 |
|
|
|
11:10.910 --> 11:16.070 |
|
서로 어느 정도 비슷하거든요 내용이나 의미 면에서요 |
|
|
|
11:16.070 --> 11:20.630 |
|
직원들은 모두 같은 영역에 있어요 |
|
|
|
11:20.630 --> 11:26.570 |
|
계약서는 여기 있고 제품은 여기 있어요 |
|
|
|
11:26.690 --> 11:34.820 |
|
일부 계약 정보가 제품과 같은 부근에 있는 걸 눈치채셨을 |
|
|
|
11:34.820 --> 11:37.100 |
|
거예요 |
|
|
|
11:37.100 --> 11:39.290 |
|
잠시 놀라실지도 모르겠네요 |
|
|
|
11:39.290 --> 11:41.210 |
|
뭔가 잘못된 것처럼 보일 수도 있어요 |
|
|
|
11:41.210 --> 11:48.010 |
|
이 덩어리들을 마우스로 가리키면 계약의 특정 텍스트 덩어리란 걸 알 수 있어요 |
|
|
|
11:48.010 --> 11:53.170 |
|
클라이언트가 등록한 핵심 기능을 설명하는 거죠 |
|
|
|
11:53.380 --> 11:56.260 |
|
텍스트를 입력하라고 하는 게 보이시죠 |
|
|
|
11:56.290 --> 12:02.920 |
|
죄송합니다 잠시 마우스로 가리켜보면 텍스트라는 두 번째 줄이 있는데 벡터 공간에 있는 |
|
|
|
12:02.920 --> 12:08.440 |
|
위치에 있는 덩어리를 추출한 것입니다. 하나의 인공지능으로 된 매칭을 |
|
|
|
12:08.440 --> 12:10.420 |
|
볼 수 있는데요. |
|
|
|
12:10.660 --> 12:12.250 |
|
다른 걸 찾아보죠 |
|
|
|
12:12.610 --> 12:17.620 |
|
인공지능 위험 평가 기능이죠 |
|
|
|
12:17.800 --> 12:19.420 |
|
그게 그거죠 |
|
|
|
12:19.870 --> 12:28.420 |
|
여기서 보이는 건 계약 안에 기능성 정보 같은 게 있어요 |
|
|
|
12:28.420 --> 12:35.980 |
|
기능성 물질은 벡터 공간에 존재합니다 다른 제품과 비슷한 공간에 존재하죠 |
|
|
|
12:35.980 --> 12:38.800 |
|
이해가 되셨으면 좋겠네요 |
|
|
|
12:38.830 --> 12:46.890 |
|
다시 말씀드리지만 공간의 올바른 위치를 문서의 의미와 연결하는 건 거의 소름 |
|
|
|
12:46.920 --> 12:49.290 |
|
끼칠 정도로 잘하죠 |
|
|
|
12:49.590 --> 12:56.610 |
|
마지막으로 말씀드릴 요점은 너무 멀리 간 것일 수도 있지만 제가 |
|
|
|
12:56.610 --> 12:59.520 |
|
보기엔 이런 상황 같아요 |
|
|
|
12:59.550 --> 13:04.260 |
|
보시면 회사 관련 서류가 세 장 있어요 |
|
|
|
13:04.440 --> 13:07.380 |
|
여기 이 세 개가 중앙에 있어요 |
|
|
|
13:07.410 --> 13:10.290 |
|
여러 문서들 가운데에 있어요 |
|
|
|
13:10.290 --> 13:17.580 |
|
그건 일부 정보를 포함하고 있기 때문이라고 봅니다 |
|
|
|
13:17.580 --> 13:23.370 |
|
직원과 계약 제품과 관련된 정보요 |
|
|
|
13:23.580 --> 13:28.080 |
|
모든 것과 관련된 중심 정보 같은 거죠 |
|
|
|
13:28.080 --> 13:34.950 |
|
그래서 이 모든 게 어떤 식으로든 모든 정보의 한가운데에 있는 거죠 REST |
|
|
|
13:35.400 --> 13:37.350 |
|
그게 참 흥미로워요 |
|
|
|
13:37.350 --> 13:41.280 |
|
내가 오버하는 걸 수도 있지만 그런 것 같아요 |
|
|
|
13:41.400 --> 13:46.730 |
|
여러분이 할 수 있는 것 중 하나는 벡터 데이터베이스에 넣고 싶은 텍스트 덩어리를 |
|
|
|
13:46.730 --> 13:48.770 |
|
실험해보는 거예요 |
|
|
|
13:48.860 --> 13:56.270 |
|
돌아가서 다른 문서를 추가할 수 있다고 상상해 보세요 여기 로드한 문서에 |
|
|
|
13:56.270 --> 13:57.080 |
|
말이죠 |
|
|
|
13:57.080 --> 14:02.360 |
|
파일을 직접 지정하거나 텍스트를 추가하거나 기존 |
|
|
|
14:02.360 --> 14:08.690 |
|
문서에 텍스트를 추가해서 벡터 공간으로 보내거나 둘 중 하나입니다. |
|
|
|
14:08.690 --> 14:16.070 |
|
그리고 이것을 통해 오픈AI가 다른 텍스트의 의미를 이해하고 비슷한 |
|
|
|
14:16.070 --> 14:25.940 |
|
의미의 다른 것들에 가깝게 배치할 수 있다는 것을 알게 되었는데요. |
|
|
|
14:26.060 --> 14:28.220 |
|
그게 핵심이에요 |
|
|
|
14:28.730 --> 14:33.140 |
|
이 2D 모형은 정말 멋졌어요 |
|
|
|
14:33.140 --> 14:35.420 |
|
2D 표현보다 더 좋은 게 있을까요? |
|
|
|
14:35.450 --> 14:36.320 |
|
당연히 있죠 |
|
|
|
14:36.350 --> 14:40.040 |
|
3D 표현이 있어요 그게 다음에 할 일이죠 |
|
|
|
14:40.220 --> 14:46.160 |
|
3D로 해보죠 간단하거든요 2를 3으로 바꾸는 것만큼요 |
|
|
|
14:46.160 --> 14:51.140 |
|
그럼 3D의 이 벡터를 시각화할 수 있어요 |
|
|
|
14:51.170 --> 14:52.280 |
|
그렇게 간단하지 않았어요 |
|
|
|
14:52.310 --> 14:57.620 |
|
여기에 3D도 넣어야 했어요. 다른 벡터들도 만져야 했죠. 하지만 |
|
|
|
14:57.620 --> 14:59.480 |
|
꽤 비슷해요. |
|
|
|
14:59.480 --> 15:02.510 |
|
타이틀도 2D에서 3D로 바꿔야 했어요 |
|
|
|
15:02.690 --> 15:04.910 |
|
어쨌든, 어떤지 보죠 |
|
|
|
15:04.910 --> 15:06.170 |
|
여기 있네요 |
|
|
|
15:06.440 --> 15:13.010 |
|
이게 벡터예요 2D에서 3D로 영사된 거죠 |
|
|
|
15:13.160 --> 15:17.990 |
|
첫 번째로 눈치챌 수 있는 건 사실 아주 드문 경우라는 거예요 |
|
|
|
15:17.990 --> 15:23.090 |
|
영화처럼 3D가 2D보다 나을 때도 있어요 비트 비트 |
|
|
|
15:23.300 --> 15:27.200 |
|
비트가 좀 뒤죽박죽인 것 같네요 |
|
|
|
15:27.200 --> 15:28.790 |
|
비트는 잘 안 보여요 |
|
|
|
15:28.820 --> 15:31.100 |
|
노란색이 가운데 있는 것처럼 보이긴 해요 |
|
|
|
15:31.220 --> 15:34.910 |
|
초록, 빨강, 파랑은 확실히 구분돼 있고요 |
|
|
|
15:34.910 --> 15:40.610 |
|
하지만 예상하셨듯이 일부 요소가 합쳐졌어요 |
|
|
|
15:40.640 --> 15:46.360 |
|
이 제품의 장점은 상호 작용적으로 놀 수 있다는 거예요 |
|
|
|
15:46.390 --> 15:48.310 |
|
이렇게 돌릴 수 있어요 |
|
|
|
15:49.060 --> 15:50.260 |
|
대단하지 않아요? |
|
|
|
15:50.260 --> 15:55.150 |
|
이걸 이용해서 어떻게 배치됐는지 더 잘 알 수 있어요 get get get get it |
|
|
|
15:55.150 --> 15:59.830 |
|
둘 사이에 차이가 있다는 걸 알 수 있죠 |
|
|
|
16:00.130 --> 16:07.540 |
|
하지만 2D 묘사만큼 명확하진 않은 것 같아요 |
|
|
|
16:07.630 --> 16:10.780 |
|
그래도 보기 좋아요 |
|
|
|
16:10.780 --> 16:13.900 |
|
Get up 하면 포인트 뒤에 있는 의미가 보이시죠? |
|
|
|
16:13.900 --> 16:19.870 |
|
물론 아까처럼 노란색은 어바웃입니다 모든 것의 중간에 있는 것처럼 |
|
|
|
16:19.960 --> 16:26.410 |
|
보이죠 아까 말씀드린 것과 일치합니다 여기 이 파란색은 좀 특이하죠 |
|
|
|
16:26.800 --> 16:34.270 |
|
3D로 표현한 비트도 충분히 즐길 수 있어요 2D가 어떤 면에서는 |
|
|
|
16:34.270 --> 16:36.970 |
|
더 명확하긴 하지만요 |
|
|
|
16:37.360 --> 16:43.310 |
|
벡터 실험은 이걸로 끝났는데 중요한 게 있어요 이제 여러분에게 달렸다는 거죠 이 |
|
|
|
16:43.310 --> 16:49.010 |
|
도표를 보고 텍스트의 다양한 덩어리를 검사하는 게 아니라 자신의 텍스트 덩어리를 |
|
|
|
16:49.010 --> 16:50.930 |
|
추가하는 거예요 |
|
|
|
16:50.960 --> 16:55.970 |
|
간단한 방법은 문서를 지식 저장소에 넣는 겁니다 지식 기반 디렉터리에 말이에요 Put |
|
|
|
16:55.970 --> 16:58.040 |
|
그렇게만 하면 바로 효과가 나타나죠 |
|
|
|
16:58.130 --> 17:04.670 |
|
텍스트 로더 클래스도 활용할 수 있어요 문서를 그냥 드롭하는 대신 랑가인 코드를 이용해 청크를 |
|
|
|
17:04.670 --> 17:06.260 |
|
추가하는 거죠 |
|
|
|
17:06.260 --> 17:12.230 |
|
하지만 덩어리들을 넣고 나면 벡터 공간에서 어디에 도달하는지 보고 어떻게 작동하는지 감을 잡으세요 Get in get in |
|
|
|
17:12.230 --> 17:12.800 |
|
get |
|
|
|
17:12.830 --> 17:17.480 |
|
또는 전체 지식 기반 디렉터리를 대체할 수도 있습니다 다른 것으로 이름을 |
|
|
|
17:17.480 --> 17:23.840 |
|
바꾸고 새 디렉터리를 생성해 아주 간단한 것으로 채우는 거죠 문서가 벡터 스페이스 내 다른 위치에 |
|
|
|
17:23.840 --> 17:28.430 |
|
어떻게 놓이는지 실험할 수 있도록요 Get up Get up |
|
|
|
17:28.790 --> 17:36.500 |
|
아주 중요한 숙제예요 다음 단계에 대한 기반을 제공하거든요 실제로 |
|
|
|
17:36.500 --> 17:39.170 |
|
Get을 하는 단계요 |
|
|
|
17:39.200 --> 17:41.000 |
|
먼저 슬라이드로 돌아가죠
|
|
|