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 и щракваме върху "Create model". След известно време нашият собствен модел за семантично търсене, съдържащ нашите собствени знания за домейна, ще бъде готов и ще получим частен 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 и др., ограниченият размер на заявките прави невъзможно използването на тези големи модели на базата на специфични знания за областта за отговаряне на въпроси. Фината настройка на тези модели не работи добре за такъв случай на употреба, за съжаление...
Добра стратегия е прилагането на система RAG. Първо отговорете на въпроса си, като преобразувате документите си във вграждания и ги съхранявате във векторна база данни или като създадете собствен модел за семантично търсене от документите си, а след това използвайте обикновен модел за отговор на въпроси, базиран на генеративен ИИ, за да върнете човешки отговор на първоначалния въпрос.
Ако искате да приложите тази стратегия, не се колебайте да създадете свой собствен модел за семантично търсене в NLP Cloud: вижте свързаната документация тук!
Mark
Инженер по приложенията в NLP Cloud