대규모 언어 모델 적용
OpenAI ChatGPT는 전 세계를 강타했습니다. 전례 없는 사용자 채택률은 개발자 커뮤니티의 API에 대한 전례 없는 실험과 일치했습니다. PoC가 하나 둘이 아닌 여러 개 블로그에 게시되거나 트윗되는 데 하루도 걸리지 않습니다. 그런 다음 기술 열풍을 불러일으키는 다른 개발자 세트에 의해 개선됩니다.
새로운 LLM(대형 언어 모델)의 개발도 크게 가속화되었습니다. 최신 모델은 기업에서 발표하거나 오픈 소스로 제공됩니다. 사용자 지정 모델 교육에서 미세 조정, 데이터 코퍼스 등에 이르기까지 문제 진술의 다양한 측면을 해결하기 위해 많은 오픈 소스 프로젝트를 사용할 수 있거나 시작했습니다.
동시에 개발자 커뮤니티는 LLM을 더 쉽게 사용할 수 있는 프레임워크를 게시하기 위해 빠르게 노력하고 있습니다. LangChain 및 Llama Index 와 같은 프레임워크는 많은 일반 및 특정 사례를 해결하는 상용구 코드 및 프레임워크를 제공합니다. 또한 이를 사용하여 자신만의 복잡한 사용 사례를 구축할 수 있습니다.
따라서 전체 환경이 매우 빠른 속도로 진화하고 있음을 알 수 있습니다. 실제로 LangChain과 같은 프레임워크는 며칠에 한 번씩 마이너 릴리스를 제공합니다.
OpenAI 적용
OpenAI LLM의 막대한 교육 데이터는 매우 큰 지식 코퍼스에 대한 액세스를 제공합니다. 이것은 본질적으로 콘텐츠 기반 사용 사례를 해결하는 데 이상적입니다.
이미 적용된 일부 사용 사례는 다음과 같습니다.
- 요약
- 콘텐츠 강화
- 타이틀 생성
- 바꿔말하기
- 짧은 양식, 트윗, 프레젠테이션 포인트 등과 같은 여러 형식 만들기
위의 경우 LLM의 언어 기능을 사용하여 콘텐츠 관련 작업을 해결하거나 지원했습니다.
LLM의 고유한 지식이 사용되는 다른 사용 사례는 다음과 같습니다.
- 퀴즈 콘텐츠 생성
- 설문 조사 또는 설문 조사.
입력 컨텍스트를 전달하고 동일한 질문에 답하는 것은 LLM이 능숙한 작업입니다. 이 기능은 긴 형식 기사 또는 PDF 문서에서 쿼리에 대한 답변을 얻는 것과 같은 많은 콘텐츠에 사용되고 있습니다.
전체 솔루션에는 다음 일반 형식으로 프롬프트를 만드는 작업이 포함됩니다.
문맥:
Arunachal Pradesh의 Ziro Valley는 Apatani 부족의 고향이며 그림처럼 완벽한 계곡 전망으로 유명합니다. Ziro는 수도인 Itanagar에서 약 167km 떨어져 있으며 그곳으로 가는 드라이브는 Arunachal Pradesh에서 경험할 수 있는 가장 아름다운 드라이브 중 하나입니다. 계곡은 무성한 녹색 숲과 일년 중 언제라도 멋진 계단식 농장으로 둘러싸여 있습니다. 길가에서 졸졸 흐르는 잔잔한 시냇물을 바라보면 지로의 평화로움이 느껴진다. 당연히 계곡은 Arunachal Pradesh에서 가장 많이 방문한 장소 중 하나입니다.
Ziro Valley의 이 목가적인 환경은 매년 Ziro Festival of Music이 열리는 주요 이유 중 하나입니다. 축제 장소는 인도에서 가장 아름다운 장소 중 하나입니다. 인도 전역과 전 세계의 음악 애호가들이 축제와 멋진 분위기를 위해 이곳을 찾습니다.
프롬프트 지침: 위에 제공된 맥락에서 아래 질문에 100단어로 답하십시오.
질문: 지로는 수도에서 얼마나 멉니까?
답변:
LLM은 제공된 컨텍스트에서 쿼리에 대한 답변을 제공합니다. 원하는 결과를 얻으려면 프롬프트 설정을 조작해야 합니다.
이 전반적인 접근 방식은 콘텐츠 코퍼스를 기반으로 사용자 쿼리에 응답할 수 있는 세상을 열어줍니다. 예를 들어, 예산에 관한 뉴스 및 기사로 만든 말뭉치를 사용하여 독자가 가질 수 있는 질문에 간단히 대답할 수 있습니다. 이것은 검색 문자열을 제공하는 사용자의 기존 모델을 단락시킨 다음 사용자가 원하는 답변을 얻기 위해 읽어야 하는 많은 기사 링크가 표시됩니다. 이것은 훨씬 더 나은 사용자 경험을 제공하고 많은 시간을 절약합니다.
접근 방식은 쿼리에 응답할 수 있도록 LLM에 올바른 컨텍스트를 제공하는 데 중점을 둡니다. 따라서 이제 문제는 LLM 앱이 보낼 수 있는 입력의 양에 제한이 있기 때문에 쿼리와 관련된 말뭉치에서 올바른 스니펫 집합을 식별하는 방법입니다.
이것은 현재 주로 검색 문제입니다. 콘텐츠를 스니펫으로 분류하고 인덱싱할 수 있습니다. Pinecone 또는 Milvus와 같은 벡터 데이터베이스를 사용하여 이를 수행할 수 있습니다. 콘텐츠는 벡터화되어 데이터베이스에 저장됩니다. 사용자가 질문을 하면 쿼리를 벡터화하고 유사성 검색을 수행하여 관련 스니펫을 가져옵니다.
더 스마트한 자유 텍스트 검색
자유 텍스트 검색은 기존 필터 기반 검색에 비해 UX 관점에서 더 쉽습니다. 그러나 사용자가 제공한 텍스트 입력에서 검색 필터를 식별하기 위해 복잡한 구문 분석 논리를 개발해야 합니다. 따라서 버그나 고정된 텍스트 입력 형식의 작은 세트가 발생하기 쉽습니다.
여기에서 LLM의 언어 기능을 활용하여 검색 텍스트를 구문 분석하고 검색 매개변수를 식별할 수 있습니다.
전체 솔루션에는 다음 일반 형식으로 프롬프트를 만드는 작업이 포함됩니다.
프롬프트 지침: 제공된 입력 쿼리를 다음 JSON 형식으로 구문 분석합니다.”
JSON 형식:
{“장소”: “장소 1이 방문 중입니다. Mandatory” , “checkInDate”: ”예약을 위한 체크인 날짜입니다. 필수적인. 형식 dd/mm/yyyy”, “checkOutDate” : “ 예약 체크아웃 날짜입니다. 필수적인. 기본 체크인 + 2일. 형식 dd/mm/yyyy”, “minimumRating”: “호텔에 필요한 최소 등급입니다. 옵션”, “maximumPricePerNight”: “지불할 의사가 있는 1박당 최대 가격입니다. 선택사항” }
예:
질문: Shimla에서 7월 23일부터 7월 28일까지 4등급 이상의 객실을 찾고 있습니다.
답변: {"장소": "심라" , "checkInDate": "2023년 7월 23일", "checkOutDate": "2023년 7월 28일", "minimumRating": "4"}
질문: 8월 15일부터 다르질링에서 3일 동안 방을 구합니다.
답변: {“장소”: “다즐링” , “checkInDate”: ”15/08/2023”, “checkOutDate” : “17/08/2023”}
질문: 9월 3일부터 5일간 폰디체리로 휴가를 떠납니다.
답변:
이 경우 Zero Shot Learning이라는 LLM의 기능을 사용했습니다. 지침 외에도 일련의 질문에 대한 예상 출력을 보여주기 위해 몇 가지 샘플 예제를 제공했습니다. LLM은 작은 샘플 세트에서 학습하여 동작을 미세 조정하는 뛰어난 기능을 보여주었습니다.
LLM은 사용자 쿼리를 구문 분석하고 JSON을 고정 형식으로 제공합니다. 그런 다음 동일한 기능을 사용하여 실제 검색 기능을 강화할 수 있습니다.
이 경우 LLM은 본질적으로 스마트 텍스트 파서입니다.
지원 봇
이 사용 사례를 살펴보기 위해 여행 예약 애플리케이션의 예를 들어 보겠습니다.
사용자는 지원 봇과 상호 작용하여 애플리케이션 사용 방법 또는 일반 혜택 등에 대한 질문에 대한 답변을 얻습니다. 또는 애플리케이션에서 수행한 거래에 대한 답변을 얻고 싶어합니다.
응용 프로그램 일반 사용의 코퍼스, 응용 프로그램과 관련된 콘텐츠는 동일한 쿼리에 응답하기 위해 만들 수 있습니다.
마찬가지로 스마트 LLM 기반 쿼리 파서를 사용하여 예약에 대한 사용자 쿼리를 구문 분석한 다음 예약 기록을 가져올 수 있습니다. 응용 프로그램에는 여러 유형의 사용자 트랜잭션이 있을 수 있으므로 LLM 파서를 조정하여 트랜잭션 유형과 특정 트랜잭션에 대한 매개 변수를 제공할 수 있습니다.
단일 프론트엔드 봇에 두 기능을 함께 통합하는 것은 사용자의 의도가 무엇인지, 쿼리가 트랜잭션을 수행하는 방법에 대한 것인지 또는 마지막 트랜잭션의 상태인지 식별해야 하는 단계를 포함합니다. 여기에서 LLM은 사용자의 의도를 올바르게 식별하는 데 사용할 수 있습니다.
따라서 전체 솔루션에는 다음이 포함됩니다.
- 의도 식별: 말뭉치 쿼리 또는 예약 쿼리
- 말뭉치 쿼리 처리
- 말뭉치 검색
- 관련 스니펫 식별
- 관련 스니펫 및 사용자 쿼리를 전달하는 LLM 호출.
- 예약 쿼리 처리 중
- LLM을 호출하여 유형 및 매개변수 식별
- LLM 응답 JSON을 구문 분석합니다.
- 적절한 기능을 호출합니다.
LLM에는 작업해야 할 몇 가지 문제가 있습니다.
전통적으로 개발자는 결정론적 세계에서 작업하는 데 익숙합니다. 함수 호출의 응답은 본질적으로 실패하고 오류가 발생하는 경우에도 결정적입니다.
그러나 LLM은 확률적 방식으로 작동합니다. 그들의 반응이 항상 우리가 예측하는 것과 일치하지는 않습니다. 즉, 이를 사용하여 애플리케이션을 개발할 때 개발자는 항상 이를 인식하고 예상치 못한 상황을 처리할 수 있는 적절한 복원력을 구축해야 합니다.
OpenAI API의 응답 시간은 본질적으로 매우 민감합니다. 범위는 2~12초입니다. 관련된 콘텐츠의 양에 따라 많은 것이 달라집니다. 예를 들어 큰 컨텍스트를 보내고 쿼리에 대한 자세한 응답을 기대하면 LLM에 대한 많은 계산이 필요하므로 응답 시간이 더 길어집니다. 그 중 일부는 스트리밍 API로 전환하여 인식적으로 처리할 수 있지만 이는 여전히 기존 API 응답 시간 SLA에 비해 상대적으로 높은 시간 후에 최종 응답이 완료됨을 의미합니다.
프롬프트는 우리가 원하는 작업에 대해 LLM에 지시하는 기본 방법입니다. 따라서 프롬프트를 올바르게 설정하는 것이 중요합니다. 그러나 이와 관련된 학습 곡선이 있습니다. 또한 LLM의 한 버전에서 작동하는 프롬프트는 다른 버전에서 약간 다르게 작동하므로 동일한 작업을 수행하려면 조정이 필요합니다.
기술로서의 LLM은 문제를 해결하는 새로운 방법을 발명할 수 있는 가능성을 열었습니다. 우리는 여전히 그것의 진정한 잠재력을 이해하는 정점에 있습니다. 매일 인터넷에 범람하는 새로운 아이디어는 앞으로 흥미진진한 시대가 도래할 것이라는 사실에 대한 증거입니다.

![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































