All NLP Cloud plans can be stopped anytime. You only pay for the time you used the service. In case of a downgrade, you will get a discount on your next invoice.
내부 문서, 계약서, 책 등 도메인 지식에 기반한 질문에 답하기란 쉽지 않습니다. 이 글에서는 의미론적 검색과 텍스트 생성을 ChatDolphin, LLaMA, ChatGPT, GPT-4와 같은 모델과 혼합하여 높은 정확도로 이를 달성하기 위한 검색 증강 생성(RAG)이라는 고급 기술을 살펴봅니다.

도메인 지식에 대한 질문에 답변하려면 먼저 AI 모델에 컨텍스트를 보낸 다음 그에 대한 질문을 해야 합니다.
예를 들어 다음과 같은 컨텍스트를 보낼 수 있습니다:
All NLP Cloud plans can be stopped anytime. You only pay for the time you used the service. In case of a downgrade, you will get a discount on your next invoice.
이제 다음과 같은 질문을 할 수 있습니다:
When can plans be stopped?
AI는 다음과 같이 대답할 것입니다:
Anytime
자세한 내용은 질문 답변에 대한 문서를 참조하세요. 여기.
이 접근 방식의 문제점은 컨텍스트의 크기(즉, 입력 텍스트의 크기)가 제한되어 있다는 것입니다. 따라서 전체 도메인 지식을 컨텍스트로 보낼 수 없습니다.
제품 문서에 대한 모든 것을 알고 있는 지원 챗봇을 구축하여 최종 사용자가 실제 지원 상담원에게 연락하지 않고도 챗봇에게 제품 관련 질문을 할 수 있도록 하려고 한다고 가정해 보겠습니다. 대부분의 경우 문서는 수백, 수천 개의 단어 또는 수백만 개의 단어로 구성되어 있을 것입니다.
이 한계를 극복하고 대용량 문서에 대한 질의응답을 수행하는 방법을 살펴보겠습니다.
질문 답변에는 두 가지 기술을 사용할 수 있습니다. 텍스트 생성(생성형 AI)과 시맨틱 검색이 그것입니다.
첫 번째, 텍스트 생성은 기본적으로 위에서 보여드린 것과 같습니다. 보통 ChatDolphin, LLaMA, ChatGPT, GPT-4와 같은 고급 텍스트 생성 모델을 사용합니다. 사람의 질문을 이해하고 사람처럼 응답할 수 있습니다. 하지만 대용량 문서에서는 작동하지 않습니다. 도메인 지식으로 생성형 AI 모델을 미세 조정하는 것은 모델에 지식을 추가하는 좋은 기술이 아니기 때문에 잘 작동하지 않습니다.
시맨틱 검색은 기본적으로 Google과 동일한 방식으로 문서를 검색하되, 자신의 도메인 지식을 기반으로 검색하는 것입니다.
이를 위해서는 내부 문서를 벡터("임베딩"이라고도 함)로 변환해야 합니다. 그런 다음 질문도 벡터로 변환한 다음 도메인 지식에서 질문과 가장 가까운 부분을 검색하기 위해 벡터 검색("의미적 유사성"이라고도 함)을 수행해야 합니다.
첫 번째 해결책은 PG Vector와 같은 전용 벡터 데이터베이스에 임베딩을 저장하는 것입니다. 또 다른 솔루션은 자체 도메인 지식으로 자체 시맨틱 검색 모델을 인코딩하여 GPU에 배포하는 것입니다(이 솔루션은 최고의 응답 시간을 제공하기 때문에 NLP Cloud에서 제안하는 솔루션입니다). 그런 다음 벡터 DB가 준비되거나 모델이 생성되면 자연어로 질문을 하면 AI 모델이 질문에 가장 적합한 도메인 지식의 추출을 반환합니다.
시맨틱 검색은 일반적으로 매우 빠르고 상대적으로 저렴합니다. 또한 텍스트 생성 미세 조정 전략보다 더 안정적이므로 AI 환각 문제에 직면하지 않습니다. 하지만 질문에 제대로 '답변'할 수는 없습니다. 단순히 질문에 대한 답변이 포함된 텍스트 조각을 반환할 뿐입니다. 그런 다음 질문에 대한 답을 찾기 위해 전체 텍스트를 읽는 것은 사용자의 몫입니다.
자세한 내용은 시맨틱 검색에 대한 설명서를 참조하세요. 여기.
좋은 소식은 시맨틱 검색과 생성형 AI를 모두 결합하여 고급 결과를 얻을 수 있다는 것입니다!
도메인 지식에 대한 질문에 답하기 위해 NLP Cloud에서 선호하는 전략은 다음과 같습니다. 먼저 시맨틱 검색으로 요청하여 질문에 가장 적합한 리소스를 검색한 다음, 텍스트 생성을 사용하여 사람처럼 이러한 리소스를 기반으로 질문에 답하는 것입니다.
HP 프린터 리셀러로서 웹사이트에서 고객의 질문에 답변하고 싶다고 가정해 보겠습니다.
먼저 임베딩을 계산하여 벡터 데이터베이스에 저장하거나 자체 시맨틱 검색 모델을 만들어야 합니다. 여기서는 3개의 예제로만 구성되지만, 실제로는 NLP Cloud에서 시맨틱 검색을 사용할 때 최대 100만 개의 예제를 포함할 수 있습니다. CSV 파일을 만들고 그 안에 다음을 넣으면 됩니다:
HP® LaserJets have unmatched printing speed, performance and reliability that you can trust. Enjoy Low Prices and Free Shipping when you buy now online.
Every HP printer comes with at least a one-year HP commercial warranty (or HP Limited Warranty). Some models automatically benefit from a three-year warranty, which is the case of the HP Color LaserJet Plus, the HP Color LaserJet Pro, and the HP Color LaserJet Expert.
HP LaserJet ; Lowest cost per page on mono laser printing. · $319.99 ; Wireless options available. · $109.00 ; Essential management features. · $209.00.
그런 다음 CSV 데이터 세트를 NLP Cloud에 업로드하고 "모델 만들기"를 클릭합니다. 잠시 후, 자체 도메인 지식이 포함된 시맨틱 검색 모델이 준비되고 이를 사용할 수 있는 비공개 API URL을 받게 됩니다.
NLP Cloud Python 클라이언트를 사용하여 새로운 모델에 질문해 보겠습니다:
import nlpcloud
# We use a fake model name and a fake API key for illustration reasons.
client = nlpcloud.Client("custom-model/5d8e6s8w5", "poigre5754gaefdsf5486gdsa56", gpu=True)
client.semantic_search("How long is the warranty on the HP Color LaserJet Pro?")
이 모델은 짧은 응답 시간으로 신속하게 다음을 반환합니다:
{
"search_results": [
{
"score": 0.99,
"text": "Every HP printer comes with at least a one-year HP commercial warranty (or HP Limited Warranty). Some models automatically benefit from a three-year warranty, which is the case of the HP Color LaserJet Plus, the HP Color LaserJet Pro, and the HP Color LaserJet Expert."
},
{
"score": 0.74,
"text": "All consumer PCs and printers come with a standard one-year warranty. Care packs provide an enhanced level of support and/or an extended period of coverage for your HP hardware. All commercial PCs and printers come with either a one-year or three-year warranty."
},
{
"score": 0.68,
"text": "In-warranty plan · Available in 2-, 3-, or 4-year extension plans · Includes remote problem diagnosis support and Next Business Day Exchange Service."
},
]
}
이제 가장 높은 점수를 받은 답을 검색합니다(여러 개의 답도 완벽하게 검색할 수 있습니다): "Every HP printer comes with at least a one-year HP commercial warranty (or HP Limited Warranty). Some models automatically benefit from a three-year warranty, which is the case of the HP Color LaserJet Plus, the HP Color LaserJet Pro, and the HP Color LaserJet Expert."
이 답변은 정답이지만 사용자가 답을 얻기 위해 꽤 긴 텍스트를 읽어야 하기 때문에 사용자 친화적이지 않습니다. 이제 ChatDolphin 모델을 사용하여 질문 답변 엔드포인트에 동일한 질문을 다시 해보겠습니다. 여기서는 시맨틱 검색 응답을 컨텍스트로 사용합니다:
import nlpcloud
client = nlpcloud.Client("chatdolphin", "poigre5754gaefdsf5486gdsa56", gpu=True)
client.question(
"""How long is the warranty on the HP Color LaserJet Pro?""",
context="""Every HP printer comes with at least a one-year HP commercial warranty (or HP Limited Warranty). Some models automatically benefit from a three-year warranty, which is the case of the HP Color LaserJet Plus, the HP Color LaserJet Pro, and the HP Color LaserJet Expert."""
)
다음과 같은 답변을 반환합니다:
{
"answer": "The warranty lasts for three years."
}
꽤 괜찮지 않나요?
ChatDolphin, LLaMA, ChatGPT, GPT-4 등과 같은 생성형 AI 모델에 대한 최근의 발전에도 불구하고 제한된 요청 크기로 인해 특정 도메인 지식에 대한 질문 답변에 이러한 훌륭한 모델을 사용하는 것은 불가능합니다. 이러한 모델을 미세 조정하는 것은 안타깝게도 이러한 사용 사례에서는 잘 작동하지 않습니다....
좋은 전략은 RAG 시스템을 구현하는 것입니다. 먼저 문서를 임베딩으로 변환하여 벡터 데이터베이스에 저장하거나 문서에서 자체 시맨틱 검색 모델을 만들어 질문에 답한 다음, 제너레이티브 AI를 기반으로 하는 일반 질문 답변 모델을 사용하여 초기 질문에 대한 사람의 답변을 반환할 수 있습니다.
이 전략을 구현하고 싶다면 주저하지 마시고 NLP Cloud에서 자신만의 시맨틱 검색 모델을 만들어 보세요: 여기에서 관련 문서를 참조하세요.!
Mark
NLP 클라우드의 애플리케이션 엔지니어