I te wa e pa ana ki te tukatuka reo maori (NLP) me te tiki korero, ko te kaha ki te tango tika i nga korero e tika ana te mea nui. I te wa e tipu haere tonu ana te mara, kei te whakawhanakehia nga tikanga hou me nga tikanga hei whakarei ake i te mahinga o nga punaha tiki, ina koa i roto i te horopaki o Tikina Whakatupuranga Whakanuia (RAG). Ko tetahi o enei tikanga, e mohiotia ana ko te tangohanga e rua-waahanga me nga rerankers, kua puta hei otinga kaha ki te whakatika i nga herenga o nga tikanga tikinga tuku iho.
I roto i tenei tuhinga ka matapakihia e matou nga ahuatanga o te tangohanga e rua-waahanga me te rerankers, te tirotiro i o raatau maataapono, rautaki whakatinana, me nga painga ka whakawhiwhia ki te whakarei ake i te tika me te pai o nga punaha RAG. Ka whakarato ano hoki matou i nga tauira whaihua me nga waahanga waehere hei whakaatu i nga ariā me te whakamarama ake i te maaramatanga mo tenei tikanga hou.
Te Maramatanga Whakatupu Whakatupuranga Whakanuia (RAG)
I mua i te ruku ki nga korero mo te tangohanga e rua-waahanga me te rerankers, me titiro ano tatou ki te kaupapa o Retrieval Augmented Generation (RAG). Ko te RAG he tikanga e whakawhanui ana i te mohiotanga me te kaha o nga tauira reo nui (LLM) ma te whai waahi ki a raatau ki nga puna korero o waho, penei i nga papaa raraunga, kohinga tuhinga ranei. Tirohia etahi atu korero mai i te tuhinga "He Ruku Hohonu ki te Tiaki Whakatupuranga Whakanuia i LLM".
Ko te tukanga RAG angamaheni ko nga waahanga e whai ake nei:
- Uiui: Ka tukuna e te kaiwhakamahi he patai, he tohutohu ranei ki te punaha.
- Te tikinga: Ka uiuia e te punaha he patengi raraunga vector, kohinga tuhinga ranei hei rapu korero e pa ana ki te patai a te kaiwhakamahi.
- hua: Ko nga korero i tikina ka honoa ki te patai a te kaiwhakamahi, ki te tohutohu ranei.
- Nga whakatupuranga: Ka tukatukahia e te tauira reo te whakauru whakaurunga me te whakaputa i te whakautu, te whakamahi i nga korero o waho ki te whakarei ake i te tika me te matawhānui o ana putanga.
Ahakoa kua whakamatauhia e te RAG he tikanga kaha, ehara i te mea kaore he wero. Ko tetahi o nga take nui kei roto i te waahi tangohanga, kei te kore e taea e nga tikanga whakahoki tuku iho te tautuhi i nga tuhinga e tino whai kiko ana, e arai atu ai ki nga whakautu iti, kore tika ranei mai i te tauira reo.
Te Hiahia mo te Tiki Tiki-rua me nga Kaihuri
Ko nga tikanga tiki mai i mua, penei i nga mea e pa ana ki te whakataurite kupu matua, ki nga tauira mokowā vector ranei, he uaua ki te hopu i nga hononga oro i waenga i nga patai me nga tuhinga. Ka taea e tenei herenga te tiki atu i nga tuhinga e tino whai kiko ana, e ngaro ana ranei i nga korero tino nui ka taea te whakapai ake i te kounga o te whakautu kua mahia.
Hei whakatutuki i tenei wero, kua huri nga kairangahau me nga tohunga ki te tango i nga waahanga e rua me nga rerankers. Kei roto i tenei huarahi he tukanga e rua nga waahanga:
- Te Tiaki Tuatahi: I te wahanga tuatahi, ka tikina he huinga ahua nui o nga tuhinga e tika ana ma te whakamahi i te tikanga tiki tere me te whai hua, penei i te tauira mokowā vector, te rapu kupu-matua ranei.
- Reranga: I te wahanga tuarua, ka whakamahia he tauira whakarangatira matatau ake ki te whakaraupapa ano i nga tuhinga i tikina i te tuatahi i runga i te whai take ki te patai, me te kawe i nga tuhinga e tika ana ki runga ake o te rarangi.
Ko te tauira whakarangatira, he whatunga neural, he hoahoanga-whakawhitiwhiti ranei, he mea whakangungua ki te aromatawai i te whai take o tetahi tuhinga ki tetahi patai. Ma te whakamahi i nga kaha matatau ki te mohio ki te reo maori, ka taea e te reranker te hopu i nga ahuatanga o te reo me nga hononga horopaki i waenga i te patai me nga tuhinga, ka hua ake he raupapatanga tika me te whai take.
Nga Painga o te Tiki Tiki-rua me nga Kaihoko
Ko te tangohanga o nga waahanga e rua me nga rerankers he maha nga painga nui i roto i te horopaki o nga punaha RAG:
- Pai ake te Tika: Ma te whakariterite ano i nga tuhinga i tangohia i te tuatahi me te whakatairanga i nga mea e tino whai kiko ana ki runga ake, ka taea e te punaha te whakarato i nga korero tino tika me te tino tika ki te tauira reo, e arai atu ai ki nga whakautu hanga kounga teitei ake.
- Nga take o waho o te rohe kua whakahekehia: Ko nga tauira whakauru e whakamahia ana mo te tikinga tuku iho ka whakangungua i runga i te roopu kupu-a-whaanui, kaore pea i te hopu tika i te reo me nga kupu kupu-a-rohe. Ko nga tauira whakahou, i tetahi atu taha, ka taea te whakangungu i runga i nga raraunga motuhake-a-rohe, te whakaiti i te raruraru "waho-o-rohe" me te whakapai ake i te whaitake o nga tuhinga kua tangohia mai i roto i nga rohe motuhake.
- Tuhinga: Ko te huarahi e rua-waahanga e taea ai te whakatauine pai ma te whakamahi i nga tikanga tiki tere me te mama i te wahanga tuatahi, i te wa e rahuitia ana te mahi whakarangatira tino kaha ake mo te waahanga iti o nga tuhinga.
- täwariwari: Ka taea te whakakapi, te whakahou ake ranei i nga tauira whakarangatira i runga i te tikanga tikinga tuatahi, ma te whakangawari me te urutau ki nga hiahia e tipu haere ana o te punaha.
ColBERT: He pai, he whai hua hoki te taunekeneke o te mutunga
Ko tetahi o nga tauira tino rongonui i roto i te ao o te reanking ko ColBERT (Ko te Whakawhitiwhitinga Roa o te Horopaki mo BERT). Ko te ColBERT he tauira reranker tuhinga e whakamahi ana i te kaha o te mohiotanga reo hohonu o BERT i te wa e whakauru ana i tetahi tikanga tauwhitiwhiti hou e kiia nei ko "te taunekeneke mutunga."
ColBERT: He Rapu Whakawhitinga Pai me te Whaihua ma te Whakawhitiwhitinga Rorohiko i runga i te BERT
Ko te tikanga o te taunekeneke o te mutunga o ColBERT ka taea te tiki tika me te tika ma te tukatuka i nga patai me nga tuhinga motuhake tae noa ki nga waahanga whakamutunga o te tukanga tiki. Ko te tikanga, ka whakawaehere motuhake a ColBERT i te patai me te tuhinga ma te whakamahi i te BERT, katahi ka mahi i tetahi hikoi ngawari me te kaha o te taunekeneke e whakatauira ana i o raatau ahua pai. Ma te whakaroa engari ma te pupuri tonu i tenei tauwhitinga pai, ka taea e ColBERT te whakaputa i te ahua o nga tauira reo hohonu i te wa kotahi ka whiwhi i te kaha ki te tatau i mua i nga whakaaturanga tuhinga ki te tuimotu, me te tere tere o te tukatuka patai.
He maha nga painga o te hoahoanga taunekeneke mutunga mai a ColBERT, tae atu ki te pai ake o te mahi rorohiko, te tauine me te rahi o te kohinga tuhinga, me te whai tikanga mo nga ahuatanga o te ao. I tua atu, kua whakanuia ake a ColBERT ki nga tikanga penei i te tirotiro kua whakakorehia me te taapiri toenga (i roto i te ColBERTv2), e whakamahine ana i te mahi whakangungu me te whakaiti i te tapuwae mokowhiti o te tauira i te wa e mau tonu ana te whai huatanga o te tiki mai.
Ko tenei waahanga waehere e whakaatu ana me pehea te whirihora me te whakamahi i te tauira jina-colbert-v1-en mo te whakariterite i te kohinga tuhinga, me te kaha ki te hapai i nga horopaki roa.
Te Whakatinana i te Tiki Tangata-rua me te Rerankers
Inaianei kua maarama taatau ki nga maataapono kei muri i te tangohanga e rua nga waahanga me te whakahou, me tirotirohia to raatau whakatinanatanga i roto i te horopaki o te punaha RAG. Ka whakamahia e matou nga whare pukapuka rongonui me nga anga hei whakaatu i te whakaurunga o enei tikanga.
Te whakatu i te Taiao
I mua i te ruku ki roto i te waehere, me whakarite to tatou taiao whanaketanga. Ka whakamahi matou i te Python me etahi whare pukapuka NLP rongonui, tae atu ki a Hugging Face Transformers, Sentence Transformers, me LanceDB.
# Install required libraries
!pip install datasets huggingface_hub sentence_transformers lancedb
Te Whakarite Raraunga
Mo nga kaupapa whakaatu, ka whakamahia e matou te huingararaunga “ai-arxiv-chunked” mai i Hugging Face Datasets, kei roto neke atu i te 400 pepa ArXiv mo te ako miihini, te tukatuka reo maori, me nga tauira reo nui.
from datasets import load_dataset
dataset = load_dataset("jamescalam/ai-arxiv-chunked", split="train")
<pre>
I muri mai, ka tukatukahia e matou nga raraunga ka wehewehea ki nga wahanga iti kia pai ai te tiki me te tukatuka.
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)
Mo te waahi tikinga tuatahi, ka whakamahia e matou he tauira Whakawhiti Rerenga hei whakawaehere i a matou tuhinga me o patai ki roto i nga whakaaturanga vector kikorangi, katahi ka mahi i nga rapunga tata tata ki te whakamahi i te papaunga raraunga vector penei i a 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)
Ma te taurangi o a maatau tuhinga, ka taea e taatau te tiki tuatahi ma te rapu i nga hoa tata tata ki tetahi vector patai.
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)
Reranga
Whai muri i te tikinga tuatahi, ka whakamahia e matou he tauira whakarangatira ki te whakariterite ano i nga tuhinga i tikina mai i runga i te whai take ki te patai. I roto i tenei tauira, ka whakamahia e matou te ColBERT reranker, he tauira tere me te tika i hangaia mo te whakarangatira tuhinga.
from lancedb.rerankers import ColbertReranker
reranker = ColbertReranker()
# Rerank initial documents
reranked_docs = reranker.rerank(query, initial_docs)
te reranked_docs
Kei roto i te rarangi nga tuhinga i whakaraupapahia i runga i te whai take ki te patai, i whakatauhia e te ColBERT reranker.
Whakanuia me te Whakatupuranga
Ma nga tuhinga kua whakahouhia me nga tuhinga e tika ana, ka taea e taatau te haere ki nga waahanga whakatipu me te whakatipuranga o te paipa RAG. Ka whakamahia e matou he tauira reo mai i te whare pukapuka Hugging Face Transformers hei whakaputa i te whakautu whakamutunga.
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)