Kuungana na sisi

Artificial General Intelligence

Nguvu ya Wakaaji Upya na Urejeshaji wa Hatua Mbili kwa Kizazi Kilichoongezwa cha Urejeshaji

mm
Updated on
Retrieval Augmented Generation

Linapokuja suala la usindikaji wa lugha asilia (NLP) na urejeshaji wa habari, uwezo wa kupata habari muhimu kwa ufanisi na kwa usahihi ni muhimu. Kadiri nyanja inavyoendelea kubadilika, mbinu na mbinu mpya zinatengenezwa ili kuboresha utendaji wa mifumo ya urejeshaji, hasa katika muktadha wa Retrieval Augmented Generation (RAG). Mbinu moja kama hiyo, inayojulikana kama urejeshaji wa hatua mbili kwa wanaonunua upya, imeibuka kama suluhu yenye nguvu ya kushughulikia vikwazo vya asili vya mbinu za jadi za kurejesha.

Katika makala haya tunajadili ugumu wa urejeshaji na urejeshaji wa hatua mbili, kuchunguza kanuni zao za msingi, mikakati ya utekelezaji, na manufaa wanayotoa katika kuimarisha usahihi na ufanisi wa mifumo ya RAG. Pia tutatoa mifano ya vitendo na vijisehemu vya msimbo ili kuonyesha dhana na kuwezesha uelewa wa kina wa mbinu hii ya kisasa.

Kuelewa Urejeshaji Kizazi Kilichoongezwa (RAG)

wakala wa swe LLM

Kabla ya kupiga mbizi katika maelezo mahususi ya urejeshaji wa hatua mbili na viboreshaji upya, hebu tupitie tena kwa ufupi dhana ya Urejeshaji Kizazi Kilichoongezwa (RAG). RAG ni mbinu inayopanua maarifa na uwezo wa miundo mikubwa ya lugha (LLMs) kwa kuwapa ufikiaji wa vyanzo vya habari vya nje, kama vile hifadhidata au mkusanyiko wa hati. Rejelea zaidi kutoka kwa kifungu "Kuzama kwa Kina katika Urejeshaji wa Kizazi Kilichoongezwa katika LLM".

Mchakato wa kawaida wa RAG unajumuisha hatua zifuatazo:

  1. Query: Mtumiaji anauliza swali au anatoa maagizo kwa mfumo.
  2. Rudisha: Mfumo huulizia hifadhidata ya vekta au mkusanyiko wa hati ili kupata taarifa muhimu kwa swali la mtumiaji.
  3. ongezeko: Maelezo yaliyorejeshwa yanajumuishwa na swali au maagizo asilia ya mtumiaji.
  4. Kizazi: Muundo wa lugha huchakata ingizo lililoboreshwa na kutoa mwitikio, kwa kutumia maelezo ya nje ili kuimarisha usahihi na mapana wa matokeo yake.

Ingawa RAG imethibitisha kuwa mbinu yenye nguvu, haikosi changamoto zake. Mojawapo ya masuala muhimu iko katika hatua ya kurejesha, ambapo mbinu za jadi za kurejesha zinaweza kushindwa kutambua nyaraka muhimu zaidi, na kusababisha majibu madogo au yasiyo sahihi kutoka kwa mtindo wa lugha.

Haja ya Urejeshaji wa Hatua Mbili na Uwekaji Upya

Mbinu za jadi za kurejesha, kama vile zile zinazolingana na maneno muhimu au miundo ya nafasi ya vekta, mara nyingi hutatizika kunasa uhusiano wa kimaana kati ya hoja na hati. Kizuizi hiki kinaweza kusababisha urejeshaji wa hati ambazo zinafaa kijuujuu tu au zinazokosa taarifa muhimu ambazo zinaweza kuboresha kwa kiasi kikubwa ubora wa majibu yanayotolewa.

Ili kukabiliana na changamoto hii, watafiti na watendaji wamegeukia urejeshaji wa hatua mbili na wasafishaji. Mbinu hii inajumuisha mchakato wa hatua mbili:

  1. Urejeshaji wa Awali: Katika hatua ya kwanza, seti kubwa kiasi ya hati zinazoweza kufaa hutolewa kwa kutumia mbinu ya urejeshaji haraka na bora, kama vile muundo wa nafasi ya vekta au utafutaji unaotegemea manenomsingi.
  2. Kuweka upya nafasi: Katika hatua ya pili, muundo wa kisasa zaidi wa kupanga upya unatumiwa kupanga upya hati zilizorejeshwa kwa kuzingatia umuhimu wake kwa hoja, na kuleta hati muhimu zaidi juu ya orodha.

Muundo wa kupanga upya, mara nyingi mtandao wa neva au usanifu wa msingi wa kibadilishaji, umefunzwa mahususi kutathmini umuhimu wa hati kwa hoja fulani. Kwa kutumia uwezo wa hali ya juu wa uelewaji wa lugha asilia, mpangaji upya anaweza kunasa nuances za kisemantiki na uhusiano wa kimuktadha kati ya hoja na hati, na kusababisha nafasi sahihi na inayofaa zaidi.

Manufaa ya Urejeshaji wa Hatua Mbili na Uwekaji Upya

Kupitishwa kwa urejeshaji wa hatua mbili na warekebishaji hutoa faida kadhaa muhimu katika muktadha wa mifumo ya RAG:

  1. Usahihi ulioboreshwa: Kwa kupanga upya hati zilizorejeshwa hapo awali na kuzipandisha zile zinazofaa zaidi hadi juu, mfumo unaweza kutoa taarifa sahihi na sahihi zaidi kwa muundo wa lugha, na hivyo kusababisha majibu yanayotokana na ubora wa juu zaidi.
  2. Masuala ya Nje ya Kikoa Yaliyopunguzwa: Miundo ya upachikaji inayotumiwa kurejesha urejeshaji wa kitamaduni mara nyingi hufunzwa kuhusu muundo wa maandishi wa madhumuni ya jumla, ambayo huenda isichukue vya kutosha lugha na semantiki mahususi za kikoa. Miundo ya kupanga upya, kwa upande mwingine, inaweza kufunzwa kwenye data mahususi ya kikoa, kupunguza tatizo la "nje ya kikoa" na kuboresha umuhimu wa hati zilizorejeshwa ndani ya vikoa maalum.
  3. Uwezeshaji: Mbinu ya hatua mbili inaruhusu kuongeza ufanisi kwa kutumia mbinu za kurejesha haraka na nyepesi katika hatua ya awali, huku ikihifadhi mchakato wa kina zaidi wa kupanga upya nafasi kwa kundi ndogo la hati.
  4. Kubadilika: Miundo ya kupanga upya inaweza kubadilishwa au kusasishwa bila kuzingatia mbinu ya awali ya kurejesha, kutoa kunyumbulika na kubadilika kulingana na mahitaji yanayoendelea ya mfumo.

ColBERT: Mwingiliano Ufanisi na Ufanisi wa Marehemu

Mojawapo ya mifano bora katika uwanja wa kupanga upya ni ColBERT (Muktadha Muingiliano wa Marehemu juu ya BERT) ColBERT ni kielelezo cha kurekebisha hati ambacho huongeza uwezo wa kuelewa lugha kwa kina wa BERT wakati wa kutambulisha utaratibu mpya wa mwingiliano unaojulikana kama "mwingiliano wa marehemu."

ColBERT: Utafutaji wa Kifungu Ulio Bora na Ufanisi kupitia Mwingiliano wa Marehemu wa Muktadha juu ya BERT

ColBERT: Utafutaji wa Kifungu Ulio Bora na Ufanisi kupitia Mwingiliano wa Marehemu wa Muktadha juu ya BERT

Utaratibu wa mwingiliano wa marehemu katika ColBERT huruhusu urejeshaji kwa ufanisi na kwa usahihi kwa kuchakata hoja na hati kando hadi hatua za mwisho za mchakato wa kurejesha. Hasa, ColBERT husimba hoja na hati kwa kujitegemea kwa kutumia BERT, na kisha hutumia hatua nyepesi lakini yenye nguvu ya mwingiliano inayoonyesha ufanano wao wa hali ya juu. Kwa kuchelewesha lakini kudumisha mwingiliano huu mzuri, ColBERT inaweza kuongeza uwazi wa miundo ya lugha ya kina huku wakati huo huo ikipata uwezo wa kukokotoa uwasilishaji wa hati nje ya mtandao, na hivyo kuharakisha uchakataji wa hoja.

Usanifu wa marehemu wa mwingiliano wa ColBERT hutoa manufaa kadhaa, ikiwa ni pamoja na utendakazi ulioboreshwa wa ukokotoaji, upanuzi na ukubwa wa ukusanyaji wa hati, na utumiaji wa kimatendo kwa matukio ya ulimwengu halisi. Zaidi ya hayo, ColBERT imeimarishwa zaidi kwa mbinu kama vile usimamizi wa denoised na ukandamizaji wa mabaki (katika ColBERTv2), ambayo huboresha mchakato wa mafunzo na kupunguza alama ya nafasi ya mfano huku ikidumisha ufanisi wa juu wa kurejesha.

Kijisehemu hiki cha msimbo kinaonyesha jinsi ya kusanidi na kutumia modeli ya jina-colbert-v1-en kwa kuorodhesha mkusanyiko wa hati, ikitumia uwezo wake wa kushughulikia miktadha mirefu kwa ufanisi.

Utekelezaji wa Urejeshaji wa Hatua Mbili na Wakaaji Upya

Kwa kuwa sasa tuna uelewa wa kanuni za urejeshaji na urejeshaji wa hatua mbili, hebu tuchunguze utekelezaji wao wa vitendo ndani ya muktadha wa mfumo wa RAG. Tutatumia maktaba na mifumo maarufu ili kuonyesha ujumuishaji wa mbinu hizi.

Kuweka Mazingira

Kabla hatujaingia kwenye kanuni, hebu tuweke mazingira yetu ya maendeleo. Tutakuwa tukitumia Python na maktaba kadhaa maarufu za NLP, ikiwa ni pamoja na Hugging Face Transformers, Sentence Transformers, na LanceDB.

# Install required libraries
!pip install datasets huggingface_hub sentence_transformers lancedb

Maandalizi ya Data

Kwa madhumuni ya onyesho, tutatumia seti ya data ya “ai-arxiv-chunked” kutoka Hugging Face Datasets, ambayo ina zaidi ya karatasi 400 za ArXiv kuhusu kujifunza kwa mashine, kuchakata lugha asilia na miundo mikubwa ya lugha.

from datasets import load_dataset
dataset = load_dataset("jamescalam/ai-arxiv-chunked", split="train")
<pre>

Kisha, tutatayarisha data mapema na kuigawanya katika vipande vidogo ili kuwezesha urejeshaji na uchakataji kwa ufanisi.

from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
def chunk_text(text, chunk_size=512, overlap=64):
tokens = tokenizer.encode(text, return_tensors="pt", truncation=True)
chunks = tokens.split(chunk_size - overlap)
texts = [tokenizer.decode(chunk) for chunk in chunks]
return texts
chunked_data = []
for doc in dataset:
text = doc["chunk"]
chunked_texts = chunk_text(text)
chunked_data.extend(chunked_texts)
Kwa hatua ya awali ya urejeshaji, tutatumia kigezo cha Kibadilishaji Sentensi kusimba hati na hoja zetu katika viwakilishi vya vekta mnene, na kisha kufanya utafutaji wa karibu wa jirani kwa kutumia hifadhidata ya vekta kama LanceDB.
from sentence_transformers import SentenceTransformer
from lancedb import lancedb
# Load Sentence Transformer model
model = SentenceTransformer('all-MiniLM-L6-v2')
# Create LanceDB vector store
db = lancedb.lancedb('/path/to/store')
db.create_collection('docs', vector_dimension=model.get_sentence_embedding_dimension())
# Index documents
for text in chunked_data:
vector = model.encode(text).tolist()
db.insert_document('docs', vector, text)
from sentence_transformers import SentenceTransformer
from lancedb import lancedb
# Load Sentence Transformer model
model = SentenceTransformer('all-MiniLM-L6-v2')
# Create LanceDB vector store
db = lancedb.lancedb('/path/to/store')
db.create_collection('docs', vector_dimension=model.get_sentence_embedding_dimension())
# Index documents
for text in chunked_data:
vector = model.encode(text).tolist()
db.insert_document('docs', vector, text)

Hati zetu zikiwa zimeorodheshwa, tunaweza kufanya urejeshaji wa awali kwa kutafuta majirani wa karibu kwa vekta ya hoja.

from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
def chunk_text(text, chunk_size=512, overlap=64):
tokens = tokenizer.encode(text, return_tensors="pt", truncation=True)
chunks = tokens.split(chunk_size - overlap)
texts = [tokenizer.decode(chunk) for chunk in chunks]
return texts
chunked_data = []
for doc in dataset:
text = doc["chunk"]
chunked_texts = chunk_text(text)
chunked_data.extend(chunked_texts)

Kuweka upya nafasi

Baada ya urejeshaji wa awali, tutatumia muundo wa kupanga upya kupanga upya hati zilizorejeshwa kulingana na umuhimu wao kwa hoja. Katika mfano huu, tutatumia kipanga upya cha ColBERT, kielelezo cha haraka na sahihi cha kibadilishaji kilichoundwa mahususi kwa ajili ya cheo cha hati.

from lancedb.rerankers import ColbertReranker
reranker = ColbertReranker()
# Rerank initial documents
reranked_docs = reranker.rerank(query, initial_docs)

The reranked_docs list sasa ina hati zilizopangwa upya kulingana na umuhimu wake kwa hoja, kama ilivyobainishwa na mpangaji upya wa ColBERT.

Ongezeko na Kizazi

Tukiwa na hati zilizopangwa upya na zinazofaa mkononi, tunaweza kuendelea na hatua za uongezaji na uzalishaji wa bomba la RAG. Tutatumia muundo wa lugha kutoka maktaba ya Hugging Face Transformers ili kutoa jibu la mwisho.

from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
tokenizer = AutoTokenizer.from_pretrained("t5-base")
model = AutoModelForSeq2SeqLM.from_pretrained("t5-base")
# Augment query with reranked documents
augmented_query = query + " " + " ".join(reranked_docs[:3])
# Generate response from language model
input_ids = tokenizer.encode(augmented_query, return_tensors="pt")
output_ids = model.generate(input_ids, max_length=500)
response = tokenizer.decode(output_ids[0], skip_special_tokens=True)
print(response)

Katika kijisehemu cha msimbo hapo juu, tunaongeza swali asili kwa hati tatu kuu zilizopangwa upya, na kuunda augmented_query. Kisha tunapitisha swali hili lililoboreshwa kwa modeli ya lugha ya T5, ambayo hutoa jibu kulingana na muktadha uliotolewa.

The response kutofautisha kutakuwa na matokeo ya mwisho, kutumia maelezo ya nje kutoka kwa hati zilizorejeshwa na zilizochukuliwa tena ili kutoa jibu sahihi na la kina zaidi kwa hoja asili.

Mbinu na Mazingatio ya Juu

Ingawa utekelezaji ambao tumeshughulikia unatoa msingi thabiti wa kujumuisha urejeshaji wa hatua mbili na viboreshaji kwenye mfumo wa RAG, kuna mbinu kadhaa za hali ya juu na mambo yanayozingatiwa ambayo yanaweza kuimarisha zaidi utendakazi na uimara wa mbinu.

  1. Upanuzi wa hoja: Ili kuboresha hatua ya awali ya urejeshaji, unaweza kutumia mbinu za upanuzi wa hoja, ambazo zinahusisha kuongeza hoja asili kwa maneno au vifungu vinavyohusiana. Hii inaweza kusaidia kupata seti tofauti zaidi za hati zinazoweza kufaa.
  2. Ensemble Uwekaji upya: Badala ya kutegemea muundo mmoja wa kuweka upya nafasi, unaweza kuchanganya viboreshaji vingi kwenye mkusanyiko, ukitumia nguvu za miundo tofauti ili kuboresha utendakazi kwa ujumla.
  3. Fine-tuning Rerankers: Ingawa miundo ya kupanga upya iliyofunzwa awali inaweza kuwa na ufanisi, kurekebisha vyema kwenye data mahususi ya kikoa kunaweza kuimarisha zaidi uwezo wao wa kunasa semantiki mahususi za kikoa na ishara za umuhimu.
  4. Urejeshaji wa Mara kwa Mara na Upangaji upya: Katika baadhi ya matukio, marudio moja ya kurejesha na kupanga upya yanaweza kuwa ya kutosha. Unaweza kuchunguza mbinu za kurudia, ambapo matokeo ya muundo wa lugha hutumiwa kuboresha hoja na mchakato wa kurejesha, na kusababisha mfumo shirikishi zaidi na unaobadilika.
  5. Kusawazisha Umuhimu na Utofauti: Ingawa watangazaji upya wanalenga kukuza hati zinazofaa zaidi, ni muhimu kuweka usawa kati ya umuhimu na utofauti. Kujumuisha mbinu za kukuza anuwai kunaweza kusaidia kuzuia mfumo kuwa finyu au upendeleo katika vyanzo vyake vya habari.
  6. Vipimo vya Tathmini: Ili kutathmini ufanisi wa mbinu yako ya hatua mbili ya kurejesha na kupanga upya, utahitaji kufafanua vipimo vinavyofaa vya tathmini. Hizi zinaweza kujumuisha vipimo vya urejeshaji maelezo ya kitamaduni kama vile usahihi, kukumbuka, na wastani wa kiwango cha usawa (MRR), pamoja na vipimo mahususi vya kazi vinavyolengwa kulingana na hali yako ya utumiaji.

Hitimisho

Retrieval Augmented Generation (RAG) imeibuka kama mbinu yenye nguvu ya kuimarisha uwezo wa miundo mikubwa ya lugha kwa kutumia vyanzo vya habari vya nje. Hata hivyo, mbinu za jadi za kurejesha mara nyingi hujitahidi kutambua nyaraka zinazofaa zaidi, na kusababisha utendakazi mdogo.

Urejeshaji wa hatua mbili na wapangaji upya hutoa suluhisho la lazima kwa changamoto hii. Kwa kuchanganya hatua ya awali ya kurejesha haraka na muundo wa kisasa zaidi wa kupanga upya, mbinu hii inaweza kuboresha kwa kiasi kikubwa usahihi na umuhimu wa hati zilizorejeshwa, hatimaye kusababisha majibu ya ubora wa juu kutoka kwa muundo wa lugha.

Nimetumia miaka mitano iliyopita kujitumbukiza katika ulimwengu wa kuvutia wa Kujifunza kwa Mashine na Kujifunza kwa Kina. Shauku yangu na utaalam umeniongoza kuchangia zaidi ya miradi 50 ya uhandisi wa programu tofauti, nikizingatia haswa AI/ML. Udadisi wangu unaoendelea pia umenivutia kuelekea Uchakataji wa Lugha Asilia, uwanja ambao nina hamu ya kuchunguza zaidi.