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.
Відповідати на питання, засновані на знаннях про предметну область (наприклад, внутрішня документація, контракти, книги тощо), досить складно. У цій статті ми розглянемо передову техніку під назвою Retrieval-Augmented Generation (RAG), яка дозволяє досягти цього з великою точністю, поєднуючи семантичний пошук і генерацію тексту з такими моделями, як ChatDolphin, LLaMA, ChatGPT, GPT-4...

Щоб відповісти на запитання на основі знань про предметну область, потрібно спочатку надіслати ШІ-моделі певний контекст, а потім поставити запитання про нього.
Наприклад, ви можете надіслати наступний контекст:
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?
ШІ відповів би приблизно так:
Anytime
Для більш детальної інформації див. нашу документацію щодо відповідей на запитання тут..
Проблема цього підходу полягає в тому, що розмір вашого контексту (тобто розмір вхідного тексту) обмежений. Тому ви не можете відправити всі свої знання про домен як контекст.
Уявімо, що ви хочете створити чат-бота, який знає все про документацію вашого продукту, щоб кінцеві користувачі могли поставити чат-боту будь-яке питання, пов'язане з продуктом, не звертаючись до реального агента підтримки. Швидше за все, ваша документація буде складатися з декількох сотень або тисяч слів, або навіть мільйонів слів...
Давайте розглянемо, як подолати це обмеження і виконати відповіді на запитання на дуже великих документах.
Коли йдеться про відповіді на запитання, можна використовувати 2 типи технологій. Генерація тексту (генеративний ШІ) і семантичний пошук.
Перший, генерація тексту, - це, в основному, те, що я показав вище. Зазвичай для цього використовується просунута модель генерації тексту, така як ChatDolphin, LLaMA, ChatGPT, GPT-4... Вона здатна розуміти людські запитання і відповідати як людина. Однак він не працює з великими документами. Точне налаштування генеративної моделі штучного інтелекту за допомогою ваших знань про предметну область не спрацює, оскільки точне налаштування - це не найкращий метод додавання знань до моделі.
Семантичний пошук - це пошук документа так само, як і в Google, але на основі ваших власних знань про предметну область.
Щоб досягти цього, вам потрібно перетворити ваші внутрішні документи у вектори (також відомі як "вбудовування"). Потім ви повинні перетворити ваше запитання у вектор, а потім виконати векторний пошук (також відомий як "семантична схожість"), щоб отримати ту частину ваших знань про предметну область, яка є найближчою до вашого запитання.
Перше рішення - зберігати ваші вбудовування у спеціальній векторній базі даних, такій як PG Vector. Інше рішення - закодувати власну модель семантичного пошуку з вашими знаннями про предметну область і розгорнути її на графічному процесорі (саме таке рішення ми пропонуємо в NLP Cloud, оскільки воно забезпечує найкращий час відгуку). Після того, як ваша векторна БД буде готова, або коли ваша модель буде створена, ви зможете задавати питання природною мовою, і ваша модель ШІ поверне витяг з ваших знань про предметну область, який найкраще відповідає на ваше запитання.
Семантичний пошук зазвичай дуже швидкий і відносно дешевий. Він також більш надійний, ніж стратегія точного налаштування генерації тексту, тому ви не зіткнетеся з проблемою галюцинацій ШІ. Але він не здатний правильно "відповісти" на запитання. Він просто повертає фрагмент тексту, який містить відповідь на ваше запитання. Далі користувач повинен прочитати весь текст, щоб знайти відповідь на своє запитання.
Детальніше про семантичний пошук дивіться в нашій документації про семантичний пошук тут..
Хороша новина полягає в тому, що можна поєднувати семантичний пошук і генеративний ШІ, щоб досягти просунутих результатів!
Для того, щоб відповісти на питання про знання предметної області, ми в NLP Cloud надаємо перевагу наступній стратегії: спочатку зробіть запит з семантичним пошуком, щоб отримати ресурси, які найкраще відповідають на ваше запитання, а потім використовуйте генерацію тексту, щоб відповісти на запитання на основі цих ресурсів, як людина.
Припустимо, ми є реселлером принтерів HP і хочемо відповісти на запитання наших клієнтів на нашому веб-сайті.
Спочатку нам потрібно буде обчислити вкраплення і зберегти їх у векторній базі даних, або створити власну модель семантичного пошуку. Тут вона буде складатися лише з 3 прикладів, але в реальному житті ви можете включити до 1 мільйона прикладів, використовуючи семантичний пошук на NLP Cloud. Ми просто створюємо 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 і натискаємо "Створити модель". Через деякий час наша власна модель семантичного пошуку, що містить наші власні знання про предметну область, буде готова, і ми отримаємо приватну URL-адресу API для її використання.
Давайте поставимо запитання нашій новій моделі за допомогою клієнта 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 тощо, обмежений розмір запиту унеможливлює використання цих чудових моделей на конкретних знаннях предметної області для відповідей на запитання. На жаль, тонка настройка цих моделей не дуже добре працює для такого випадку використання...
Хороша стратегія полягає у впровадженні системи RAG. Спочатку дайте відповідь на своє запитання, перетворивши документи у вбудовування і зберігши їх у векторній базі даних або створивши власну модель семантичного пошуку на основі документів, а потім використовуйте звичайну модель відповідей на запитання, засновану на генеративному ШІ, щоб повернути людську відповідь на початкове запитання.
Якщо ви хочете реалізувати цю стратегію, створіть власну модель семантичного пошуку в NLP Cloud: див. відповідну документацію тут!
Mark
Інженер-додаток в NLP Cloud