Vektorivarastot: Chroma ja FAISS
Vektorivarastojen luominen ja säilyttäminen, samankaltaisuushaku, MMR-haku, hybridihaku.
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-cpuChroma-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.
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
- LangChain-arkkitehtuuri ja LCEL
- Dokumenttien lataaminen, pilkkominen ja upottaminen
- Vektorivarastot: Chroma ja FAISS
- RAG-kysymys–vastausjärjestelmän rakentaminen alusta loppuun