Grūtības ar mākslīgā intelekta vai pilnas paketes izstrādi? Mūsu eksperti ir gatavi jums palīdzēt: individuāli pielāgoti padomi, tehniskā integrācija un daudz kas cits. Sazinieties ar [email protected].

Semantiskās meklēšanas modeļa izveide ar teikumu transformatoriem RAG lietojumprogrammai

Atgūšanas paplašinātas ģenerēšanas (RAG) cauruļvada ieviešana, precīzi pielāgojot savu semantiskās meklēšanas modeli, ir spēcīga pieeja, lai uzlabotu jautājumu atbildēšanas sistēmu precizitāti un atbilstību.

Šis paņēmiens apvieno gan semantiskās meklēšanas, gan ģeneratīvā mākslīgā intelekta priekšrocības, ļaujot sistēmai labāk izprast lietotāja jautājumus un ģenerēt precīzākas un kontekstam atbilstošākas atbildes. Precīzi pielāgojot semantiskās meklēšanas modeli, izmantojot teikumu transformatorus, izstrādātāji var pielāgot modeli savai konkrētai jomai, uzlabojot RAG konveijera kopējo veiktspēju.

Semantiskā meklēšana

Kas ir semantiskā meklēšana?

Semantiskā meklēšana ir datu meklēšanas metode, kas pārsniedz tradicionālās uz atslēgvārdiem balstītās meklēšanas metodes. Tā izmanto dabiskās valodas apstrādes un mašīnmācīšanās algoritmus, lai uzlabotu meklēšanas rezultātu precizitāti, ņemot vērā meklētāja nolūku un kontekstuālo nozīmi, kas piemīt viņa vaicājumā izmantotajiem terminiem. Šīs pieejas mērķis ir izprast meklēšanas vaicājuma un tīmekļa lappušu satura pamatnozīmi, nevis vienkārši saskaņot atslēgvārdus. Tādējādi semantiskā meklēšana var nodrošināt atbilstošākus rezultātus, pat ja tie nesatur precīzus sākotnējā vaicājumā izmantotos vārdus.

Lai to panāktu, semantiskajā meklēšanā tiek izmantotas dažādas metodes, piemēram, vārdu jēdzienu disambiguācija, jēdzienu ieguve un vaicājuma paplašināšana. Tā izmanto arī vektoru meklēšanu un mašīnmācīšanos, lai atgrieztu rezultātus, kas atbilst lietotāja nodomam un kontekstam. Semantisko meklēšanu plaši izmanto tīmekļa meklētājprogrammās, piemēram, Google, un to nodrošina tādas tehnoloģijas kā zināšanu grafiks, kurā tiek glabāti strukturēti dati par vienībām un to attiecībām. Tas ļauj meklētājprogrammām izprast meklēšanas vaicājumu nozīmi un sniegt precīzākus un jēgpilnākus rezultātus.

Semantiskā meklēšana ir ļoti noderīga uzņēmumiem, kas vēlas atbildēt uz jautājumiem par savām zināšanām savā jomā, piemēram, par tehnisko dokumentāciju, līgumiem, produktu aprakstiem...

Kas ir izguves paplašināta ģenerēšana (RAG)?

Semantiskā meklēšana

Retrieval Augmented Generation (RAG) ir metode, kas uzlabo ģeneratīvo mākslīgā intelekta modeļu, piemēram, lielo valodas modeļu (LLM), precizitāti un uzticamību, iekļaujot ārējos datu avotus, lai nodrošinātu kontekstuāli precīzāku un aktuālāku informāciju. Tā integrē meklēšanas komponentu ar ģeneratīvo modeli, ļaujot sistēmai meklēt un iegūt attiecīgo informāciju no datubāzes vai zināšanu bāzes, lai papildinātu tās iekšējās zināšanas, ģenerējot atbildes.

Šāda pieeja nodrošina, ka AI modelis var sniegt atbildes, pamatojoties uz aktuālākajiem un uzticamākajiem faktiem, un ļauj lietotājiem pārbaudīt modeļa atbildēs izmantotās informācijas avotus. RAG palīdz pamatot AI modeli ar ārējiem zināšanu avotiem, uzlabojot tā rezultātu kvalitāti un nodrošinot veidu, kā atjaunināt modeli bez nepieciešamības veikt plašu pārkvalifikāciju.

RAG ir lieliska stratēģija, lai mazinātu iespējamās halucinācijas, ko rada ģeneratīvie mākslīgā intelekta modeļi. RAG palīdz izveidot jautājumu atbildēšanas sistēmu, kurai ir labākais no abām pasaulēm: faktiskā precizitāte un cilvēka atbildes, kas ģenerētas dabiskajā valodā.

Kas ir teikuma transformatoru bibliotēka?

Teikumu pārveidotāji

Sentence Transformers bibliotēka ir jaudīga Python sistēma, kas izstrādāta, lai veiktu modernas teksta iestrādnes. Tā ir balstīta uz transformatoru neironu tīkliem, piemēram, BERT, RoBERTa, XLM-R un citiem, kas nodrošina augstāko veiktspēju dažādos uzdevumos, tostarp semantiskajā meklēšanā, parafrāžu ieguvē, semantiskās līdzības salīdzināšanā, klasterizēšanā un citos. Šī bibliotēka ļauj viegli pielāgot teikumu iestrādes metodes, ļaujot izveidot konkrētiem uzdevumiem pielāgotas teikumu iestrādes, kas atbilst īpašām vajadzībām. Uzziniet vairāk Sentence Transformers vietnē

Bibliotēka piedāvā plašu iepriekš apmācītu teikumu pārveidotāju modeļu klāstu vairāk nekā 50 valodām, kas pieejami vietnē Hugging Face. Lietotāji, izmantojot bibliotēku, var arī apmācīt vai precizēt savus modeļus, nodrošinot elastību, lai radītu pielāgotus modeļus unikāliem lietošanas gadījumiem. Sentence Transformers komanda nesen izlaida jaunu galveno versiju (v3), kas ievērojami uzlabo šīs bibliotēkas iespējas, īpaši tās precizēšanas iespējas.

Sentence Transformers bibliotēka ir ātra, visaptveroša un labi uzturēta, tāpēc mēs to izmantojam šajā pamācībā.

Paša semantiskās meklēšanas modeļa izveide

Paša semantiskās meklēšanas modeļa izveide ir lielisks veids, kā iegūt precīzus rezultātus, vienlaikus nodrošinot ļoti zemu latentumu. Tas ir vēl jo svarīgāk, ja izvietojat savu semantiskās meklēšanas modeli uz GPU.

Vispirms izveidosim nelielu datu kopu, kas satur mūsu datus. Izveidojiet CSV datni ar 1 kolonnu (ar nosaukumu "dataset.csv"), kurā ir šāda tehniskā dokumentācija par HP printeriem (reālajā dzīvē, protams, vēlēsieties iekļaut daudz vairāk piemēru):

"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 LaserJet comes with a one-year HP commercial warranty (or HP Limited Warranty)."
"HP LaserJet ; Lowest cost per page on mono laser printing. · $319.99 ; Wireless options available. · $109.00 ; Essential management features. · $209.00."

Katrā rindā var būt līdz 512 žetoniem (kas aptuveni atbilst 400 vārdiem), un, lai nodrošinātu maksimālu precizitāti, ieteicams nepārsniegt 128 žetonus (kas aptuveni atbilst 100 vārdiem). Tagad, kad mūsu datu kopā ir 3 dokumentācijas vienības, mēs varam kodēt datus, izmantojot mūsu modeli ar teikumu pārveidotājiem. Izveidojiet Python skriptu ar šādu tekstu (pārliecinieties, ka ir instalēts PyTorch un Sentence Transformers).

from sentence_transformers import SentenceTransformer
import csv
import torch

model_name = 'paraphrase-multilingual-mpnet-base-v2'
encoded_model_path = 'semantic_search_model.pt'
dataset_path = 'dataset.csv'

bi_encoder = SentenceTransformer(model_name)

passages = []
with open(dataset_path) as csv_file:
    csv_reader = csv.reader(csv_file)
    for row in csv_reader:
        passages.append(row[0])
        
corpus_embeddings = bi_encoder.encode(
    passages, batch_size=32, convert_to_tensor=True, show_progress_bar=True)

torch.save(corpus_embeddings, encoded_model_path)

Šis skripts lejupielādē un izmanto paraphrase-multilingual-mpnet-base-v2 kā bāzes modeli un izmanto to mūsu datu kodēšanai. Varat izvēlēties no daudziem pieejamiem iepriekš apmācītiem modeļiem atkarībā no savām prasībām (modeļa lielums, lietojuma gadījums, atbalstītās valodas, ...). Atkarībā no jūsu aparatūras jūs vēlaties pielāgot parametru "batch_size", lai paātrinātu kodēšanas procesu.

Kad modelis ir izveidots, varat to izmantot secinājumiem, izmantojot šādu Python skriptu:

import csv
from sentence_transformers import SentenceTransformer, util
import torch

bi_encoder = SentenceTransformer('paraphrase-multilingual-mpnet-base-v2')
semantic_search_model = torch.load('semantic_search_model.pt')

passages = []
with open('app/custom_model/dataset.csv') as csv_file:
    csv_reader = csv.reader(csv_file)
    for row in csv_reader:
        passages.append(row[0])

question_embedding = bi_encoder.encode(
    "How long is the warranty on the HP Color LaserJet Pro?", convert_to_tensor=True)
hits = util.semantic_search(
    question_embedding, semantic_search_model, top_k=3)
hits = hits[0]

result = {"search_results": [
    {"score": hit['score'], "text": passages[hit['corpus_id']]} for hit in hits]}

Iepriekš minētais secināšanas skripts dod šādus rezultātus:

{
"search_results": [
    {
        "score": 0.99,
        "text": "Every HP LaserJet comes with a one-year HP commercial warranty (or HP Limited Warranty)."
    },
    {
        "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."
    },
    ]
}

Mūsu secināšanas skripta parametrs "top_k" nosaka, cik daudz rezultātu mēs vēlamies atgriezt. Rezultātā mēs parādām atbilstošo tekstu no datu kopas ar ticamības rezultātu. Šis rādītājs ir svarīgs, jo tas palīdz mums izlemt, vai mēs vēlamies pieņemt atbildi vai ne.

Atbildes ģenerēšana dabiskajā valodā ar ģeneratīvo mākslīgo intelektu

Kā redzams, galvenais semantiskās meklēšanas ierobežojums ir tas, ka modelis atgriež neapstrādātu tekstu no datu kopas bez tiešas atbildes uz jautājumu. Tāpēc tagad mēs to vēlamies nodot ģeneratīvajam mākslīgā intelekta modelim kā kontekstu, lai atbildētu uz sākotnējo jautājumu dabiskajā valodā.

Mēs to varam viegli panākt, izmantojot modernu LLM, piemēram, GPT-4 OpenAI vai LLaMA 3 un ChatDolphin NLP Cloud. Varat izvēlēties vai nu saglabāt labāko rezultātu no semantiskās meklēšanas modeļa un nodot to kā kontekstu LLM, vai arī saglabāt vairākus rezultātus. Šeit ir ātrais piemērs, kurā izmantots tikai labākais rezultāts:

Context: Every HP LaserJet comes with a one-year HP commercial warranty (or HP Limited Warranty).
Based on the above context, answer the following question: How long is the warranty on the HP Color LaserJet Pro?

Šis pieprasījums atgriež kaut ko līdzīgu:

The warranty on the HP Color LasertJet Pro lasts at least 1 year.

Semantiskās meklēšanas modelis ar kodētiem datiem VS iegulumu glabāšana vektoru datubāzē

Izguves papildinātajā ģenerēšanas sistēmā (RAG) divas interesantas iespējas ir semantiskās meklēšanas modeļa izveide, izmantojot vietējos kodētos datus, vai vektoru datubāzes izmantošana.

Kodējot savus datus, mēs tos pārvēršam tenzoros un tad mums ir iespēja tos ielādēt GPU. No otras puses, vektoru datubāze ir specializēta datubāze, kas paredzēta šo lieldimensiju vektoru efektīvai glabāšanai, indeksēšanai un meklēšanai.

Uzņēmumiem, kas vēlas sasniegt ļoti zemu latentumu, ieteicams kodēt savus datus un ielādēt tos GPU, lai uzlabotu aprēķinu laiku. Tomēr tas notiek uz elastīguma rēķina, jo dati ir jākodē no jauna ikreiz, kad datu kopa mainās. Ja pamatā esošie dati mainās ļoti bieži, jums varētu būt vienkāršāk izvilkt iegultnes un pakāpeniski saglabāt tās vektoru datubāzē (piemēram, PG Vector).

Secinājums

Atgūšanas paplašināta ģenerēšana ir ļoti svarīga uzņēmumiem, kas meklē atbildes uz jautājumiem par specifiskiem datiem, piemēram, tehnisko dokumentāciju, līgumiem u. c., jo tā ievērojami palielina rezultātu precizitāti. RAG ir, piemēram, atbalsta tērzēšanas robota galvenā sastāvdaļa.

Sentence Transformers ir lieliska bibliotēka, ko var izmantot, lai izveidotu savu semantiskās meklēšanas modeli, pamatojoties uz saviem datiem. Ja to izmanto GPU un apvieno ar uzlabotu ģeneratīvo AI modeli, šāds modelis izrādās ārkārtīgi jaudīgs.

Ja neesat ieinteresēts pats izveidot un izvietot savu semantiskās meklēšanas modeli, kas balstīts uz teikumu transformatoriem, varat to viegli izdarīt ar vienu klikšķi, izmantojot NLP Cloud. Izmēģiniet semantisko meklēšanu NLP Cloud jau tagad!

Ja jums ir jautājumi par RAG, semantisko meklēšanu un teikumu pārveidotājiem, lūdzu, nevilcinieties mums jautāt, vienmēr ir prieks sniegt konsultācijas!

Julien
NLP Cloud tehniskais direktors