[00:00]
안녕하세요 여러분, 다시 만나뵙게 되어 기쁩니다. 오늘은
[00:02]
로컬 GPT의 프리뷰 버전을
[00:04]
출시하게 되었습니다. 이건 검색 증강 생성에 대한
[00:07]
독창적인 구현체입니다.
[00:09]
그리고 이 새로운 버전은
[00:12]
실제로 더 프레임워크적인 성격이 강해서
[00:15]
이 버전을 사용하여
[00:18]
더 나은 검색 시스템을 구현하고
[00:20]
다양한
[00:21]
하이퍼파라미터를 가지고 실험할 수 있습니다.
[00:23]
만약 로컬 GPT에 익숙하지 않으시다면,
[00:25]
이건 제가 직접 만든 오픈 소스 프로젝트로
[00:28]
로컬 모델을 사용해서 문서와 대화할 수 있게 해줍니다.
[00:30]
그래서 모든 것이 비공개입니다.
[00:32]
외부 API를 사용하지 않고 문서를
[00:35]
어디에도 보내지 않습니다. 이제 감을 잡을 수 있도록
[00:38]
말씀드리면,
[00:40]
이것이 이 새로운 버전의 인터페이스인데
[00:42]
이전 버전에 비해 훨씬 더 깔끔합니다.
[00:45]
이제 이 영상에서는 먼저
[00:48]
인덱싱과 검색을 위한
[00:49]
다양한 기능들을 보여드리고
[00:51]
영상 후반부에서는
[00:54]
여러분의 로컬 머신에
[00:56]
이것을 설치하기 위한
[00:58]
다양한 옵션들을 보여드리겠습니다.
[01:00]
참고로 저는 맥 OS에서
[01:02]
이것을 테스트하고 개발해왔습니다.
[01:04]
그래서 윈도우나 리눅스에서
[01:07]
실행하시면 여기저기 버그가 있을 수 있습니다.
[01:09]
새로운 버전의 로컬 GPT를 로드하면
[01:12]
이 화면을 보시게 될 것입니다.
[01:14]
첫 번째 옵션은 새로운 인덱스를 생성하는 것입니다.
[01:17]
두 번째는 기존 인덱스를 선택하는 것입니다.
[01:19]
여기 이미 생성된 다양한 인덱스들이
[01:22]
여러 개 있습니다.
[01:23]
그리고 세 번째는 이 버전의 로컬 GPT를 사용해서
[01:26]
로컬 모델과 직접 대화할 수 있다는 것입니다.
[01:30]
이것은 Ollama에 의해 구동됩니다.
[01:33]
그래서 Ollama에서 사용 가능한
[01:36]
모든 LLM을 가져오고
[01:39]
그 중 하나를 선택해서
[01:42]
상호작용을 시작할 수 있습니다.
[01:44]
첫 번째 메시지는 보통
[01:47]
Ollama에서 모델을 불러오는 중이라
[01:49]
가장 오래 걸릴 수 있지만
[01:51]
나중에는 속도가 개선됩니다.
[01:53]
자, 이제 돌아가서
[01:56]
인덱스를 생성할 때
[01:57]
사용할 수 있는 옵션들을
[01:59]
설명해드리겠습니다. 여기로 가보겠습니다.
[02:02]
여기에 제가 만든 다양한 인보이스들이
[02:04]
몇 개 있는 것 같습니다.
[02:07]
데모를 위해 이 중 몇 개를
[02:09]
선택해보겠습니다.
[02:12]
인보이스 데이터 V2라고 부르겠습니다.
[02:16]
검색을 위한 다양한 옵션들이 있습니다.
[02:20]
전체 텍스트 검색과 함께
[02:22]
밀집 임베딩을 사용할 수 있습니다.
[02:24]
하이브리드를 선택하는 것을
[02:26]
강력히 추천합니다. 또한
[02:29]
지연 청킹을 위한 구현도 있습니다.
[02:32]
기본적으로는 활성화되지 않습니다.
[02:34]
제 추천은 파일의
[02:36]
여러 다른 인덱스를 생성하고
[02:38]
다양한 질문들을 실행해서
[02:40]
어떤 조합이 여러분의 솔루션이나
[02:42]
문제에 가장 적합한지
[02:44]
알아보는 것입니다.
[02:47]
저는 이것들을 활성화하지 않겠습니다.
[02:49]
고 회수율 청킹이 있습니다.
[02:51]
이것은 기본적으로 문장 수준 청킹입니다.
[02:54]
훨씬 더 정확한 청크를 얻을 수 있지만
[02:56]
인덱싱 프로세스 자체가
[02:58]
시간이 오래 걸릴 것입니다.
[03:00]
지금 이 버전의 로컬 GPT를 사용하기 시작하면
[03:02]
인덱싱 작업이 보통
[03:04]
다른 솔루션들에 비해 훨씬 느리다는 것을 알 수 있습니다.
[03:06]
그 이유는 바로
[03:08]
이러한 다양한 옵션들 때문입니다.
[03:10]
이제 다양한 임베딩 모델을 선택할 수 있습니다.
[03:12]
여기서 보시는 Quen 임베딩 모델들이
[03:15]
기본적으로 제공됩니다.
[03:17]
처음 실행할 때는
[03:18]
이러한 모델들을 로컬로 다운로드하게 됩니다.
[03:20]
마지막에 보시는 다른 모델들은
[03:23]
Olama를 통해 호스팅됩니다.
[03:25]
만약 Olama에서 실행 중인 임베딩 모델이 있다면
[03:28]
해당 모델들도 가져올 수 있습니다.
[03:30]
이것을 선택하겠습니다.
[03:32]
이제 간단한 개요를 드리겠습니다.
[03:34]
아마도 앞으로
[03:36]
기술적 세부사항을 다룰
[03:37]
추가 비디오들이 있을 것입니다.
[03:39]
하지만 모든 문서에 대해
[03:42]
무작위로 몇 개의 청크를 선택하고
[03:46]
해당 문서들에 대한 개요를 생성합니다.
[03:48]
트리 주소 단계를 보여드리겠습니다.
[03:49]
모델이 자동으로 자체 지식을 사용할지
[03:52]
채팅 기록을 사용할지 또는
[03:54]
인덱스에서 문서를 검색할지를 결정합니다.
[03:58]
이를 위해 이러한
[04:00]
개요를 만들어야 하고
[04:01]
그 다음에 맥락적 검색이 있습니다.
[04:03]
이는 Anthropic에서 권장하는 접근법과
[04:06]
매우 유사하지만 전체 문서를 보는 대신
[04:09]
주어진 청크 주변의
[04:11]
다섯 개 청크만 보고
[04:13]
작은 요약을 생성합니다.
[04:15]
이렇게 하면 지역적 맥락을 보존할 수 있어
[04:19]
각 청크가 단순히 독립적이거나
[04:21]
분리된 것이 아니라
[04:23]
주변에 훨씬 많은 맥락을 가지게 됩니다.
[04:26]
이 두 옵션을 위해 상대적으로 작은
[04:29]
60억 모델을 사용하는데
[04:31]
이러한 작업들은 계산 집약적이기 때문입니다.
[04:33]
설정이 완료되면 인덱싱 시작을 클릭하면
[04:36]
인덱싱이 시작됩니다.
[04:39]
여기서 백엔드 처리가
[04:40]
일어나고 있습니다.
[04:43]
우리가 선택한 모든 옵션들이 적용됩니다.
[04:46]
여기서 초기 임베딩을 생성하거나
[04:48]
실제로는 로딩했습니다.
[04:51]
인덱스가 생성되면
[04:53]
자동으로 새로운 차트를 생성합니다.
[04:54]
인덱스를 클릭하면
[04:57]
선택한 모든 하이퍼파라미터를
[04:59]
볼 수 있습니다.
[05:00]
그래서 저는 최소한 테스트 데이터에 대해
[05:02]
다른 하이퍼파라미터와 다른 설정으로
[05:04]
여러 인덱스를 만들 것을 권장합니다.
[05:06]
그 다음 몇 가지 질문을 실행해보고
[05:09]
어떤 것이 잘 작동하는지 확인할 수 있습니다.
[05:12]
몇 가지 검색 예시를 보여드리기 위해
[05:14]
다른 인덱스를 살펴보겠습니다.
[05:18]
이 인덱스는 DeepSeq 3 논문과
[05:21]
O3 mini 시스템 카드를 가지고 있습니다.
[05:24]
총 90에서 100페이지 정도를 보고 있습니다.
[05:28]
이것을 클릭하면 인덱스 내의
[05:30]
두 파일을 볼 수 있습니다.
[05:33]
저는 높은 재현율 청킹이나
[05:34]
문장 수준 청킹을 사용하지 않았는데
[05:36]
너무 많은 다른 청크들을 갖게 될 것이기 때문입니다.
[05:39]
나머지 옵션들은
[05:41]
이전에 본 것과 매우 유사합니다.
[05:43]
설정으로 가면 실제로
[05:46]
검색 파이프라인을 맞춤 설정할 수도 있습니다.
[05:48]
다양한 옵션을 설정하고
[05:50]
토글할 수 있습니다.
[05:52]
예를 들어, 복잡한 질문들의 경우 이를 분해합니다.
[05:54]
이제 분해 기능의 경우에도
[05:57]
각 하위 질문에 대한 답변을 생성하기 위해 LLM을 사용하거나
[06:00]
아니면 모든 청크를 검색한 다음
[06:03]
이를 최종 LLM에 직접 전달하여
[06:05]
답변을 생성하도록 할 수 있습니다
[06:08]
따라서 이러한
[06:10]
하이퍼파라미터들도
[06:12]
조정할 수 있습니다. 검색 유형 측면에서는
[06:14]
하이브리드 검색이 있습니다
[06:17]
현재 이것이 기본값입니다. 그리고
[06:19]
다시 LLM의 경우, 기본적으로
[06:22]
Quen 38억 모델을 사용하고 있습니다. 하지만
[06:24]
기본적으로 Ollama에서 사용 가능한
[06:26]
모든 모델을 사용할 수 있습니다. 이제
[06:30]
성능은 실제로 사용하기로 결정한
[06:32]
LLM에 따라 크게 달라집니다. 하지만
[06:35]
데모 목적과 많은 사람들이
[06:37]
12GB 또는 16GB VRAM을 가지고 있을 것이기 때문에
[06:41]
8억 모델을 기본 모델로 유지하고 싶었습니다
[06:44]
좋습니다. 우리는 실험하면서
[06:46]
이러한 다양한 설정들을
[06:48]
살펴보겠습니다. 따라서
[06:50]
처음에 '안녕하세요'라고 말한다면
[06:52]
이것은 매우 일반적인 질문입니다. 따라서
[06:55]
LLM을 직접 사용하여 응답을 생성합니다
[06:58]
이제 Quen 모델들은 사고하는 모델입니다
[07:01]
따라서 이런 간단한 질문에 대해서도
[07:03]
일부 사고 토큰을 사용하게 됩니다
[07:06]
일반적인 질문을 하면 대부분의 경우
[07:08]
검색이나 RAG 파이프라인을
[07:11]
트리거하지 않습니다. 그렇게 하지 않는
[07:13]
몇 가지 실패 사례가 있으며
[07:16]
이는 모델 자체에서 기인합니다. 하지만
[07:18]
백그라운드에서 본질적으로 일어나는 일은
[07:21]
우리가 생성한 문서 개요들을 살펴보고
[07:23]
각 질문에 대해 LLM에게
[07:25]
해당 문서 요약들이 이 질문과
[07:28]
관련된 정보를 생성하는지 묻습니다
[07:30]
따라서 관련 정보가 있다고 판단하면
[07:33]
RAG 부분을 트리거하고
[07:35]
해당 문서에서 관련 정보를
[07:37]
찾지 못하면 LLM 지식만
[07:40]
사용하게 됩니다. 이제
[07:43]
'이 문서들은 무엇에 관한 것인가'와 같은
[07:45]
질문을 하면 문서 개요를
[07:48]
살펴볼 수 있는 시나리오가 있지만
[07:49]
이 경우에는 문서 개요를
[07:52]
살펴볼 수 있는 시나리오가 있지만
[07:54]
이 경우에는 바로 가서
[07:56]
일부 청크를 검색하기로 결정했다고 생각합니다
[07:59]
RAG 파이프라인을 사용하기로 결정한 질문들의 경우
[08:02]
여러 단계를 거친다는 것을 볼 수 있습니다
[08:04]
따라서 먼저 RAG 파이프라인을
[08:05]
사용할지 말지를 결정한 다음
[08:08]
하위 쿼리를 생성하고
[08:10]
컨텍스트를 검색하고 순위를 매기고
[08:12]
그런 다음 해당 청크들 주변의
[08:14]
컨텍스트 윈도우를 확장하고
[08:16]
하위 쿼리에 대한 답변을 생성합니다
[08:19]
이제 단일 질문인 경우
[08:21]
바로 답변을 생성합니다
[08:24]
따라서 이 문서들은 주로
[08:26]
평가 위험 관리와
[08:27]
AI 모델의 기술적 능력에 초점을 맞춘다고 하며
[08:30]
특히 안전성의 맥락에서
[08:32]
성능 애플리케이션별 작업을 다룬다고 합니다
[08:34]
GPT-4o mini 논문에서
[08:37]
일부 청크를 선택한 것 같습니다. 따라서
[08:42]
꽤 좋은 개요를 제공하죠? 그리고 여기에
[08:43]
사용한 다양한 청크들이 있습니다
[08:45]
이제 형식이 약간 이상하다는 것을 알 수 있습니다
[08:48]
이것은 제가 아직 수정해야 할 부분입니다
[08:50]
해결해야 할 작은 버그입니다
[08:55]
맞죠? 그래서 이것을 프리뷰 버전이라고 부르는 거예요.
[08:56]
메인 브랜치에는 올라가지 않겠지만,
[08:58]
이 새로운 버전을 위한 특별한 브랜치를 보여드릴게요.
[09:00]
기본적으로 답변과 함께 신뢰도 점수도 보게 될 거예요.
[09:03]
기본적으로 답변과 함께 신뢰도 점수도 보게 될 거예요.
[09:05]
본질적으로 일어나는 일은 이런 거예요.
[09:09]
최종 답변을 생성한 다음,
[09:10]
컨텍스트와 질문을 가져와서
[09:12]
이 최종 답변을 다른 LLM 호출로 보내서
[09:14]
평가하는 거죠. 이 기능은 비활성화할 수 있어요.
[09:18]
왜냐하면 그 자체로
[09:21]
질문의 복잡성에 따라 5-10초 정도
[09:23]
쉽게 걸릴 수 있거든요. 하지만
[09:26]
설정에서
[09:29]
답변 검증을 쉽게 비활성화할 수 있고
[09:31]
그러면 그 검증 단계는 보지 않게 될 거예요.
[09:34]
그러면 그 검증 단계는 보지 않게 될 거예요.
[09:35]
이제 DeepSeek 3와 03 mini에 대해 이야기했으니
[09:39]
실제로 관련된 질문을 해보죠.
[09:43]
그럼 이렇게 물어보죠.
[09:44]
DeepSeek v3 모델의
[09:46]
총 훈련 비용은 얼마인가요?
[09:49]
총 훈련 비용은 얼마인가요?
[09:54]
이제 RAG나 검색 파이프라인을 통해
[09:58]
진행되길 바라요.
[10:01]
답변을 생성하고 있어요.
[10:03]
기다려보죠. 기본적으로 저는
[10:05]
Qwen 3 8B 모델을 사용하고 있는데
[10:08]
이건 추론이나 사고 모델이에요.
[10:10]
그래서 먼저 추론이 스트리밍되는 걸 보고
[10:12]
그 다음에 최종 답변을 보게 될 거예요.
[10:14]
이것을 비추론 모델로 쉽게 바꿀 수 있지만
[10:17]
그 경우 프롬프트 자체에
[10:19]
약간의 작업이 필요할 수 있어요.
[10:22]
좋아요. 여기서 DeepSeek v3의
[10:24]
총 훈련 비용은
[10:26]
명시적으로 557만 달러라고 나와있어요.
[10:30]
그리고 사전 훈련에 사용된
[10:33]
GPU 개수를 설명하고 있어요.
[10:34]
이것들이 사용된
[10:36]
다양한 청크들이에요.
[10:38]
이제 컨텍스트 또는
[10:41]
컨텍스트 검색을 사용했는데
[10:43]
아마 더 적절한 이름은
[10:45]
컨텍스트 강화일 거예요.
[10:48]
각 청크마다 모든 청크 주변의
[10:51]
실행 창을 기반으로 한 요약을 추가할 거예요.
[10:53]
현재 실행 창은
[10:55]
약 5개의 청크 정도예요.
[10:57]
약 5개의 청크 정도예요.
[10:59]
이제 03와 관련된
[11:01]
질문을 해보죠. 흥미로운 질문을 찾을 수 있는지 봅시다.
[11:07]
흥미로운 질문을 찾을 수 있는지 봅시다.
[11:09]
이 섹션은
[11:11]
컨텍스트 핵 지식에 대해 실제로 이야기하고 있어요.
[11:15]
좋아요. 봅시다.
[11:17]
222개의 선택형 질문 세트가 있어요.
[11:19]
실제로 이걸 물어보죠.
[11:22]
03 모델의 핵 지식을 테스트하는 데
[11:23]
사용된 선택형 질문은 몇 개인가요?
[11:26]
어떻게 될지 봅시다.
[11:29]
다시 하위 질문을 만들었어요.
[11:33]
여기서 최종 답변을 생성했어요.
[11:35]
스트리밍할 때 사고 토큰의
[11:38]
포맷이 때때로 약간 어긋나요.
[11:40]
이건 여전히
[11:41]
해결해야 할 문제예요.
[11:43]
하지만 여기 사고 토큰들이 있어요.
[11:46]
이게 사용된 총 컨텍스트예요.
[11:49]
각 청크의 모든 512개 토큰을 보여주지 않는 것 같아요.
[11:53]
그건 제가 확인해야 할 부분이에요.
[11:55]
하지만 답변을 보면
[11:56]
컨텍스트에서 명시적으로 222개의
[11:59]
선택형 질문이 모델 평가에서
[12:01]
핵 지식을 테스트하는 데 사용되었다고 나와있어요.
[12:04]
구체적으로 컨텍스트에서는
[12:06]
언급에 대한 내용입니다. 여기는 컨텍스트에서 가져온 일부 내용이라고 생각됩니다.
[12:10]
맞죠? 보시다시피
[12:12]
컨텍스트에서 적절한 청크를 찾을 수 있을 때는
[12:14]
실제로 꽤 정확합니다.
[12:17]
컨텍스트에서요.
[12:18]
이제 기본적으로 여기를 보시면
[12:21]
처음에 20개의 청크를 검색하게 됩니다.
[12:23]
그런 다음 리랭커를 사용하면
[12:26]
10개의 청크를 순위를 매기거나 20개 중에서
[12:29]
상위 10개 청크를 선택하게 됩니다.
[12:32]
그리고 이 컨텍스트 윈도우를 활성화하면
[12:34]
더 확장됩니다. 맞죠?
[12:36]
제 추천은 처음에는 10개로 시작하되
[12:38]
그 다음 4개나 5개 정도로
[12:40]
줄여보시고 비슷한 성능을 얻을 수 있는지
[12:43]
확인해보세요.
[12:45]
이제 한 가지 문제는 속도를 높이기 위해
[12:49]
질문-답변 쌍에 대해 캐시를 사용하고 있다는 것입니다.
[12:53]
그래서 만약 같은 질문을
[12:55]
다시 한다면... 실제로 확인해볼 수 있을지
[12:59]
예시로 보여드리자면
[13:02]
정확히 같은 질문을 사용하면
[13:04]
캐시된 답변을 그냥 가져오게 됩니다.
[13:06]
맞죠? 그래서 때로는
[13:08]
원하는 답변을 얻지 못할 때
[13:10]
질문을 조금 수정해야 할 수도 있습니다.
[13:12]
그리고 보통은
[13:15]
'이 문서에 따르면'과 같은 표현을
[13:18]
넣으면 많은 도움이 됩니다.
[13:20]
맞죠? 그러면 시스템이
[13:23]
자체 지식으로 답변하려고 하지 않고
[13:25]
RAG 파이프라인을 사용하라는
[13:27]
신호가 됩니다.
[13:30]
좋습니다. 한 가지 더
[13:32]
기능을 보여드리겠습니다.
[13:35]
만약 'DeepSeek V3와 O3 mini 모델의
[13:40]
전체 훈련 매개변수 수는 얼마인가요?'와 같은
[13:45]
질문을 한다면
[13:48]
이 질문을 보내보겠습니다.
[13:50]
이는 상당히 복잡한 질문입니다.
[13:53]
이에 대해 검색을 시도하면
[13:54]
문제가 발생할 것입니다.
[13:57]
하지만 여기서 보시면 이것을 두 개의
[14:01]
하위 질문으로 나누었고
[14:04]
이제 생성된
[14:06]
중간 질문들에 대한 답변을
[14:08]
스트리밍하고 있습니다.
[14:10]
맞죠? 그래서 때로는
[14:13]
동시에 스트리밍하는 것을 보실 수 있는데
[14:15]
이는 정말 멋진 효과라고 생각합니다.
[14:19]
좋습니다. 여기서
[14:21]
최종 답변을 얻었습니다.
[14:24]
DeepSeek V3의 전체 훈련 매개변수 수는
[14:27]
5610억 개라고 합니다.
[14:29]
이는 컨텍스트에 명시적으로 나와 있습니다.
[14:32]
그리고 O3 mini의 경우
[14:34]
전체 훈련 매개변수 수는
[14:36]
제공된 컨텍스트에 언급되어 있지 않습니다.
[14:38]
스니펫은 성능 지표,
[14:39]
벤치마크, 평가에 중점을 두고 있습니다.
[14:42]
O3 mini의 크기를 모르기 때문에
[14:44]
이는 실제로 정확합니다.
[14:48]
하지만 시스템이 생성하려고 했던
[14:51]
개별 답변들도 확인할 수 있습니다.
[14:53]
질문 중 하나에 대해
[14:56]
두 번 답변하려고 했던 것 같습니다.
[14:58]
흥미롭습니다. 아마
[15:00]
스트리밍에 문제가 있는 것 같습니다.
[15:02]
그래서 이를 해결해야 할 것 같고
[15:04]
그래서 이것이 프리뷰 버전이라고 하는 것입니다.
[15:07]
완전히 완성된 것은 아닙니다.
[15:08]
테스트해보시고
[15:10]
어떤 다른 문제들을 겪고 있는지
[15:11]
알려주시기를 강력히 추천합니다.
[15:13]
한 가지는 질문에 답변하는 방식에서
[15:15]
매우 구체적으로 해야 한다는 것입니다.
[15:18]
키워드를 사용하세요. 여기서 두 모델 모두 언급했는데
[15:20]
이전 맥락을 보고 올바르게 두 개의 답변을 만들어냅니다.
[15:23]
첫 번째는 딥시퀀스 3 훈련에 사용된
[15:25]
훈련 하드웨어이고
[15:27]
다른 하나는 O3 미니입니다. 하지만
[15:30]
경우에 따라 질문을 할 때
[15:32]
이전 차트를 기반으로 향상될 수 있는 질문이라면
[15:36]
올바르게 선택하지 못할 수도 있습니다.
[15:37]
그래서 매우 명시적으로 표현하는 것이 좋습니다.
[15:39]
예를 들어, 딥시퀀스 3와
[15:41]
O3 미니 훈련에 사용된 훈련 하드웨어가
[15:43]
무엇인가와 같은 키워드를 사용할 수 있습니다.
[15:45]
맞죠? 이렇게 하면
[15:48]
더 나은 검색 가능성이 높아집니다.
[15:50]
딥시퀀스 3의 숫자는 올바르게 선택했지만
[15:52]
O3 미니는 언급되지 않았습니다. 좋습니다.
[15:56]
제가 강력히 추천하는 또 다른 옵션은
[15:59]
재순위화되거나 순위가 매겨진 청크의 수를 파악한 다음
[16:01]
프루닝도 고려해보는 것입니다.
[16:04]
청크를 순위화할 때 청크의 모든 텍스트가
[16:07]
실제로 질문과 관련이 있는 것은 아니기 때문에
[16:10]
이것이 도움이 됩니다. 맞죠?
[16:12]
프루닝은 문장 수준 프루닝을 수행하여
[16:15]
전체 청크보다는 가장 관련성 높은 문장만
[16:18]
유지합니다.
[16:20]
이 주제에 대한 이전 영상을 만들었습니다.
[16:23]
영상 설명에 링크를 달아두겠습니다.
[16:26]
하지만 이 새로운 버전으로 로컬 GPT를
[16:29]
자신의 머신에 설정하는 방법을 보여드리겠습니다.
[16:30]
실제로 그 전에
[16:32]
드래그 노드 트리아지라는 옵션이 있습니다.
[16:35]
이것을 선택하거나 토글하면
[16:38]
시스템이 항상 검색 파이프라인을 사용하도록
[16:40]
강제합니다. 맞죠?
[16:43]
그래서 LLM의 지식을 완전히 무시하고
[16:46]
항상 RAG 파이프라인을 사용하게 됩니다.
[16:49]
맞죠? 좋습니다. 설정하기 위해
[16:52]
로컬 GPT GitHub 저장소로 가면
[16:54]
여기서 이 로컬 GPT v2를 볼 수 있습니다.
[16:56]
만약 이 프로젝트가 지금까지 유용했다면
[16:59]
GitHub에서 별점을 주세요.
[17:01]
정말 감사하겠습니다.
[17:05]
이것이 새로운 버전의 문서입니다.
[17:06]
철학과 다양한 기능에 대해 설명하고 있습니다.
[17:10]
현재는 PDF 파일만 지원하지만
[17:12]
다른 모든 비구조화된 파일에 대한 지원도
[17:15]
곧 제공될 예정입니다.
[17:17]
설치를 위한 세 가지 옵션이 있습니다.
[17:19]
하나는 Docker 배포,
[17:22]
다른 하나는 직접 배포,
[17:25]
그리고 수동 구성 요소 설정이 있습니다.
[17:27]
지금은 가장 쉬운 방법을 보여드리겠습니다.
[17:29]
다른 영상에서는
[17:31]
이 모든 다양한 옵션들을 살펴보겠습니다.
[17:33]
다양한 API에 대한 자세한 문서도 있습니다.
[17:36]
API 우선입니다.
[17:40]
원한다면 자신만의 UI를 만들 수 있습니다.
[17:42]
현재 UI를 사용할 필요가 없습니다.
[17:44]
맞죠? 그리고 모든 것이 문서화되어 있습니다.
[17:47]
따라서 이것 위에 자신만의 애플리케이션을
[17:49]
쉽게 만들 수 있습니다.
[17:51]
또한 기업이고 로컬 GPT를 배포하고 싶다면
[17:53]
마지막에 양식이 있습니다.
[17:56]
작성하시면 개인적으로 도움을 드리겠습니다.
[17:59]
이것이 메인 브랜치에 있지 않기 때문에
[18:01]
그래서 모든 것이 문서화되어 있습니다.
[18:04]
따라서 이것 위에 자신만의 애플리케이션을
[18:07]
쉽게 만들 수 있습니다.
[18:10]
또한 기업이고 로컬 GPT를 배포하고 싶다면
[18:11]
마지막에 양식이 있습니다.
[18:13]
작성하시면 개인적으로 도움을 드리겠습니다.
[18:16]
이것이 메인 브랜치에 있지 않기 때문에
[18:18]
이 브랜치에서 클론해야 합니다.
[18:21]
이를 위해 다음 명령어를 사용하세요.
[18:23]
이 브랜치에서 클론해야 합니다.
[18:25]
이 명령어를 사용하면 됩니다.
[18:27]
기본적으로 이것은 로컬
[18:29]
GPT v2 브랜치이고 우리는
[18:33]
local GPT라는 폴더를 만들 것입니다.
[18:36]
실제로 이것을 복사해서 제 시스템에서
[18:38]
보여드리겠습니다. 이 명령어를
[18:41]
붙여넣겠습니다. 하지만 제가
[18:44]
local이라는 폴더를 만들고 싶다면...
[18:46]
실제로 무슨 일이 일어났죠? 아, 이것은
[18:50]
그 브랜치에서 git clone이어야 합니다.
[18:51]
네, 실제로 이것을 수정해야 할 것 같습니다.
[18:54]
Local GPT v2를 확인해보겠습니다.
[18:57]
이것이 작동하기를 바랍니다. 좋습니다.
[19:02]
그 명령어를 수정하겠습니다. 버그를 발견했습니다.
[19:05]
그럼 cd local로 이동합니다.
[19:07]
우리는 이제 local GPT2 브랜치에 있습니다.
[19:10]
그리고 여기 모든 파일들이 있습니다.
[19:13]
이제 로컬 머신에 npm이 설치되어 있어야 합니다.
[19:16]
또는 NodeJS가 필요하며 이것은 요구사항 중 하나입니다.
[19:19]
맞습니다. 다음 단계는
[19:21]
npm을 설치하는 것입니다.
[19:23]
실제로 conda 환경을 만들어보겠습니다.
[19:26]
local python이라고 부르겠습니다.
[19:28]
Python 3.11을 사용하거나
[19:32]
3.10도 잘 작동할 것입니다.
[19:36]
이것을 실행해보겠습니다. 좋습니다.
[19:39]
가상 환경이 생성되었습니다.
[19:42]
이것을 활성화하겠습니다.
[19:44]
보시다시피 우리가 사용하는
[19:47]
가상 환경입니다.
[19:48]
이제 requirements.txt에서 요구사항을 설치하겠습니다.
[19:51]
좋습니다. 설치가 완료되었습니다.
[19:55]
이제 제가 언급하는 것을 깜빡한 또 다른 것은
[19:57]
순수 Python이라는 것입니다.
[19:59]
의존성이 최소화되어 있습니다.
[20:02]
lang chain이나 lama index를 사용하지 않습니다.
[20:04]
전체 RAG 설정이 실제로
[20:07]
Python 자체에서 구현되었습니다.
[20:09]
그렇죠? 따라서 많은 의존성
[20:12]
문제에 직면하지 않을 것입니다.
[20:14]
이것을 실행하기 위해서는
[20:16]
두 가지 방법이 있습니다. 하나는 python system을 실행하는 것입니다.
[20:21]
백엔드 서버를 시작하고
[20:23]
프론트엔드 서버를 시작하여
[20:26]
바로 사용할 수 있게 됩니다.
[20:28]
제가 보여드릴 다른 방법은
[20:31]
세 개의 다른 파일을 실행하는 것입니다.
[20:33]
하지만 그것은 아마도 개발 목적으로
[20:35]
가장 좋을 것입니다.
[20:37]
다른 서비스들을 시작했습니다.
[20:40]
이것을 시작하기 전에 Ola가 실행되어야 합니다.
[20:43]
프론트엔드에 접근하려면
[20:45]
로컬 호스트에서 이것에 접근하면 됩니다.
[20:48]
제가 강력히 권장하는 두 번째 방법은
[20:51]
특히 초기 개발 목적으로
[20:53]
세 개의 다른 탭을 여는 것입니다.
[20:55]
실제로 이것은 제가 이전에 만든
[20:58]
가상 환경이었습니다.
[21:00]
첫 번째에서는
[21:02]
backend_server.py를 실행하고 싶습니다.
[21:04]
이것은 백엔드 API를 시작할 것입니다.
[21:07]
그다음 rag_system.api_server를
[21:10]
시작하겠습니다.
[21:11]
좋습니다. 이것이 주요 RAG 파이프라인입니다.
[21:12]
좋습니다. 이것을 시작하고 있습니다.
[21:16]
마지막 하나는 npm rundev입니다.
[21:20]
좋습니다. 이것은 우리 프론트엔드를 시작할 것입니다.
[21:22]
이제 포트 3000의 로컬 호스트로 가면
[21:27]
모든 것이 실행되고 있는 것을 볼 수 있습니다.
[21:29]
때로는 첫 번째 방법으로 다른 세션이
[21:32]
같은 포트를 사용하고 있으면
[21:35]
일부 문제가 발생할 수 있습니다.
[21:37]
하지만 이 방법으로는 보통
[21:40]
백엔드를 쉽게 찾을 수 있습니다.
[21:41]
다시 새로운 인덱스를 만들고
[21:44]
상호작용을 시작하는 동일한 단계를
[21:46]
진행하겠습니다.
[21:48]
이 비디오를 끝내기 전에
[21:49]
한 가지 더 말씀드리고 싶은 것은
[21:51]
청킹 과정이 PDF 파일의
[21:53]
품질에 정말 의존적이라는 것입니다.
[21:56]
맞죠? Dockling이 PDF 파일을
[21:58]
올바르게 파싱할 수 없다면
[22:01]
파이프라인의 나머지 부분이
[22:03]
일부 문제에 직면할 수 있습니다.
[22:05]
그렇죠? 저는 실제로
[22:07]
비전 기반 검색을
[22:09]
로컬 GPT의 일부로 통합하는 것을
[22:11]
생각하고 있습니다. 하지만
[22:14]
그러려면 훨씬 더 좋은 GPU가 필요합니다.
[22:17]
여러 모델을 실행하게 되고
[22:18]
비전 모델은 보통 훨씬 더
[22:21]
많은 리소스를 필요로 하기 때문입니다.
[22:24]
좋습니다. 이것은 새로운
[22:26]
로컬 GPT의 간단한 소개였습니다.
[22:29]
이것을 가지고 놀아보시고
[22:31]
로컬 머신에 설치해보시고
[22:33]
어떤 문제에 직면하는지 알려주세요.
[22:35]
그 모든 것을 해결하고 싶습니다.
[22:38]
기존 코드 설정을 정리하겠습니다.
[22:40]
이것은 앞으로 몇 주 동안
[22:42]
별도의 브랜치로 남을 것입니다.
[22:44]
하지만 안정적인 버전이 나오면
[22:47]
이것이 더 새로운 버전이나
[22:48]
로컬 GPT의 이전 버전을 대체하고
[22:50]
메인 브랜치가 될 것입니다.
[22:53]
이 프로젝트가 우리를 어디로 이끌지
[22:56]
정말 기대됩니다. 피드백을 주시고
[22:59]
이 비디오가 유용했기를 바랍니다.