Oppikaa tekoälyä Pythonilla · Oppitunti

Vektorivarastot: Chroma ja FAISS

Vektorivarastojen luominen ja säilyttäminen, samankaltaisuushaku, MMR-haku, hybridihaku.

Oppitunti 3/413 vaihetta

Vektorivarastot: Chroma ja FAISS on ilmainen Oppikaa tekoälyä Pythonilla-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Oppikaa tekoälyä Pythonilla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.

Mikä vektorivarasto on

Vektorivarasto säilyttää upotetut lohkot ja etsii kyselyvektoria lähinnä olevat lohkot. Se on RAG-järjestelmän ytimessä oleva hakukone. Kaksi suosittua vaihtoehtoa ovat Chroma ja FAISS.

pip install langchain-chroma faiss-cpu

Chroma-varaston luominen

Chroma.from_documents upottaa lohkosi ja indeksoi ne yhdellä kutsulla. Välittäkää sille dokumentit ja upotusobjekti. Chroma palauttaa varaston, josta voitte hakea heti.

from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings

embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
db = Chroma.from_documents(chunks, embeddings)

Chroman tallentaminen levylle

Välittäkää persist_directory, jotta indeksi tallennetaan levylle ja säilyy uudelleenkäynnistysten yli. Ladatkaa se myöhemmin luomalla Chroma uudelleen saman hakemiston ja upotusten avulla, jolloin upotuskustannuksia ei synny uudelleen.

db = Chroma.from_documents(
    chunks, embeddings,
    persist_directory="./chroma_db"
)

# Reload later
db = Chroma(persist_directory="./chroma_db", embedding_function=embeddings)

Samankaltaisuushaku

Tehkää kysely komennolla similarity_search(query, k=4). Se upottaa kyselyn, etsii k lähintä lohkoa ja palauttaa ne Document-objekteina. k määrittää haettavien katkelmien määrän.

results = db.similarity_search("How do I reset my password?", k=4)
for doc in results:
    print(doc.page_content[:80])

Hakutulosten pisteet

Käyttäkää komentoa similarity_search_with_score, jos haluatte saada kullekin tulokselle myös etäisyyspisteen. Pienempi etäisyys tarkoittaa suurempaa samankaltaisuutta. Pisteiden avulla voitte suodattaa heikot osumat ennen niiden lähettämistä LLM:lle.

pairs = db.similarity_search_with_score("password reset", k=4)
for doc, score in pairs:
    print(round(score, 3), doc.page_content[:60])

FAISS-esittely

FAISS (Facebook AI Similarity Search) on suorituskykyinen vektorihakukirjasto. Se on erittäin nopea ja käyttää muistia tehokkaasti, joten se sopii suuriin paikallisiin indekseihin ilman erillistä palvelinta.

FAISS-varaston luominen

API vastaa Chromaa: FAISS.from_documents rakentaa indeksin. FAISS säilyttää indeksin muistissa, joten se sopii hyvin lukuvoittoiseen prosessin sisäiseen hakuun.

from langchain_community.vectorstores import FAISS

db = FAISS.from_documents(chunks, embeddings)
results = db.similarity_search("refund policy", k=3)

FAISS-indeksin tallentaminen ja lataaminen

Tallentakaa FAISS-indeksi komennolla save_local ja ladatkaa se uudelleen komennolla load_local. Uudelleenlataus edellyttää asetusta allow_dangerous_deserialization=True, koska indeksi käyttää pickleä.

db.save_local("faiss_index")

db = FAISS.load_local(
    "faiss_index", embeddings,
    allow_dangerous_deserialization=True
)

Osuvuus ja monipuolisuus

Tavallinen samankaltaisuushaku voi palauttaa neljä lähes identtistä lohkoa. Joskus tarvitsette monipuolisia tuloksia, jotka kattavat vastauksen eri näkökulmat. Tällöin MMR on hyödyllinen.

MMR-haku

Maximal Marginal Relevance (MMR) tasapainottaa osuvuutta ja monipuolisuutta valitsemalla lohkoja, jotka ovat olennaisia mutta eivät toisteisia. Käyttäkää hakijarajapinnan kautta asetusta search_type="mmr".

retriever = db.as_retriever(
    search_type="mmr",
    search_kwargs={"k": 4, "fetch_k": 20}
)
docs = retriever.invoke("password reset")

Chroman ja FAISSin vertailu

Chroma on helppokäyttöinen ja pysyvä, joten se sopii prototyyppeihin ja pieniin sovelluksiin. FAISS on suuremmassa mittakaavassa nopeampi ja sopii muistinvaraiseen hakuun. Molemmat tarjoavat metodit similarity_search ja as_retriever, joten vaihtaminen on helppoa.

Pikatarkistus

Testatkaa vektorivarastoja koskevaa osaamistanne.

Kertaus: Chroma ja FAISS

Rakensitte vektorivarastot komennoilla Chroma.from_documents (käyttäen asetusta persist_directory) ja FAISS.from_documents, teitte hakuja komennolla similarity_search(query, k=4) ja tallensitte sekä latasitte molemmat varastot. Käytitte as_retriever-metodia yhdessä MMR:n kanssa monipuolisten tulosten saamiseksi ja opitte, milloin kumpikin varasto kannattaa valita.

Aloita maksutta

Opi Python 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
53
Oppitunnit
225

Usein kysytyt kysymykset

Onko oppitunti ”Vektorivarastot: Chroma ja FAISS” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Oppikaa tekoälyä Pythonilla-oppimispolun 3 oppituntia, myös oppitunnin “Vektorivarastot: Chroma ja FAISS”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Vektorivarastot: Chroma ja FAISS”?

Vektorivarastojen luominen ja säilyttäminen, samankaltaisuushaku, MMR-haku, hybridihaku. Harjoittelet Oppikaa tekoälyä Pythonilla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Oppikaa tekoälyä Pythonilla-opiskelun?

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

Kuinka kauan ”Vektorivarastot: Chroma ja FAISS”-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ä Oppikaa tekoälyä Pythonilla-oppitunnilla?

Kyllä. Jokainen Oppikaa tekoälyä Pythonilla-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. LangChain-arkkitehtuuri ja LCEL
  2. Dokumenttien lataaminen, pilkkominen ja upottaminen
  3. Vektorivarastot: Chroma ja FAISS
  4. RAG-kysymys–vastausjärjestelmän rakentaminen alusta loppuun
← Takaisin: Oppikaa tekoälyä Pythonilla