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.
Odpovědi na otázky založené na znalostech domény (např. interní dokumentace, smlouvy, knihy atd.) jsou náročné. V tomto článku zkoumáme pokročilou techniku nazvanou Retrieval-Augmented Generation (RAG), abychom toho dosáhli s velkou přesností, přičemž kombinujeme sémantické vyhledávání a generování textu s modely jako ChatDolphin, LLaMA, ChatGPT, GPT-4...

Odpovídání na otázky na základě znalostí domény vyžaduje, abyste nejprve modelu umělé inteligence poslali nějaký kontext a poté se na něj zeptali.
Můžete například odeslat následující kontext:
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.
Nyní si možná budete chtít položit následující otázku:
When can plans be stopped?
Umělá inteligence by odpověděla asi takto:
Anytime
Další podrobnosti naleznete v naší dokumentaci o zodpovídání otázek. zde.
Problémem tohoto přístupu je, že velikost kontextu (tj. velikost vstupního textu) je omezená. Nemůžete tedy jako kontext odeslat celou svou doménovou znalost.
Řekněme, že chcete vytvořit chatbota podpory, který bude vědět vše o dokumentaci k vašemu produktu, takže koncoví uživatelé budou moci chatbotovi položit jakoukoli otázku týkající se produktu, aniž by museli kontaktovat skutečného agenta podpory. S největší pravděpodobností se vaše dokumentace bude skládat z několika stovek či tisíců slov, nebo dokonce milionů slov...
Podívejme se, jak toto omezení překonat a provádět odpovědi na otázky ve velmi rozsáhlých dokumentech.
Pokud jde o zodpovídání otázek, lze použít 2 druhy technologií. Generování textu (generativní AI) a sémantické vyhledávání.
První z nich, generování textu, je v podstatě to, co jsem ukázal výše. Obvykle se používá pokročilý model generování textu, jako je ChatDolphin, LLaMA, ChatGPT, GPT-4... Je schopen porozumět lidské otázce a také odpovědět jako člověk. Nefunguje však na rozsáhlých dokumentech. Jemné doladění generativního modelu umělé inteligence pomocí vašich doménových znalostí by nefungovalo dobře, protože jemné doladění není dobrou technikou pro přidání znalostí do modelu.
Sémantické vyhledávání je v podstatě vyhledávání dokumentu stejným způsobem jako Google, ale na základě vlastních znalostí domény.
Abyste toho dosáhli, musíte převést interní dokumenty na vektory (známé také jako "embeddings"). Poté byste měli převést do vektoru také svou otázku a následně provést vektorové vyhledávání (známé také jako "sémantická podobnost"), abyste získali tu část svých doménových znalostí, která je nejblíže vaší otázce.
Prvním řešením je uložit vložené objekty do specializované vektorové databáze, jako je například PG Vector. Dalším řešením je zakódovat vlastní sémantický vyhledávací model s vlastními doménovými znalostmi a nasadit jej na GPU (což je řešení, které navrhujeme v NLP Cloud, protože nabízí nejlepší dobu odezvy). Jakmile pak budete mít připravenou vektorovou DB nebo jakmile bude váš model vytvořen, můžete pokládat otázky v přirozeném jazyce a váš model umělé inteligence vám vrátí výtah z vašich doménových znalostí, který nejlépe odpovídá na vaši otázku.
Sémantické vyhledávání je obvykle velmi rychlé a relativně levné. Je také spolehlivější než strategie jemného dolaďování textu, takže se nebudete potýkat s žádným problémem s halucinacemi umělé inteligence. Není však schopna správně "odpovědět" na otázku. Jednoduše vrátí kus textu, který obsahuje odpověď na vaši otázku. Pak je na uživateli, aby si celý kus textu přečetl a našel odpověď na svou otázku.
Další podrobnosti naleznete v naší dokumentaci o sémantickém vyhledávání. zde.
Dobrou zprávou je, že je možné kombinovat sémantické vyhledávání i generativní umělou inteligenci a dosáhnout tak pokročilých výsledků!
Pro zodpovězení otázek týkajících se znalostí domény upřednostňujeme v NLP Cloud následující strategii: nejprve zadáme požadavek pomocí sémantického vyhledávání, abychom získali zdroje, které nejlépe odpovídají na vaši otázku, a poté pomocí generování textu odpovíme na otázku na základě těchto zdrojů jako člověk.
Řekněme, že jsme prodejci tiskáren HP a chceme na našich webových stránkách odpovídat na dotazy našich zákazníků.
Nejprve budeme muset vypočítat vložené hodnoty a uložit je do vektorové databáze nebo vytvořit vlastní model sémantického vyhledávání. Zde bude složen pouze ze 3 příkladů, ale v reálném životě můžete při použití sémantického vyhledávání v NLP Cloud zahrnout až 1 milion příkladů. Jednoduše vytvoříme soubor CSV a vložíme do něj následující příklady:
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.
Poté nahrajeme naši sadu dat CSV do služby NLP Cloud a klikneme na tlačítko "Vytvořit model". Po chvíli bude náš vlastní sémantický vyhledávací model obsahující naše vlastní doménové znalosti připraven a my obdržíme soukromou adresu API, abychom jej mohli používat.
Položme našemu novému modelu otázku pomocí klienta 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?")
Model rychle vrátí následující údaje s krátkou dobou odezvy:
{
"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."
},
]
}
Nyní načteme odpověď, která má nejvyšší skóre (mohli bychom dokonale načíst i několik odpovědí): "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."
Tato odpověď je správná, ale není příliš uživatelsky přívětivá, protože uživatel musí číst poměrně dlouhý text, aby se dozvěděl odpověď. Nyní tedy položíme stejnou otázku znovu našemu koncovému bodu pro zodpovídání otázek pomocí modelu ChatDolphin. Jako kontext použijeme odpověď sémantického vyhledávání:
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."""
)
Vrátí následující odpověď:
{
"answer": "The warranty lasts for three years."
}
Docela dobré, že?
Navzdory nedávnému pokroku v oblasti generativních modelů umělé inteligence, jako jsou ChatDolphin, LLaMA, ChatGPT, GPT-4 atd., omezená velikost dotazů znemožňuje použití těchto skvělých modelů na základě znalostí konkrétní domény pro zodpovídání otázek. Jemné ladění těchto modelů bohužel pro takový případ použití nefunguje dobře...
Dobrou strategií je zavedení systému RAG. Nejprve odpovězte na otázku tak, že převedete dokumenty na vložené znaky a uložíte je do vektorové databáze nebo vytvoříte vlastní sémantický vyhledávací model z dokumentů, a poté použijte běžný model pro zodpovídání otázek založený na generativní umělé inteligenci, abyste vrátili lidskou odpověď na původní otázku.
Pokud chcete tuto strategii implementovat, neváhejte a vytvořte si vlastní model sémantického vyhledávání v NLP Cloud: viz související dokumentace zde!
Mark
Aplikační inženýr ve společnosti NLP Cloud