քոթուկ Rerankers-ի ուժը և երկփուլային որոնումը ընդլայնված սերնդի որոնման համար - Unite.AI
Միացեք մեզ

Արհեստական ​​ընդհանուր հետախուզություն

Rerankers-ի ուժը և երկփուլային որոնումը որոնման ավելացված սերնդի համար

mm
Թարմացվել է on
Ընդլայնված սերնդի առբերում

Երբ խոսքը վերաբերում է բնական լեզվի մշակմանը (NLP) և տեղեկատվության որոնմանը, կարևոր է համապատասխան տեղեկատվություն արդյունավետ և ճշգրիտ առբերելու ունակությունը: Քանի որ ոլորտը շարունակում է զարգանալ, նոր տեխնիկա և մեթոդոլոգիաներ են մշակվում՝ բարձրացնելու որոնման համակարգերի աշխատանքը, հատկապես՝ համատեքստում. Ընդլայնված սերնդի առբերում (RAG): Այդպիսի տեխնիկաներից մեկը, որը հայտնի է որպես երկփուլային որոնում վերադասավորողների հետ, ի հայտ է եկել որպես հզոր լուծում՝ լուծելու ավանդական որոնման մեթոդների բնորոշ սահմանափակումները:

Այս հոդվածում մենք քննարկում ենք երկփուլային որոնման և վերադասավորման բարդությունները՝ ուսումնասիրելով դրանց հիմքում ընկած սկզբունքները, իրականացման ռազմավարությունները և օգուտները, որոնք նրանք առաջարկում են RAG համակարգերի ճշգրտությունն ու արդյունավետությունը բարձրացնելու համար: Մենք նաև կներկայացնենք գործնական օրինակներ և կոդի հատվածներ՝ հասկացությունները լուսաբանելու և այս առաջադեմ տեխնիկայի ավելի խորը ըմբռնումը հեշտացնելու համար:

Հասկանալով որոնման ավելացված սերունդը (RAG)

swe գործակալ LLM

Նախքան երկաստիճան որոնման և վերադասավորման առանձնահատկությունների մեջ խորանալը, եկեք համառոտ վերանայենք Retrieval Augmented Generation (RAG) հայեցակարգը: RAG-ը տեխնիկա է, որն ընդլայնում է մեծ լեզվական մոդելների (LLMs) գիտելիքներն ու հնարավորությունները՝ նրանց հասանելի դարձնելով արտաքին տեղեկատվության աղբյուրները, ինչպիսիք են տվյալների բազաները կամ փաստաթղթերի հավաքածուները: Մանրամասն տես հոդվածից «Խորը սուզում դեպի որոնման ավելացված սերունդ LLM-ում".

Տիպիկ RAG գործընթացը ներառում է հետևյալ քայլերը.

  1. QueryՕգտագործողը հարց է տալիս կամ հրահանգ է տալիս համակարգին:
  2. ԱռբերումՀամակարգը հարցում է կատարում վեկտորային տվյալների բազայի կամ փաստաթղթերի հավաքածուի վրա՝ օգտվողի հարցմանը համապատասխան տեղեկատվություն գտնելու համար:
  3. ՀավելումՍտացված տեղեկատվությունը համակցված է օգտագործողի սկզբնական հարցման կամ հրահանգի հետ:
  4. ՍերունդԼեզվի մոդելը մշակում է ընդլայնված մուտքագրումը և առաջացնում է պատասխան՝ օգտագործելով արտաքին տեղեկատվությունը, որպեսզի ընդլայնի իր արտադրանքի ճշգրտությունն ու համապարփակությունը:

Թեև RAG-ն ապացուցել է, որ հզոր տեխնիկա է, այն առանց մարտահրավերների չէ: Հիմնական խնդիրներից մեկը գտնվում է որոնման փուլում, որտեղ որոնման ավանդական մեթոդները կարող են չբացահայտել առավել համապատասխան փաստաթղթերը, ինչը հանգեցնում է լեզվական մոդելի ոչ օպտիմալ կամ ոչ ճշգրիտ պատասխանների:

Երկու փուլային որոնման և վերադասավորման անհրաժեշտություն

Որոնման ավանդական մեթոդները, ինչպիսիք են հիմնաբառերի համընկնման կամ վեկտորային տարածության մոդելների վրա հիմնվածները, հաճախ պայքարում են հարցումների և փաստաթղթերի միջև նրբերանգ իմաստային հարաբերությունները գրավելու համար: Այս սահմանափակումը կարող է հանգեցնել այն փաստաթղթերի որոնմանը, որոնք միայն մակերեսորեն տեղին են կամ բաց են թողնում կարևոր տեղեկատվություն, որը կարող է զգալիորեն բարելավել առաջացած պատասխանի որակը:

Այս մարտահրավերին դիմակայելու համար հետազոտողները և պրակտիկանտները դիմել են երկու փուլով որոնմանը` վերադասավորողների հետ: Այս մոտեցումը ներառում է երկու քայլ գործընթաց.

  1. Նախնական առբերումԱռաջին փուլում պոտենցիալ համապատասխան փաստաթղթերի համեմատաբար մեծ փաթեթ է առբերվում՝ օգտագործելով արագ և արդյունավետ որոնման մեթոդ, օրինակ՝ վեկտորային տարածության մոդելը կամ հիմնաբառի վրա հիմնված որոնումը:
  2. ՎերադասակարգումԵրկրորդ փուլում կիրառվում է վերադասավորման ավելի բարդ մոդել՝ սկզբնապես վերցված փաստաթղթերը վերադասավորելու համար՝ հիմնվելով հարցման հետ կապված դրանց հետ՝ արդյունավետորեն ամենահարմար փաստաթղթերը ցուցակի վերևում բերելով:

Վերակարգավորման մոդելը, հաճախ նեյրոնային ցանցը կամ տրանսֆորմատորի վրա հիմնված ճարտարապետությունը, հատուկ պատրաստված է փաստաթղթի համապատասխանությունը տվյալ հարցմանը գնահատելու համար: Օգտագործելով բնական լեզվի ըմբռնման առաջադեմ հնարավորությունները, վերադասավորիչը կարող է ընկալել հարցման և փաստաթղթերի միջև իմաստային նրբերանգները և համատեքստային հարաբերությունները, ինչը հանգեցնում է ավելի ճշգրիտ և համապատասխան վարկանիշի:

Երկու փուլային որոնման և վերադասավորման առավելությունները

Rerankers-ի հետ երկաստիճան որոնման ընդունումը մի քանի նշանակալի առավելություններ է տալիս RAG համակարգերի համատեքստում.

  1. Բարելավված ճշգրտությունՍկզբնապես վերցված փաստաթղթերը վերադասավորելով և ամենաարդիականները վերևում առաջ քաշելով՝ համակարգը կարող է ավելի ճշգրիտ և ճշգրիտ տեղեկատվություն տրամադրել լեզվի մոդելին՝ հանգեցնելով ավելի բարձր որակի գեներացված պատասխանների:
  2. Մեղմեցված տիրույթից դուրս խնդիրներըԱվանդական որոնման համար օգտագործվող ներկառուցման մոդելները հաճախ ուսուցանվում են ընդհանուր նշանակության տեքստային կորպուսների վրա, որոնք կարող են պատշաճ կերպով չներկայացնել տիրույթի հատուկ լեզուն և իմաստաբանությունը: Մյուս կողմից, վերադասավորման մոդելները կարող են վերապատրաստվել տիրույթի հատուկ տվյալների վրա՝ մեղմելով «տիրույթից դուրս» խնդիրը և բարելավելով առբերված փաստաթղթերի համապատասխանությունը մասնագիտացված տիրույթներում:
  3. ԽոշորությունԵրկաստիճան մոտեցումը թույլ է տալիս արդյունավետ մասշտաբել՝ սկզբնական փուլում կիրառելով արագ և թեթև որոնման մեթոդներ, մինչդեռ ավելի ինտենսիվ հաշվողական վերադասավորման գործընթացը վերապահում է փաստաթղթերի ավելի փոքր ենթախմբին:
  4. ՃկունությունՎերադասակարգման մոդելները կարող են փոխանակվել կամ թարմացվել անկախ նախնական որոնման մեթոդից՝ ապահովելով ճկունություն և հարմարվողականություն համակարգի զարգացող կարիքներին:

ColBERT. Արդյունավետ և արդյունավետ ուշ փոխազդեցություն

Վերակարգավորման ոլորտում աչքի ընկնող մոդելներից մեկը ColBERT-ն է (Համատեքստային ուշ փոխազդեցություն BERT-ի միջոցով) ColBERT-ը փաստաթղթերի վերադասավորման մոդել է, որն օգտագործում է BERT-ի լեզվական խորը ըմբռնման հնարավորությունները՝ միաժամանակ ներդնելով փոխգործակցության նոր մեխանիզմ, որը հայտնի է որպես «ուշ փոխազդեցություն»:

ColBERT. Արդյունավետ և արդյունավետ անցուղիների որոնում համատեքստային ուշ փոխազդեցության միջոցով BERT-ի միջոցով

ColBERT. Արդյունավետ և արդյունավետ անցուղիների որոնում համատեքստային ուշ փոխազդեցության միջոցով BERT-ի միջոցով

ColBERT-ի ուշ փոխազդեցության մեխանիզմը թույլ է տալիս արդյունավետ և ճշգրիտ որոնում իրականացնել հարցումները և փաստաթղթերը առանձին մշակելով մինչև որոնման գործընթացի վերջին փուլերը: Մասնավորապես, ColBERT-ն ինքնուրույն կոդավորում է հարցումը և փաստաթուղթը՝ օգտագործելով BERT-ը, այնուհետև օգտագործում է թեթև, բայց հզոր փոխազդեցության քայլ, որը մոդելավորում է դրանց մանրահատիկ նմանությունը: Հետաձգելով, բայց պահպանելով այս մանրակրկիտ փոխազդեցությունը՝ ColBERT-ը կարող է օգտագործել խորը լեզվական մոդելների արտահայտչականությունը՝ միաժամանակ ձեռք բերելով փաստաթղթերի ներկայացումները օֆլայն նախապես հաշվարկելու հնարավորություն՝ զգալիորեն արագացնելով հարցումների մշակումը:

ColBERT-ի ուշ փոխազդեցության ճարտարապետությունն առաջարկում է մի քանի առավելություններ, ներառյալ բարելավված հաշվողական արդյունավետությունը, փաստաթղթերի հավաքագրման չափի մասշտաբայնությունը և իրական աշխարհի սցենարների համար գործնական կիրառելիությունը: Բացի այդ, ColBERT-ն ավելի է կատարելագործվել այնպիսի մեթոդներով, ինչպիսիք են անսարք հսկողությունը և մնացորդային սեղմումը (ColBERTv2-ում), որոնք կատարելագործում են մարզման գործընթացը և նվազեցնում մոդելի տարածության հետքը՝ միաժամանակ պահպանելով որոնման բարձր արդյունավետությունը:

Կոդի այս հատվածը ցույց է տալիս, թե ինչպես կարգավորել և օգտագործել jina-colbert-v1-en մոդելը փաստաթղթերի հավաքածուն ինդեքսավորելու համար՝ օգտագործելով երկար համատեքստերը արդյունավետ կերպով կարգավորելու նրա կարողությունը:

Երկփուլային որոնման իրականացում Rerankers-ի հետ

Այժմ, երբ մենք հասկանում ենք երկփուլային որոնման և վերադասավորման սկզբունքները, եկեք ուսումնասիրենք դրանց գործնական իրականացումը RAG համակարգի համատեքստում: Մենք կօգտագործենք հանրաճանաչ գրադարաններն ու շրջանակները՝ ցուցադրելու այս տեխնիկայի ինտեգրումը:

Շրջակա միջավայրի կարգավորում

Նախքան կոդի մեջ մտնելը, եկեք ստեղծենք մեր զարգացման միջավայրը: Մենք կօգտագործենք Python-ը և NLP մի քանի հանրաճանաչ գրադարաններ, ներառյալ Hugging Face Transformers, Sentence Transformers և LanceDB:

# Install required libraries
!pip install datasets huggingface_hub sentence_transformers lancedb

Տվյալների պատրաստում

Ցուցադրական նպատակների համար մենք կօգտագործենք «ai-arxiv-chunked» տվյալների հավաքածուն Hugging Face Datasets-ից, որը պարունակում է ավելի քան 400 ArXiv թերթ մեքենայական ուսուցման, բնական լեզվի մշակման և մեծ լեզվի մոդելների վերաբերյալ:

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

Հաջորդը, մենք նախապես կմշակենք տվյալները և կբաժանենք դրանք ավելի փոքր կտորների՝ հեշտացնելու արդյունավետ որոնումն ու մշակումը:

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)
Վերբերման սկզբնական փուլի համար մենք կօգտագործենք Sentence Transformer մոդելը՝ մեր փաստաթղթերը և հարցումները կոդավորելու խիտ վեկտորային ներկայացումների մեջ, այնուհետև կկատարենք մոտավոր մոտակա հարևանի որոնում՝ օգտագործելով 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)

Ինդեքսավորված մեր փաստաթղթերով մենք կարող ենք կատարել նախնական որոնում՝ գտնելով տվյալ հարցման վեկտորի մոտակա հարևանները:

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)

Վերադասակարգում

Նախնական առբերումից հետո մենք կկիրառենք վերադասավորման մոդել՝ վերցված փաստաթղթերը վերադասավորելու համար՝ հիմնվելով հարցման հետ դրանց համապատասխանության վրա: Այս օրինակում մենք կօգտագործենք ColBERT վերադասավորիչը՝ տրանսֆորմատորի վրա հիմնված արագ և ճշգրիտ մոդել, որը հատուկ նախագծված է փաստաթղթերի դասակարգման համար:

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

The reranked_docs ցուցակն այժմ պարունակում է փաստաթղթեր, որոնք վերադասավորվել են՝ հիմնվելով հարցման հետ կապված դրանց հետ, ինչպես որոշվել է ColBERT-ի վերադասավորչի կողմից:

Ավելացում և սերունդ

Վերադասակարգված և համապատասխան փաստաթղթերի ձեռքի տակ մենք կարող ենք անցնել RAG խողովակաշարի ավելացման և արտադրության փուլերին: Վերջնական պատասխանը ստեղծելու համար մենք կօգտագործենք Hugging Face Transformers գրադարանի լեզվի մոդելը:

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)

Վերևի կոդի հատվածում մենք լրացնում ենք սկզբնական հարցումը վերակարգված առաջին երեք փաստաթղթերի հետ՝ ստեղծելով augmented_query. Այնուհետև մենք փոխանցում ենք այս ընդլայնված հարցումը T5 լեզվի մոդելին, որն առաջացնում է պատասխան՝ հիմնված տրամադրված համատեքստի վրա:

The response փոփոխականը կպարունակի վերջնական արդյունքը, օգտագործելով արտաքին տեղեկատվությունը վերցված և վերադասակարգված փաստաթղթերից՝ սկզբնական հարցմանը ավելի ճշգրիտ և համապարփակ պատասխան տալու համար:

Ընդլայնված տեխնիկա և նկատառումներ

Թեև իրականացումը, որը մենք լուսաբանել ենք, ամուր հիմք է ստեղծում RAG համակարգում երկփուլ որոնման և վերադասավորման ինտեգրման համար, կան մի քանի առաջադեմ տեխնիկա և նկատառումներ, որոնք կարող են ավելի մեծացնել մոտեցման արդյունավետությունն ու կայունությունը:

  1. Հարցման ընդլայնումՎերբերման սկզբնական փուլը բարելավելու համար կարող եք օգտագործել հարցումների ընդլայնման տեխնիկան, որը ներառում է սկզբնական հարցումը հարակից տերմիններով կամ արտահայտություններով մեծացնելը: Սա կարող է օգնել առբերել պոտենցիալ համապատասխան փաստաթղթերի ավելի բազմազան փաթեթ:
  2. Անսամբլի վերադասավորումՄեկ վերադասակարգման մոդելի վրա հույս դնելու փոխարեն, դուք կարող եք միավորել բազմաթիվ վերադասավորողներ անսամբլի մեջ՝ օգտագործելով տարբեր մոդելների ուժեղ կողմերը՝ ընդհանուր կատարողականությունը բարելավելու համար:
  3. Լավ կարգավորող RerankersԹեև նախապես վերապատրաստված վերադասավորման մոդելները կարող են արդյունավետ լինել, դրանց ճշգրտումը տիրույթի հատուկ տվյալների վրա կարող է ավելի մեծացնել տիրույթին հատուկ իմաստաբանությունը և համապատասխան ազդանշանները գրավելու նրանց կարողությունը:
  4. Կրկնվող որոնում և վերադասավորումՈրոշ դեպքերում որոնման և վերադասավորման մեկ կրկնությունը կարող է բավարար չլինել: Դուք կարող եք ուսումնասիրել կրկնվող մոտեցումները, որտեղ լեզվի մոդելի արդյունքն օգտագործվում է հարցումների և որոնման գործընթացի ճշգրտման համար՝ հանգեցնելով ավելի ինտերակտիվ և դինամիկ համակարգի:
  5. Համապատասխանության և բազմազանության հավասարակշռումԹեև վերադասակարգիչները նպատակ ունեն խթանել առավել համապատասխան փաստաթղթերը, կարևոր է հավասարակշռություն հաստատել համապատասխանության և բազմազանության միջև: Բազմազանությունը խթանող տեխնիկայի ներդաշնակումը կարող է օգնել կանխել համակարգի չափազանց նեղ կամ կողմնակալ լինելն իր տեղեկատվական աղբյուրներում:
  6. Գնահատման չափումներՁեր երկփուլ որոնման և վերադասավորման մոտեցման արդյունավետությունը գնահատելու համար դուք պետք է սահմանեք համապատասխան գնահատման չափումներ: Սրանք կարող են ներառել տեղեկատվության որոնման ավանդական չափումներ, ինչպիսիք են ճշգրտությունը, հետկանչումը և միջին փոխադարձ վարկանիշը (MRR), ինչպես նաև առաջադրանքների համար հատուկ չափումներ՝ հարմարեցված ձեր օգտագործման դեպքին:

Եզրափակում

Retrieval Augmented Generation-ը (RAG) ի հայտ է եկել որպես հզոր տեխնիկա՝ մեծ լեզվական մոդելների հնարավորությունները բարձրացնելու համար՝ օգտագործելով արտաքին տեղեկատվության աղբյուրները: Այնուամենայնիվ, որոնման ավանդական մեթոդները հաճախ դժվարանում են բացահայտել առավել համապատասխան փաստաթղթերը, ինչը հանգեցնում է ոչ օպտիմալ կատարման:

Երկու փուլով որոնումը վերադասավորողների հետ առաջարկում է համոզիչ լուծում այս մարտահրավերին: Համատեղելով սկզբնական արագ որոնման փուլը ավելի բարդ վերադասակարգման մոդելի հետ՝ այս մոտեցումը կարող է զգալիորեն բարելավել առբերված փաստաթղթերի ճշգրտությունն ու համապատասխանությունը՝ ի վերջո հանգեցնելով լեզվական մոդելի ավելի բարձր որակի պատասխանների:

Ես անցկացրել եմ վերջին հինգ տարիները՝ ընկղմվելով մեքենայական ուսուցման և խորը ուսուցման հետաքրքրաշարժ աշխարհում: Իմ կիրքն ու փորձառությունը ստիպել են ինձ ներդրում ունենալ ավելի քան 50 տարբեր ծրագրային ապահովման ինժեներական նախագծերում՝ հատուկ ուշադրություն դարձնելով AI/ML-ին: Իմ շարունակական հետաքրքրասիրությունը նաև ինձ ձգում է դեպի Բնական լեզվի մշակումը, մի ոլորտ, որը ես ցանկանում եմ հետագայում ուսումնասիրել: