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.
Det er utfordrende å besvare spørsmål basert på domenekunnskap (som intern dokumentasjon, kontrakter, bøker osv.). I denne artikkelen utforsker vi en avansert teknikk kalt Retrieval-Augmented Generation (RAG) for å oppnå dette med stor nøyaktighet, ved å blande semantisk søk og tekstgenerering med modeller som ChatDolphin, LLaMA, ChatGPT, GPT-4...

For å svare på spørsmål basert på domenekunnskap må du først sende en kontekst til AI-modellen og deretter stille et spørsmål om den.
Du kan for eksempel sende følgende kontekst:
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.
Nå kan det være lurt å stille følgende spørsmål:
When can plans be stopped?
Den kunstige intelligensen ville svare noe sånt som dette:
Anytime
Du finner mer informasjon i dokumentasjonen vår om spørsmålssvaring. her.
Problemet med denne tilnærmingen er at størrelsen på konteksten (dvs. størrelsen på inndatateksten) er begrenset. Du kan altså ikke sende hele domenekunnskapen din som kontekst.
La oss si at du ønsker å bygge en support-chatbot som vet alt om produktdokumentasjonen din, slik at sluttbrukerne kan stille et hvilket som helst produktrelatert spørsmål til chatboten uten å kontakte en ekte supportmedarbeider. Sannsynligvis består dokumentasjonen av flere hundre eller tusen ord, eller til og med millioner av ord...
La oss se nærmere på hvordan vi kan overvinne denne begrensningen og svare på spørsmål i svært store dokumenter.
Når det gjelder spørsmålssvar, kan to typer teknologier brukes. Tekstgenerering (generativ AI) og semantisk søk.
Den første, tekstgenerering, er i utgangspunktet det jeg nettopp viste ovenfor. Den bruker vanligvis en avansert tekstgenereringsmodell som ChatDolphin, LLaMA, ChatGPT, GPT-4.... Den er i stand til å forstå et menneskelig spørsmål og svare som et menneske. Den fungerer imidlertid ikke på store dokumenter. Å finjustere en generativ AI-modell med domenekunnskap vil ikke fungere godt, ettersom finjustering ikke er en god teknikk for å tilføre kunnskap til en modell.
Semantisk søk handler i bunn og grunn om å søke i et dokument på samme måte som Google, men basert på din egen domenekunnskap.
For å oppnå dette må du konvertere de interne dokumentene dine til vektorer (også kjent som "embeddings"). Deretter bør du også konvertere spørsmålet ditt til en vektor, og deretter utføre et vektorsøk (også kjent som "semantisk likhet") for å finne den delen av domenekunnskapen som ligger nærmest spørsmålet ditt.
En første løsning er å lagre embeddings i en dedikert vektordatabase som PG Vector. En annen løsning er å kode din egen semantiske søkemodell med din egen domenekunnskap og distribuere den på en GPU (som er den løsningen vi foreslår hos NLP Cloud fordi den gir best responstid). Når du har vektor-DB-en klar, eller når modellen din er opprettet, kan du stille spørsmål på naturlig språk, og AI-modellen din vil returnere et utdrag av domenekunnskapen din som best svarer på spørsmålet ditt.
Semantisk søk er vanligvis svært raskt og relativt billig. Det er også mer pålitelig enn finjusteringsstrategien for tekstgenerering, slik at du ikke får problemer med AI-hallusinasjoner. Men den er ikke i stand til å "svare" på et spørsmål. Den returnerer bare en tekst som inneholder et svar på spørsmålet ditt. Deretter er det opp til brukeren å lese hele teksten for å finne svaret på spørsmålet.
Du finner mer informasjon i dokumentasjonen vår om semantisk søk. her.
Den gode nyheten er at det er mulig å kombinere både semantisk søk og generativ AI for å oppnå avanserte resultater!
For å svare på spørsmål om domenekunnskap, foretrekker vi i NLP Cloud følgende strategi: Først sender vi en forespørsel med semantisk søk for å finne de ressursene som best svarer på spørsmålet ditt, og deretter bruker vi tekstgenerering for å svare på spørsmålet basert på disse ressursene som et menneske.
La oss si at vi er forhandler av HP-skrivere og ønsker å svare på kundenes spørsmål på nettstedet vårt.
Først må vi beregne embeddings og lagre dem i en vektordatabase, eller lage vår egen semantiske søkemodell. Her vil den bare bestå av 3 eksempler, men i virkeligheten kan du inkludere opptil 1 million eksempler når du bruker semantisk søk på NLP Cloud. Vi oppretter ganske enkelt en CSV-fil og legger inn følgende:
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.
Deretter laster vi opp CSV-datasettet vårt til NLP Cloud og klikker på "Create model". Etter en stund vil vår egen semantiske søkemodell med vår egen domenekunnskap være klar, og vi vil motta en privat API-URL for å kunne bruke den.
La oss stille et spørsmål til den splitter nye modellen vår ved hjelp av NLP Cloud Python-klienten:
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?")
Modellen returnerer raskt følgende med kort responstid:
{
"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."
},
]
}
Nå henter vi ut det svaret som har høyest poengsum (vi kan utmerket godt hente ut flere svar også): "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."
Dette svaret er riktig, men det er ikke særlig brukervennlig siden brukeren må lese en ganske lang tekst for å få svaret. Nå stiller vi det samme spørsmålet på nytt til endepunktet for spørsmålssvar ved hjelp av ChatDolphin-modellen. Vi bruker svaret fra det semantiske søket som kontekst:
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."""
)
Den returnerer følgende svar:
{
"answer": "The warranty lasts for three years."
}
Ganske bra, ikke sant?
Til tross for de siste fremskrittene som er gjort med generative AI-modeller som ChatDolphin, LLaMA, ChatGPT, GPT-4 osv., gjør den begrensede forespørselsstørrelsen det umulig å bruke disse flotte modellene på spesifikk domenekunnskap for å svare på spørsmål. Finjustering av disse modellene fungerer dessverre ikke så bra for slike bruksområder ...
En god strategi er å implementere et RAG-system. Svar først på spørsmålet ditt ved å konvertere dokumentene dine til embeddings og lagre dem i en vektordatabase, eller lag din egen semantiske søkemodell ut fra dokumentene dine, og bruk deretter en vanlig spørsmålssvarsmodell basert på generativ AI for å returnere et menneskelig svar på det opprinnelige spørsmålet.
Hvis du vil implementere denne strategien, må du ikke nøle med å lage din egen semantiske søkemodell på NLP Cloud: se den tilhørende dokumentasjonen her!
Mark
Applikasjonsingeniør hos NLP Cloud