Tekoälyagentit · Oppitunti

Monivektorihaku (ColBERT)

Indeksoikaa dokumenttia kohden useita vektoreita (yksi tokenia tai osaa kohden) hienojakoista vastaavuutta varten.

Oppitunti 3/414 vaihetta

Monivektorihaku (ColBERT) on ilmainen Tekoälyagentit-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Tekoälyagentit-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Tekoälyagentit-kurssilla on yhteensä 4 oppituntia.

Osaa tämän oppitunnin sisällöstä ei ole vielä käännetty, joten se näytetään englanniksi.

Yksi vektori ei riitä

Standardi RAG muodostaa kustakin katkelmasta yhden vektorin. Tämä vektori keskiarvoistaa kaiken katkelman sisällön ja hävittää hienojakoisen tiedon.

Monivektorihaku tallentaa dokumenttia kohden USEITA vektoreita ja kohdistaa ne tarkemmin.

ColBERT-ajatus

ColBERT (Khattab & Zaharia, 2020) muodostaa embeddingin dokumentin jokaisesta TOKENISTA ja kyselyn jokaisesta tokenista ja laskee sitten suurimman samankaltaisuuden:

score(q, d) = sum over q_token in q: max over d_token in d: cos(q_token, d_token)

Miksi ColBERT päihittää yhden vektorin

  • Se tallentaa dokumentin useat näkökulmat, joita yksi vektori ei pysty kuvaamaan
  • Se käsittelee pitkät dokumentit paremmin
  • Se tarjoaa paremman kattavuuden harvinaisille termeille

ColBERTin kustannukset

Kun yksi vektori tallennetaan katkelman sijaan jokaista tokenia kohden:

  • Jos katkelmassa on 500 tokenia, tallennustilaa tarvitaan 500 kertaa enemmän
  • Jokaisessa haussa vertaillaan huomattavasti useampia pareja

Kvantisointi ja karsinta pienentävät tätä määrää 10–50-kertaisesti, mutta menetelmä on silti kallis.

ColBERTv2

ColBERTv2 lisää jäännöspakkauksen: tokenit ryhmitellään keskipisteisiin, ja kukin token tallennetaan muodossa (centroid_id, small_residual). Tallennustilan tarve pienenee 50-kertaisesti.

ColBERTin suorittaminen

RAGatouille-kirjasto tekee siitä helppoa:

# pip install ragatouille
from ragatouille import RAGPretrainedModel

rag = RAGPretrainedModel.from_pretrained('colbert-ir/colbertv2.0')
rag.index(collection=documents, index_name='my_corpus')

results = rag.search(query='What is the refund policy?', k=5)

Monivektorihaku käytännössä

ColBERTin lisäksi on olemassa muita monivektorimenetelmiä:

  • Parent-child — muodostakaa embedding pienistä katkelmista ja hakekaa suuret ylädokumentit
  • Summary + chunks — muodostakaa embedding sekä dokumentin yhteenvedosta että yksittäisistä katkelmista
  • Hypothetical questions — muodostakaa embedding kustakin dokumentista syntetisoiduista kysymys-vastauspareista

Hypothetical Questions Pattern

def index_with_hypos(doc):
    # Generate 5 plausible questions this doc could answer
    questions = llm.invoke(f'Write 5 questions answered by this doc:\n{doc}').content.split('\n')
    for q in questions:
        vector_db.add(embed(q), payload={'doc': doc, 'question': q})
# Now queries that match a stored hypothetical question retrieve the doc.

Parent-Child with LangChain

from langchain.retrievers import ParentDocumentRetriever
from langchain.storage import InMemoryStore

store = InMemoryStore()
retriever = ParentDocumentRetriever(
    vectorstore=child_vectorstore,
    docstore=store,
    child_splitter=child_splitter,    # small
    parent_splitter=parent_splitter   # large
)
retriever.add_documents(documents)
# Indexes small chunks, returns large parents.

Milloin ColBERTia kannattaa käyttää

  • Haut, joissa virheillä on suuret seuraukset, kuten laki- ja lääketieteelliset haut
  • Pitkät dokumentit
  • Kun voitte maksaa tallennustilan kustannukset

Milloin se kannattaa ohittaa

  • Pienet korpukset
  • Viiveherkät polut
  • Kustannusrajoitteiset projektit

Yhdistäminen BM25:n kanssa

Maksimaalisen kattavuuden saavuttamiseksi yhdistäkää monivektorihaku perinteiseen BM25-avainsanahakuun. Yhdistäkää tulokset Reciprocal Rank Fusion -menetelmällä.

ColBERTin kompromissi

Mikä on ColBERT-tyylisen monivektorihakun tärkein kompromissi?

Kertaus

Yksi vektori katkelmaa kohden hukkaa tietoa. ColBERT tallentaa vektorin jokaista tokenia kohden ja tarjoaa paremman tarkkuuden. RAGatouille tekee käyttöönotosta helppoa. Käyttäkää sitä, kun kattavuus on tärkeää ja kustannukset sallivat sen.

Aloita maksutta

Opi Tekoälyagentit tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
60
Oppitunnit
239

Usein kysytyt kysymykset

Onko oppitunti ”Monivektorihaku (ColBERT)” ilmainen?

Kyllä – oppitunnin ”Monivektorihaku (ColBERT)” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Tekoälyagentit-kurssin, päivitä CoddyKit PROhon. Tekoälyagentit-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Monivektorihaku (ColBERT)”?

Indeksoikaa dokumenttia kohden useita vektoreita (yksi tokenia tai osaa kohden) hienojakoista vastaavuutta varten. Harjoittelet Tekoälyagentit-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Tekoälyagentit-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Tekoälyagentit-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Monivektorihaku (ColBERT)”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Tekoälyagentit-oppitunnilla?

Kyllä. Jokainen Tekoälyagentit-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Uudelleenjärjestäminen ristiinkoodereilla
  2. HyDE: hypoteettiset dokumenttiupotukset
  3. Monivektorihaku (ColBERT)
  4. RAG:n arviointi (RAGAS, Recall@K)
← Takaisin: Tekoälyagentit