Võitlevad tehisintellekti või täieliku arendusega? Meie eksperdid on siin, et teid juhendada: kohandatud nõuanded, tehniline integratsioon ja palju muud. Võtke ühendust aadressil [email protected].

Semantilise otsingumudeli loomine lause transformaatoritega RAG rakenduse jaoks

Retrieval Augmented Generation (RAG) torujuhtme rakendamine oma semantilise otsingumudeli peenhäälestamise abil on võimas lähenemisviis, et suurendada küsimuste vastamise süsteemide täpsust ja asjakohasust.

See tehnika ühendab nii semantilise otsingu kui ka genereeriva tehisintellekti tugevused, võimaldades süsteemil paremini mõista kasutaja küsimusi ning genereerida täpsemaid ja kontekstuaalselt asjakohasemaid vastuseid. Semantilise otsingumudeli peenhäälestamisega lause transformaatorite abil saavad arendajad kohandada mudelit oma konkreetsele valdkonnale, parandades RAG-putke üldist jõudlust.

Semantiline otsing

Mis on semantiline otsing?

Semantiline otsing on andmete otsimise tehnika, mis läheb kaugemale traditsioonilistest märksõnapõhistest otsingumeetoditest. See kasutab loomuliku keele töötlemist ja masinõppe algoritme, et parandada otsingutulemuste täpsust, võttes arvesse otsija kavatsust ja tema päringus kasutatud terminite kontekstuaalset tähendust. Selle lähenemisviisi eesmärk on mõista otsingupäringu ja veebilehtede sisu aluseks olevat tähendust, mitte lihtsalt sobitada märksõnu. Sel viisil võib semantiline otsing anda asjakohasemaid tulemusi, isegi kui need ei sisalda täpselt algses päringus kasutatud sõnu.

Selle saavutamiseks kasutatakse semantilises otsingus erinevaid meetodeid, näiteks sõnatähenduse lahtimõtestamist, mõistete ekstraheerimist ja päringu laiendamist. Samuti kasutatakse vektorotsingut ja masinõpet, et tagastada tulemusi, mis püüavad vastata kasutaja kavatsusele ja kontekstile. Semantilist otsingut kasutatakse laialdaselt veebiotsingumootorites, näiteks Google'is, ning seda toetavad sellised tehnoloogiad nagu teadmistegraaf, mis salvestab struktureeritud andmeid üksuste ja nende seoste kohta. See võimaldab otsingumootoritel mõista otsingupäringute tähendust ning pakkuda täpsemaid ja sisukamaid tulemusi.

Semantiline otsing on väga kasulik ettevõtetele, kes soovivad vastata küsimustele, mis on seotud nende enda valdkonnateadmistega, näiteks tehnilise dokumentatsiooni, lepingute, tootekirjelduste...

Mis on taastootmise täiendatud põlvkond (RAG)?

Semantiline otsing

Retrieval Augmented Generation (RAG) on tehnika, mis suurendab genereerivate tehisintellekti mudelite, näiteks suurte keelemudelite (LLM) täpsust ja usaldusväärsust, kaasates väliseid andmeallikaid, et pakkuda kontekstuaalselt täpsemat ja ajakohasemat teavet. See integreerib otsingukomponendi generatiivse mudeliga, võimaldades süsteemil otsida ja hankida asjakohast teavet andmebaasist või teadmistebaasist, et täiendada oma sisemisi teadmisi vastuste genereerimisel.

Selline lähenemisviis tagab, et tehisintellekti mudel suudab anda vastuseid, mis põhinevad kõige ajakohasematel ja usaldusväärsematel faktidel, ning võimaldab kasutajatel kontrollida mudeli vastustes kasutatud teabe allikaid. RAG aitab tehisintellekti mudelil tugineda välistele teadmiste allikatele, parandab selle väljundi kvaliteeti ja võimaldab mudelit ajakohastada ilma ulatusliku ümberõppeta.

RAG on suurepärane strateegia genereerivate tehisintellekti mudelite võimalike hallutsinatsioonide leevendamiseks. RAG aitab luua küsimuste vastamise süsteemi, millel on mõlemast maailmast parim: faktiline täpsus ja loomulikus keeles genereeritud inimvastused.

Mis on lause transformaatorite raamatukogu?

Lausetransformaatorid

Sentence Transformers on võimas Pythoni raamistik, mis on loodud tipptasemel tekstimoodustuseks. See on üles ehitatud transformaatorite neuronvõrkudele, nagu BERT, RoBERTa, XLM-R ja teised, saavutades tipptaseme erinevates ülesannetes, sealhulgas semantilises otsingus, parafraaside kaevandamises, semantilise sarnasuse võrdluses, klastreerimises ja mujal. See raamatukogu võimaldab lauseehitusmeetodite lihtsat peenhäälestamist, võimaldades luua konkreetsetele vajadustele kohandatud ülesandepõhiseid lauseehitusi. Lisateave Sentence Transformersi veebisaidil

Raamatukogu pakub laia valikut eelnevalt treenitud lause muundurite mudeleid enam kui 50 keele jaoks, mis on kättesaadavad Hugging Face'i platvormil. Kasutajad saavad raamatukogu abil treenida või peenhäälestada ka omaenda mudeleid, mis võimaldab paindlikult luua kohandatud mudeleid unikaalsete kasutusjuhtumite jaoks. Sentence Transformersi meeskond andis hiljuti välja uue peamise versiooni (v3), mis parandab oluliselt selle raamatukogu võimalusi, eriti selle peenhäälestusvõimalusi.

Sentence Transformers'i raamatukogu on kiire, põhjalik ja hästi hooldatud, mistõttu kasutame seda käesolevas õpetuses.

Oma semantilise otsingumudeli loomine

Oma semantilise otsingumudeli loomine on suurepärane võimalus saada täpseid tulemusi, tagades samal ajal väga väikese latentsuse. See kehtib veelgi enam, kui kasutate oma semantilist otsingumudelit GPU-l.

Esmalt teeme väikese andmekogumi, mis sisaldab meie andmeid. Looge 1-sambaline CSV-fail (nimega "dataset.csv"), mis sisaldab järgmist tehnilist dokumentatsiooni HP printerite kohta (tegeliku elu stsenaariumis soovite muidugi lisada palju rohkem näiteid):

"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."

Iga rida võib sisaldada kuni 512 märki (mis vastab ligikaudu 400 sõnale), kuid täpsuse maksimeerimiseks on soovitatav jääda alla 128 märgi (mis vastab ligikaudu 100 sõnale). Nüüd, kui meil on meie andmekogumis 3 dokumentatsiooni, saame andmeid kodeerida, kasutades meie mudelit lause muunduritega. Looge Pythoni skript järgmiselt (veenduge, et PyTorch ja Sentence Transformers on paigaldatud).

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)

See skript laeb alla ja kasutab paraphrase-multilingual-mpnet-base-v2 baasmudelit ning kasutab seda meie andmete kodeerimiseks. Saate valida paljude olemasolevate eeltreenitud mudelite vahel, sõltuvalt teie nõuetest (mudeli suurus, kasutusjuhtum, toetatud keeled, ...). Sõltuvalt teie riistvarast soovite kohandada parameetrit "batch_size", et kodeerimisprotsessi kiirendada.

Pärast loomist saate oma mudelit kasutada järelduste tegemiseks järgmise Python-skripti abil:

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]}

Ülaltoodud järeldusskript annab järgmised tulemused:

{
"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."
    },
    ]
}

Meie järeldusskriptis määrab parameeter "top_k", mitu tulemust me soovime tagastada. Tulemuses näitame andmekogumi sobivat teksti koos usaldusskooriga. See skoor on oluline, sest see aitab meil otsustada, kas me tahame vastuse vastu võtta või mitte.

Loomuliku keele vastuse genereerimine geneeriva tehisintellekti abil

Nagu näete, on semantilise otsingu peamine piirang see, et mudel tagastab andmekogumi toorteksti, ilma et see vastaks otseselt küsimusele. Seega tahame nüüd anda selle genereerivale tehisintellekti mudelile kontekstina, et vastata algsele küsimusele loomulikus keeles.

Me saame seda hõlpsasti saavutada, kasutades täiustatud LLMi, nagu GPT-4 OpenAIs või LLaMA 3 ja ChatDolphin NLP Cloudis. Saate kas otsustada, kas jätta parim tulemus semantilisest otsingumudelist ja edastada see kontekstina LLMile, või jätta mitu tulemust. Siin on näide, kus kasutatakse ainult parimat tulemust:

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?

See taotlus tagastab midagi sellist:

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

Semantiline otsingumudel kodeeritud andmetega VS sisseehituste salvestamine vektorandmebaasis

RAG-süsteemis (Retrieval-Augmented Generation) on kaks huvitavat võimalust semantilise otsingumudeli loomine kohalike kodeeritud andmete abil või vektorandmebaasi kasutamine.

Oma andmete kodeerimisel teisendame andmed tensoriteks ja seejärel on meil võimalus andmed GPUsse laadida. Teisest küljest on vektorandmebaas spetsiaalne andmebaas, mis on loodud nende ülimõõtmeliste vektorite tõhusaks salvestamiseks, indekseerimiseks ja päringute tegemiseks.

Ettevõtetele, kes soovivad saavutada väga madalaid latentsusi, on soovitatav oma andmed kodeerida ja laadida andmed GPU-sse, et parandada arvutuste aega. See läheb aga paindlikkuse arvelt, sest teie andmed tuleb iga kord, kui andmekogum muutub, uuesti kodeerida. Kui teie aluseks olevad andmed muutuvad väga sageli, võib teil olla lihtsam ekstraheerida embeddingid ja salvestada need järk-järgult vektorandmebaasis (näiteks PG Vector).

Kokkuvõte

Täiendatud põlvkond on väga oluline ettevõtete jaoks, kes otsivad vastuseid konkreetsete andmete, näiteks tehnilise dokumentatsiooni, lepingute jne kohta, sest see suurendab märkimisväärselt tulemuste täpsust. RAG on näiteks tugiteenuste juturobotide võtmekomponent.

Sentence Transformers on suurepärane raamatukogu, mida saab kasutada oma semantilise otsingumudeli loomiseks oma andmete põhjal. Kui selline mudel kasutatakse GPUs ja seda kombineeritakse täiustatud genereeriva tehisintellekti mudeliga, osutub see äärmiselt võimsaks.

Kui te ei ole huvitatud oma semantilise otsingumudeli loomisest ja kasutuselevõtust, mis põhineb Sentence Transformersil, saate seda hõlpsasti teha 1 klõpsuga NLP Cloudis. Proovi semantilist otsingut NLP Cloudis nüüd!

Kui teil on küsimusi RAGi, semantilise otsingu ja Sentence Transformersi kohta, siis küsige julgelt, meil on alati hea meel teid nõustada!

Julien
NLP Cloudi tehnoloogiajuht