Logo Zephyrnet

ColBERT – Imudara Iṣe Imupadabọ pẹlu Ipele Ipele Tokini Awọn ifibọ

ọjọ:

ifihan

Igbapada Augmented-generation (RAG) ti gba agbaye nipasẹ Iji lati igba ibẹrẹ rẹ. RAG jẹ ohun ti o ṣe pataki fun Awọn awoṣe Ede nla (LLMs) lati pese tabi ṣe agbekalẹ awọn idahun deede ati otitọ. A yanju otitọ ti LLM nipasẹ RAG, nibiti a ti gbiyanju lati fun LLM ni aaye kan ti o jọra si ibeere olumulo ki LLM yoo ṣiṣẹ pẹlu ọgangan yii ki o ṣe agbekalẹ esi ti o pe ni otitọ. A ṣe eyi nipa sisọju data wa ati ibeere olumulo ni irisi awọn ifisinu fekito ati ṣiṣe ibajọra cosine kan. Ṣugbọn iṣoro naa ni, pe gbogbo awọn isunmọ aṣa ṣe aṣoju data ni ifibọ ẹyọkan, eyiti o le ma jẹ apẹrẹ fun rere. igbapada awọn ọna šiše. Ninu itọsọna yii, a yoo wo inu ColBERT eyiti o ṣe imupadabọ pẹlu deede to dara ju awọn awoṣe bi-encoder ibile.

ColBERT - Ṣe ilọsiwaju Iṣe atunṣe pada lori LLM pẹlu Awọn ifibọ Vector

Awọn Ero ẹkọ

  • Loye bi igbapada ni RAG ṣiṣẹ lori ipele giga kan.
  • Loye awọn idiwọn ifibọ ẹyọkan ni igbapada.
  • Ṣe ilọsiwaju ipo igbapada pẹlu awọn ifibọ ami ami ColBERT.
  • Kọ ẹkọ bii ibaraenisepo pẹ ColBERT ṣe mu imupadabọ dara si.
  • Gba lati mọ bi o ṣe le ṣiṣẹ pẹlu ColBERT fun igbapada deede.

Nkan yii ni a tẹjade gẹgẹbi apakan ninu Data Imọ Blogathon.

Atọka akoonu

Kini RAG?

LLMs, botilẹjẹpe o lagbara lati ṣe ipilẹṣẹ ọrọ ti o ni itumọ ati ti girama, awọn LLM wọnyi jiya lati iṣoro kan ti a pe ni hallucination. Hallucination ni LLMs ni ero ibi ti LLMs ni igboya ṣe ipilẹṣẹ awọn idahun ti ko tọ, iyẹn ni pe wọn ṣe awọn idahun ti ko tọ ni ọna ti o jẹ ki a gbagbọ pe otitọ ni. Eyi ti jẹ iṣoro nla lati igba ifihan ti LLMs. Awọn hallucinations wọnyi yori si aṣiṣe ati awọn idahun ti ko tọ. Nitorinaa A ti ṣe agbekalẹ Iran Augmented Gbigbapada.

Ni RAG, a mu atokọ ti awọn iwe aṣẹ / awọn iwe-ipin ti awọn iwe aṣẹ ati koodu awọn iwe-ọrọ ọrọ wọnyi sinu aṣoju nọmba kan ti a pe ni awọn ifibọ vector, nibiti ifisinu vector kan ṣe aṣoju ṣoki kan ti iwe ati tọju wọn sinu ibi ipamọ data ti a pe ni itaja fekito. Awọn awoṣe ti a beere fun fifi koodu si awọn ege wọnyi sinu awọn ifibọ ni a pe ni awọn awoṣe fifi koodu tabi awọn koodu-meji. Awọn koodu koodu wọnyi jẹ ikẹkọ lori kopọsi data nla kan, nitorinaa jẹ ki wọn lagbara to lati fi koodu koodu pamọ awọn ṣoki ti awọn iwe aṣẹ ni aṣoju ifibọ fekito kan.

Kini RAG?

Ni bayi nigbati olumulo kan ba beere ibeere kan si LLM, lẹhinna a fun ibeere yii si koodu koodu kanna lati ṣe agbejade ifisinu fekito kan. Ifibọsi yii ni a lo lati ṣe iṣiro Dimegilio ibajọra pẹlu ọpọlọpọ awọn ifisinu fekito miiran ti awọn chunks iwe lati gba ṣoki ti o wulo julọ ti iwe naa. Ipin ti o yẹ julọ tabi atokọ ti awọn chunks ti o wulo julọ pẹlu ibeere olumulo ni a fun LLM. LLM naa gba alaye afikun ọrọ-ọrọ yii ati lẹhinna ṣe ipilẹṣẹ idahun ti o ni ibamu pẹlu ọrọ-ọrọ ti o gba lati ibeere olumulo. Eyi rii daju pe akoonu ti ipilẹṣẹ nipasẹ LLM jẹ otitọ ati nkan ti o le ṣe itopase pada ti o ba jẹ dandan.

Isoro pẹlu Ibile Bi-Encoders

Iṣoro naa pẹlu awọn awoṣe Encoder ibile bii gbogbo-miniLM, OpenAI Awoṣe ifisinu, ati awọn awoṣe kooduopo miiran ni pe wọn rọpọ gbogbo ọrọ sinu aṣoju ifisinu fekito kan. Awọn aṣoju ifisinu fekito ẹyọkan jẹ iwulo nitori wọn ṣe iranlọwọ ni imunadoko ati imupadabọ iyara ti awọn iwe aṣẹ ti o jọra. Sibẹsibẹ, iṣoro naa wa ni ipo-ọrọ laarin ibeere ati iwe-ipamọ naa. Ifisinu fekito ẹyọkan le ma to lati tọju alaye ọrọ-ọrọ ti ṣoki iwe kan, nitorinaa ṣiṣẹda igo alaye kan.

Fojuinu pe awọn ọrọ 500 ti wa ni fisinuirindigbindigbin si kan nikan fekito ti iwọn 782. O le ko ni le to lati soju iru kan chunk pẹlu kan nikan fekito ifibọ, bayi fifun subpar esi ni igbapada ni julọ ninu awọn igba miran. Aṣoju fekito ẹyọkan le tun kuna ni awọn ọran ti awọn ibeere idiju tabi awọn iwe aṣẹ. Ọkan iru ojutu yoo jẹ lati ṣe aṣoju chunk iwe tabi ibeere kan gẹgẹbi atokọ ti awọn ifisinu ifibọ dipo fekito ifibọ ẹyọkan, eyi ni ibiti ColBERT ti n wọle.

Kini ColBERT?

ColBERT (Contextual Late Interactions BERT) jẹ kooduopo-meji ti o ṣojuuṣe ọrọ ni aṣoju ifibọ ọpọlọpọ-fekito. O gba ni ibeere tabi ṣoki ti Iwe-ipamọ / Iwe kekere kan ati ṣẹda awọn ifibọ fekito ni ipele ami. Iyẹn ni ami kọọkan n gba ifisinu fekito tirẹ, ati pe ibeere/iwe ti wa ni koodu si atokọ ti awọn ifibọ fekito ipele-ami. Awọn ifibọ ipele àmi ti wa ni ti ipilẹṣẹ lati kan ami-oṣiṣẹ BERT awoṣe nibi ti orukọ BERT.

Awọn wọnyi ti wa ni ipamọ lẹhinna sinu aaye data fekito. Ni bayi, nigbati ibeere kan ba wọle, atokọ ti awọn ifibọ ipele-ami ni a ṣẹda fun rẹ lẹhinna isodipupo matrix kan yoo ṣee ṣe laarin ibeere olumulo ati iwe kọọkan, nitorinaa ti n yọrisi matrix kan ti o ni awọn ikun ibajọra. Ijọra gbogbogbo jẹ aṣeyọri nipa gbigbe aropọ ti ibajọra ti o pọju kọja awọn ami iwe-ipamọ fun ami ibeere kọọkan. Ilana fun eyi ni a le rii ninu aworan ni isalẹ:

ìwò ibajọra ni a àmi akojọ

Nibi ni idogba ti o wa loke, a rii pe a ṣe ọja aami kan laarin Ibeere Tokens Matrix (ti o ni awọn ifibọ ipele ipele N tokini) ati Transpose of Document Tokens Matrix (ti o ni awọn ifibọ ipele ipele M token), ati lẹhinna a mu ibajọra ti o pọju. rekọja awọn ami iwe aṣẹ fun ibeere ibeere kọọkan. Lẹhinna a gba apapọ gbogbo awọn ibajọra ti o pọju wọnyi, eyiti o fun wa ni Dimegilio ibajọra ikẹhin laarin iwe ati ibeere naa. Idi ti eyi n ṣe agbejade imunadoko ati imupadabọ deede ni, pe nibi a ni ibaraenisepo ipele-ami, eyiti o funni ni aye fun oye ọrọ-ọrọ diẹ sii laarin ibeere ati iwe.

Kini idi ti Orukọ ColBERT?

Bii a ṣe n ṣe iṣiro atokọ ti awọn ifisinu ifisinu ṣaaju funrararẹ ati ṣiṣe iṣẹ MaxSim (ijọra ti o pọju) nikan lakoko itọkasi awoṣe, nitorinaa n pe ni igbesẹ ibaraenisepo pẹ, ati pe bi a ṣe n gba alaye asọye diẹ sii nipasẹ awọn ibaraenisepo ipele ami ami, o pe ni contextual. pẹ awọn ibaraẹnisọrọ. Bayi ni orukọ Contextual Late Interactions BERT tabi ColBERT. Awọn iṣiro wọnyi le ṣee ṣe ni afiwe, nitorinaa wọn le ṣe iṣiro daradara. Lakotan, ibakcdun kan ni aaye naa, iyẹn ni, o nilo aaye pupọ lati tọju atokọ yii ti awọn ifibọ ipele fekito ami-ami. Ọrọ yii ni ipinnu ni ColBERTv2, nibiti awọn ifibọ ti wa ni fisinuirindigbindigbin nipasẹ ilana ti a npe ni funmorawon, nitorina ni iṣapeye aaye ti a lo.

ColBERT - Ṣe ilọsiwaju Iṣe atunṣe pẹlu Awọn ifibọ Vector

Ọwọ-Lori ColBERT pẹlu Apeere

Ni apakan yii, a yoo gba ọwọ pẹlu ColBERT ati paapaa ṣayẹwo bi o ṣe n ṣe lodi si awoṣe ifisinu deede.

Igbesẹ 1: Ṣe igbasilẹ Awọn ile-ikawe

A yoo bẹrẹ nipa gbigba ile-ikawe atẹle wọnyi silẹ:

!pip install ragatouille langchain langchain_openai chromadb einops sentence-transformers tiktoken
  • RAGAtouille: Ile-ikawe yii jẹ ki a ṣiṣẹ pẹlu ipo ti aworan (SOTA) awọn ọna igbapada bii ColBERT ni ọna irọrun-lati-lo. O pese awọn aṣayan lati ṣẹda awọn atọka lori awọn ipilẹ data, ibeere lori wọn, ati paapaa gba wa laaye lati ṣe ikẹkọ awoṣe ColBERT lori data wa.
  • LangChain: Ile-ikawe yii yoo jẹ ki a ṣiṣẹ pẹlu awọn awoṣe ifibọ orisun-ìmọ ki a le ṣe idanwo bawo ni awọn awoṣe ifibọ miiran ṣe ṣiṣẹ daradara nigbati a bawe si ColBERT.
  • langchain_openai: Awọn fifi sori ẹrọ ni LangChain awọn igbẹkẹle fun OpenAI. A yoo paapaa ṣiṣẹ pẹlu awoṣe Ifibọ OpenAI lati ṣayẹwo iṣẹ rẹ lodi si ColBERT.
  • ChromeDB: Ile-ikawe yii yoo jẹ ki a ṣẹda ile-itaja fekito ni agbegbe wa ki a le fipamọ awọn ifibọ ti a ṣẹda sori data wa ati nigbamii ṣe wiwa atunmọ laarin ibeere naa ati awọn ifibọ ti o fipamọ.
  • einops: Ile-ikawe yii nilo fun awọn isodipupo matrix tensor daradara.
  • gbolohun-ayipada ati awọn tiktoken Ile-ikawe nilo fun awọn awoṣe ifibọ orisun-ìmọ lati ṣiṣẹ daradara.

Igbesẹ 2: Ṣe igbasilẹ Awoṣe ti a ti kọ tẹlẹ

Ni igbesẹ ti nbọ, a yoo ṣe igbasilẹ awoṣe ColBERT ti a ti kọ tẹlẹ. Fun eyi, koodu naa yoo jẹ

from ragatouille import RAGPretrainedModel

RAG = RAGPretrainedModel.from_pretrained("colbert-ir/colbertv2.0")
  • A kọkọ gbe kilasi RAGPretrainedModel wọle lati inu ile-ikawe RAGAtouille.
  • Lẹhinna a pe .from_pretrained () ati fun orukọ awoṣe ie “colbert-ir/colbertv2.0”.

Ṣiṣe koodu ti o wa loke yoo ṣe afihan awoṣe ColBERT RAG kan. Bayi jẹ ki a ṣe igbasilẹ oju-iwe Wikipedia kan ki o si ṣe igbapada lati ọdọ rẹ. Fun eyi, koodu yoo jẹ:

from ragatouille.utils import get_wikipedia_page

document = get_wikipedia_page("Elon_Musk")
print("Word Count:",len(document))
print(document[:1000])

RAGAtouille wa pẹlu iṣẹ afọwọṣe ti a pe ni get_wikipedia_page eyiti o gba okun ti o gba oju-iwe Wikipedia ti o baamu. Nibi a ṣe igbasilẹ akoonu Wikipedia lori Elon Musk ati tọju rẹ sinu iwe iyipada. Jẹ ki a tẹjade nọmba awọn ọrọ ti o wa ninu iwe-ipamọ ati awọn laini akọkọ ti iwe-ipamọ naa.

RAG lori awọn LLM pẹlu lilo ColBERT

Nibi a le rii abajade ninu aworan naa. A le rii pe apapọ awọn ọrọ 64,668 wa lori oju-iwe Wikipedia ti Elon Musk.

Igbesẹ 3: Titọka

Bayi a yoo ṣẹda atọka lori iwe yii.

RAG.index(
   # List of Documents
   collection=[document],
   # List of IDs for the above Documents
   document_ids=['elon_musk'],
   # List of Dictionaries for the metadata for the above Documents
   document_metadatas=[{"entity": "person", "source": "wikipedia"}],
   # Name of the index
   index_name="Elon2",
   # Chunk Size of the Document Chunks
   max_document_length=256,
   # Wether to Split Document or Not
   split_documents=True
   )

Nibi a pe .index () ti RAG lati ṣe atọka iwe-ipamọ wa. Fun eyi, a kọja awọn atẹle:

  • gbigba: Eyi ni atokọ ti awọn iwe aṣẹ ti a fẹ lati ṣe atọka. Nibi a ni iwe kan nikan, nitorinaa atokọ ti iwe-ipamọ kan.
  • document_ids: Iwe kọọkan nireti ID iwe-ipamọ alailẹgbẹ kan. Nibi a fi orukọ elon_musk silẹ nitori pe iwe-ipamọ naa jẹ nipa Elon Musk.
  • document_metadata: Iwe kọọkan ni metadata rẹ si. Eyi tun jẹ atokọ ti awọn iwe-itumọ, nibiti iwe-itumọ kọọkan ni awọn metadata bata iye bọtini kan fun iwe-itumọ kan pato.
  • index_name: Orukọ atọka ti a ṣẹda. Jẹ ki a lorukọ Elon2.
  • iwọn_document_max: Eyi jẹ iru si iwọn chunk. A pato iye ti o yẹ ki iwe-ipamọ kọọkan jẹ. Nibi ti a n fun ni iye ti 256. Ti a ko ba pato iye eyikeyi, 256 yoo gba bi iwọn chunk aiyipada.
  • split_documents: O jẹ iye boolean kan, nibiti Otitọ tọka si pe a fẹ pin iwe-ipamọ wa ni ibamu si iwọn chunk ti a fun, ati pe Eke tọka si pe a fẹ lati tọju gbogbo iwe bi chunk kan.

Ṣiṣe koodu ti o wa loke yoo fọ iwe-ipamọ wa ni awọn iwọn ti 256 fun chunk, lẹhinna fi sii wọn nipasẹ awoṣe ColBERT, eyiti yoo ṣe atokọ ti awọn ifibọ ipele ipele-ami fun chunk kọọkan ati nikẹhin fi wọn pamọ sinu atọka. Igbesẹ yii yoo gba akoko diẹ lati ṣiṣẹ ati pe o le ni iyara ti o ba ni GPU kan. Nikẹhin, o ṣẹda itọsọna kan nibiti a ti fipamọ atọka wa. Nibi liana yoo jẹ “.ragatouille/colbert/indexes/Elon2”

Igbesẹ 4: Ibeere Gbogbogbo

Bayi, a yoo bẹrẹ wiwa. Fun eyi, koodu naa yoo jẹ

results = RAG.search(query="What companies did Elon Musk find?", k=3, index_name='Elon2')
for i, doc, in enumerate(results):
   print(f"---------------------------------- doc-{i} ------------------------------------")
   print(doc["content"])
  • Nibi, akọkọ, a pe ọna .search () ti nkan RAG
  • Si eyi, a fun awọn oniyipada ti o pẹlu orukọ ibeere, k (nọmba awọn iwe aṣẹ lati gba pada), ati orukọ atọka lati wa
  • Nibi a pese ibeere naa “Awọn ile-iṣẹ wo ni Elon Musk rii?”. Abajade ti o gba yoo wa ninu atokọ ti ọna kika iwe-itumọ, eyiti o ni awọn bọtini bii akoonu, Dimegilio, ipo, document_id,pass_id, ati document_metadata
  • Nitorinaa a ṣiṣẹ pẹlu koodu ti o wa ni isalẹ lati tẹ awọn iwe aṣẹ ti a gba pada ni ọna afinju
  • Nibi a lọ nipasẹ atokọ ti awọn iwe-itumọ ati tẹ akoonu ti awọn iwe aṣẹ naa

Ṣiṣe koodu naa yoo ṣe awọn abajade wọnyi:

RAG lori awọn LLM pẹlu iṣedede to dara julọ ju awọn awoṣe bi-encoder ibile lọ ColBERT

Ninu aworan, a le rii pe iwe akọkọ ati ikẹhin ni kikun bo awọn ile-iṣẹ oriṣiriṣi ti o da nipasẹ Elon Musk. ColBERT ni anfani lati gba awọn ege ti o yẹ ti o nilo lati dahun ibeere naa.

Igbesẹ 5: Ibeere kan pato

Bayi jẹ ki a lọ siwaju ni ipele kan ki o beere ibeere kan pato.

results = RAG.search(query="How much Tesla stocks did Elon sold in 
Decemeber 2022?", k=3, index_name='Elon2')


for i, doc, in enumerate(results):
   print(f"---------------
   ------------------- doc-{i} ------------------------------------")
   print(doc["content"])
RAG lori awọn LLM pẹlu iṣedede to dara julọ ju awọn awoṣe bi-encoder ibile lọ ColBERT

Nibi ninu koodu ti o wa loke, a n beere ibeere kan pato nipa iye awọn ọja ti Tesla Elon ti o ta ni oṣu Kejìlá 2022. A le rii abajade nibi. Doc-1 ni idahun si ibeere naa. Elon ti ta $ 3.6 bilionu ti ọja rẹ ni Tesla. Lẹẹkansi, ColBERT ni anfani lati ṣaṣeyọri gba ṣoki ti o yẹ fun ibeere ti a fifun.

Igbesẹ 6: Idanwo Awọn awoṣe miiran

Jẹ ki a gbiyanju ibeere kanna pẹlu awọn awoṣe ifibọ miiran mejeeji orisun-ìmọ ati pipade nibi:

from langchain_community.embeddings import HuggingFaceEmbeddings
from transformers import AutoModel

model = AutoModel.from_pretrained('jinaai/jina-embeddings-v2-base-en', trust_remote_code=True)

model_name = "jinaai/jina-embeddings-v2-base-en"
model_kwargs = {'device': 'cpu'}

embeddings = HuggingFaceEmbeddings(
   model_name=model_name,
   model_kwargs=model_kwargs,
)

  • A bẹrẹ ni pipa nipa gbigba awoṣe ni akọkọ nipasẹ kilasi AutoModel lati ile-ikawe Ayirapada.
  • Lẹhinna a tọju model_name ati model_kwargs sinu awọn oniyipada wọn.
  • Ni bayi lati ṣiṣẹ pẹlu awoṣe yii ni LangChain, a gbe wọle awọn HuggingFaceEmbeddings lati inu LangChain ki o si fun ni orukọ awoṣe ati model_kwargs.

Ṣiṣe koodu yii yoo ṣe igbasilẹ ati fifuye awoṣe ifibọ Jina ki a le ṣiṣẹ pẹlu rẹ

Igbesẹ 7: Ṣẹda Awọn ifibọ

Bayi, a nilo lati bẹrẹ pipin iwe-ipamọ wa lẹhinna ṣẹda awọn ifibọ ninu rẹ ki o tọju wọn si ile itaja vector Chroma. Fun eyi, a ṣiṣẹ pẹlu koodu atẹle:

from langchain_community.vectorstores import Chroma
from langchain_text_splitters import RecursiveCharacterTextSplitter

text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(
    chunk_size=256, 
    chunk_overlap=0)
splits = text_splitter.split_text(document)
vectorstore = Chroma.from_texts(texts=splits,
                                embedding=embeddings,
                                collection_name="elon")
retriever = vectorstore.as_retriever(search_kwargs = {'k':3})
  • A bẹrẹ nipa gbigbe Chroma wọle ati RecursiveCharacterTextSplitter lati ile-ikawe LangChain
  • Lẹhinna a gbe ọrọ_splitter kan lẹsẹkẹsẹ nipa pipe .from_tiktoken_encoder ti RecursiveCharacterTextSplitter ati gbigbe rẹ ni chunk_size ati chunk_overlap
  • Nibi a yoo lo chunk_size kanna ti a ti pese si ColBERT
  • Lẹhinna a pe ọna .split_text () ti text_splitter yii ati fun ni iwe-ipamọ ti o ni alaye Wikipedia ninu nipa Elon Musk. Lẹhinna o pin iwe-ipamọ ti o da lori iwọn chunk ti a fun ati nikẹhin, atokọ ti Awọn iwe-itumọ ti wa ni ipamọ ni awọn pipin oniyipada.
  • Nikẹhin, a pe iṣẹ .from_texts () ti kilasi Chroma lati ṣẹda ile itaja fekito kan. Si iṣẹ yii, a fun awọn pipin, awoṣe ifibọ, ati orukọ gbigba_orukọ
  • Bayi, a ṣẹda olupadabọ kuro ninu rẹ nipa pipe iṣẹ .as_retriever () ti ohun-itaja vector. A fun 3 fun iye k

Ṣiṣe koodu yii yoo gba iwe-ipamọ wa, pin si awọn iwe kekere ti iwọn 256 fun chunk, ati lẹhinna fi sii awọn chunks kekere wọnyi pẹlu awoṣe ifibọ Jina ati tọju awọn ifisinu ifibọ wọnyi ni ile itaja vector chroma.

Igbesẹ 8: Ṣiṣẹda Olupada

Nikẹhin, a ṣẹda olugba lati ọdọ rẹ. Bayi a yoo ṣe wiwa fekito kan ati ṣayẹwo awọn abajade.

docs = retriever.get_relevant_documents("What companies did Elon Musk find?",)

for i, doc in enumerate(docs):
 print(f"---------------------------------- doc-{i} ------------------------------------")
 print(doc.page_content)
"
  • A pe iṣẹ .get_relevent_documents () ti ohun-padabọ ati fun ni ibeere kanna.
  • Lẹhinna a tẹ awọn iwe aṣẹ ti o gba pada ni 3 ti o ga julọ.
  • Ninu aworan, a le rii pe Jina Embedder laibikita jije awoṣe ifibọ olokiki, imupadabọ fun ibeere wa ko dara. Ko ṣe aṣeyọri ni gbigba awọn ṣoki iwe ti o pe.

A le ṣe akiyesi iyatọ kedere laarin Jina, awoṣe ifisinu ti o ṣe aṣoju chunk kọọkan gẹgẹbi ifibọ fekito ẹyọkan, ati awoṣe ColBERT eyiti o ṣe aṣoju chunk kọọkan gẹgẹbi atokọ ti awọn ifisinu ipele ami-ami. ColBERT han gbangba ju ninu ọran yii.

Igbesẹ 9: Idanwo Awoṣe Ifibọ OpenAI

Bayi jẹ ki a gbiyanju lilo awoṣe ifibọ orisun-pipade bi awoṣe Ifibọ OpenAI.

import os

os.environ["OPENAI_API_KEY"] = "Your API Key"

from langchain_openai import OpenAIEmbeddings

embeddings = OpenAIEmbeddings()

text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(
              model_name = "gpt-4",
              chunk_size = 256,
              chunk_overlap  = 0,
              )

splits = text_splitter.split_text(document)
vectorstore = Chroma.from_texts(texts=splits,
                                embedding=embeddings,
                                collection_name="elon_collection")

retriever = vectorstore.as_retriever(search_kwargs = {'k':3})

Nibi koodu naa jọra pupọ si eyi ti a ṣẹṣẹ kọ

  • Iyatọ kan ṣoṣo ni, a kọja ni bọtini OpenAI API lati ṣeto oniyipada ayika.
  • Lẹhinna a ṣẹda apẹẹrẹ ti awoṣe Ifibọ OpenAI nipa gbigbe wọle lati LangChain.
  • Ati lakoko ti o ṣẹda orukọ ikojọpọ, a fun ni orukọ akojọpọ oriṣiriṣi, ki awọn ifibọ lati inu awoṣe Ifibọ OpenAI ti wa ni ipamọ ni akojọpọ oriṣiriṣi.

Ṣiṣe koodu yii yoo tun gba awọn iwe aṣẹ wa, ge wọn sinu awọn iwe aṣẹ kekere ti iwọn 256, ati lẹhinna fi sii wọn sinu aṣoju ifisinu fekito ẹyọkan pẹlu awoṣe ifibọ OpenAI ati nikẹhin tọju awọn ifibọ wọnyi sinu Ile-itaja Vector Chroma. Bayi jẹ ki a gbiyanju lati gba awọn iwe aṣẹ ti o yẹ pada si ibeere miiran.

docs = retriever.get_relevant_documents("How much Tesla stocks did Elon sold in Decemeber 2022?",)

for i, doc in enumerate(docs):
  print(f"---------------------------------- doc-{i} ------------------------------------")
  print(doc.page_content)
  • A rii pe idahun ti a n reti ko rii laarin awọn chunks ti a gba pada.
  • Awọn chunk ọkan ni alaye nipa awọn ọja Tesla ni 2022 ṣugbọn ko sọrọ nipa Elon ta wọn.
  • Bakan naa ni a le rii pẹlu awọn iwe-ipamọ iwe meji ti o ku, nibiti alaye ti wọn wa ninu jẹ nipa Tesla ati ọja rẹ ṣugbọn eyi kii ṣe alaye ti a n reti.
  • Awọn ṣoki ti a gba jade loke kii yoo pese aaye fun LLM lati dahun ibeere ti a ti pese.

Paapaa nibi a le rii iyatọ ti o han gbangba laarin aṣoju ifisinu ẹyọkan vs aṣoju ifisinu ọpọlọpọ-vector. Awọn aṣoju ifisinu ọpọlọpọ ni o han gbangba awọn ibeere idiju eyiti o mu abajade awọn atunpada deede diẹ sii.

ipari

Ni ipari, ColBERT ṣe afihan ilọsiwaju pataki ni iṣẹ igbapada lori awọn awoṣe bi-encoder ibile nipasẹ aṣoju ọrọ bi awọn ifibọ-vector pupọ ni ipele ami. Ọna yii ngbanilaaye fun agbọye ọrọ-ọrọ ti o ni iwọn diẹ sii laarin awọn ibeere ati awọn iwe aṣẹ, ti o yori si awọn abajade imupadabọ deede diẹ sii ati idinku ọran ti hallucinations ti o wọpọ ni awọn LLMs.

Awọn Iparo bọtini

  • RAG n koju iṣoro ti awọn hallucinations ni LLMs nipa ipese alaye ọrọ-ọrọ fun iran idahun otitọ.
  • Awọn olupilẹṣẹ oni-meji ti aṣa jiya lati inu igo alaye nitori titẹpọ gbogbo awọn ọrọ sinu awọn ifisinu fekito ẹyọkan, ti o yọrisi deede imupadabọ subpar.
  • ColBERT, pẹlu aṣoju ifibọ ipele ami-ami rẹ, ṣe iranlọwọ ni oye ọrọ-ọrọ to dara julọ laarin awọn ibeere ati awọn iwe aṣẹ, ti o yori si ilọsiwaju imudara imudara.
  • Igbesẹ ibaraenisepo pẹ ni ColBERT, ni idapo pẹlu awọn ibaraenisepo ipele-ami, ṣe imudara išedede imupadabọ nipa ṣiṣeroro awọn nuances ọrọ-ọrọ.
  • ColBERTv2 mu aaye ibi-itọju pọ si nipasẹ titẹku ti o ku lakoko ti o n ṣetọju imunado gbigba.
  • Awọn adanwo ti a fi ọwọ ṣe ṣe afihan ilọsiwaju giga ti ColBERT ni iṣẹ igbapada ni akawe si aṣa ati awọn awoṣe ifibọ orisun-ìmọ bii Jina ati Ifibọ OpenAI.

Nigbagbogbo bi Ìbéèrè

Q1. Kini iṣoro pẹlu awọn koodu oni-meji ibile?

A. Ibile bi-encoders compress gbogbo awọn ọrọ sinu nikan fekito ifibọ, oyi padanu contextual alaye. Eyi ṣe idiwọ imunadoko wọn ni awọn iṣẹ-ṣiṣe igbapada, paapaa pẹlu awọn ibeere idiju tabi awọn iwe aṣẹ.

Q2. Kini ColBERT?

A. ColBERT (Contextual Late Interactions BERT) jẹ awoṣe kooduopo-meji ti o ṣojuuṣe ọrọ nipa lilo awọn ifibọ ipele-àmi. O ngbanilaaye fun oye ọrọ-ọrọ diẹ sii ti nuanced laarin awọn ibeere ati awọn iwe aṣẹ, imudara deede igbapada.

Q3. Bawo ni ColBERT ṣiṣẹ?

A. ColBERT ṣe agbekalẹ awọn ifibọ ipele-ami fun awọn ibeere ati awọn iwe aṣẹ, ṣe isodipupo matrix lati ṣe iṣiro awọn ikun ibajọra, ati lẹhinna yan alaye ti o wulo julọ ti o da lori ibajọra ti o pọju kọja awọn ami. Eyi ngbanilaaye fun igbapada to munadoko pẹlu oye ọrọ-ọrọ.

Q4. Bawo ni ColBERT ṣe mu aaye pọ si?

A. ColBERTv2 mu aaye ṣiṣẹ nipasẹ ọna titẹku ti o ku, idinku awọn ibeere ibi ipamọ fun awọn ifibọ ipele-ami lakoko mimu deede igbapada.

Q5. Bawo ni MO ṣe le lo ColBERT ni iṣe?

A. O le lo awọn ile-ikawe bii RAGAtouille lati ṣiṣẹ pẹlu ColBERT ni irọrun. Nipa titọka awọn iwe aṣẹ ati awọn ibeere, o le ṣe awọn iṣẹ-ṣiṣe imupadabọ daradara ati ṣe agbekalẹ awọn idahun deede ni ibamu pẹlu ọrọ-ọrọ.

Media ti o han ninu nkan yii kii ṣe ohun ini nipasẹ Vidhya atupale ati pe o lo ni lakaye ti Onkọwe.

iranran_img

Titun oye

iranran_img