Vektorivarastot tiedonhakuun
Oppikaa käyttämään vektoritietokantoja dokumenttien osien tallentamiseen ja semanttisen samankaltaisuuden perusteella tehtävään tehokkaaseen hakuun RAG:ia varten.
Vektorivarastot tiedonhakuun on ilmainen Tekoälyagentit LangChainilla ja autonomiset työnkulut-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 LangChainilla ja autonomiset työnkulut-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Tekoälyagentit LangChainilla ja autonomiset työnkulut-kurssilla on yhteensä 4 oppituntia.
Johdatus vektorikantoihin
Tervetuloa Data Loading & Retrieval -kokonaisuuden viimeiseen oppituntiin! Tänään tutustumme vektorikantoihin, jotka ovat älykkäiden tekoälyagenttien rakentamisen keskeinen osa.
Vektorikannat ovat erikoistuneita tietokantoja, jotka on suunniteltu tietojen numeeristen esitysten eli vektoriupotusten tallentamiseen ja tehokkaaseen hakuun.
Miksi vektorikantoja käytetään RAG-menetelmässä
Vektorikannat muodostavat Retrieval Augmented Generation (RAG) -menetelmän perustan. RAG antaa suurkielimalleille (LLM) pääsyn ulkoiseen ja ajantasaiseen tietoon ja auttaa näin kiertämään niiden luontaisia rajoituksia, kuten:
- Tietojen katkaisupäivät: Suurkielimallit tietävät vain sen, millä aineistolla ne on koulutettu.
- Hallusinaatiot: Malli keksii tosiasioita ollessaan epävarma.
Vektorikannat tarjoavat suurkielimallille olennaisen kontekstin tarkkojen vastausten tuottamista varten.
Näin vektorikannat toimivat
Kun käytössänne on tekstidokumentteja, jotka opitte lataamaan ja jakamaan aiemmilla oppitunneilla, ne muunnetaan ensin numeerisiksi vektoriupotuksiksi.
Vektoriupotukset tallennetaan sitten vektorikantaan. Kun kysely saapuu, myös se muunnetaan vektoriupotukseksi. Vektorikanta etsii tämän jälkeen dokumenttien vektoriupotukset, jotka ovat kyselyn vektoriupotusta "lähimpänä" eli samankaltaisimpia.
LangChainin VectorStore-abstraktio
LangChain tarjoaa tehokkaan abstraktion eri vektorikantojen kanssa toimimiseen. Tämä tarkoittaa, että voitte vaihtaa vektoritietokannan tarjoajaa (kuten Chroma, Pinecone tai FAISS) muuttamalla koodia vain vähän.
Keskeisiä metodeja ovat from_documents(), jolla luodaan kanta dokumenteista, add_documents(), jolla lisätään dokumentteja, sekä similarity_search(), jolla etsitään olennaista sisältöä.
Paikallinen kanta: ChromaDB
Esimerkeissämme käytämme ChromaDB:tä. Se on avoimen lähdekoodin kevyt vektoritietokanta, joka voi toimia paikallisesti. Siksi se sopii erinomaisesti kehitykseen ja testaamiseen ilman pilvipalveluita.
Varmistakaa ensin, että tarvittavat paketit on asennettu:
pip install chromadbpip install langchain-communitypip install sentence-transformers
Chroman ja vektoriupotusten alustaminen
Otetaan ChromaDB käyttöön paikallisen vektoriupotusmallin kanssa. Vektoriupotusmalli muuntaa tekstin vektoreiksi.
Tässä esimerkissä käytetään SentenceTransformerEmbeddings-komponenttia, joka suoritetaan suoraan omalla koneellanne.
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import SentenceTransformerEmbeddings
import os
def main():
# Define a path for ChromaDB to store data locally
# This creates a 'chroma_db' folder if it doesn't exist
persist_directory = "./chroma_db"
# Initialize a local embedding function
# 'all-MiniLM-L6-v2' is a small, efficient model
embeddings = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")
# Initialize ChromaDB. It will load if exists, or create new.
vectordb = Chroma(
persist_directory=persist_directory,
embedding_function=embeddings
)
print("ChromaDB initialized successfully!")
print(f"Database will persist at: {os.path.abspath(persist_directory)}")
if __name__ == "__main__":
main()Dokumenttien lisääminen Chroma-kantaan
Kun alustus on valmis, voimme lisätä Document-objekteja (jotka sisältävät kentät page_content ja valinnaisen metadata-kentän) vektorikantaamme. LangChain käsittelee vektoriupotusten luomisen automaattisesti.
Lisäämme ChromaDB-instanssiimme muutaman esimerkkidokumentin.
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import SentenceTransformerEmbeddings
from langchain_core.documents import Document
import os
def main():
persist_directory = "./chroma_db"
embeddings = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")
# Load the existing ChromaDB or create a new one
vectordb = Chroma(
persist_directory=persist_directory,
embedding_function=embeddings
)
# Example documents to add
documents = [
Document(page_content="The quick brown fox jumps over the lazy dog."),
Document(page_content="Artificial intelligence is transforming industries."),
Document(page_content="Machine learning is a subset of AI."),
Document(page_content="Dogs are known for their loyalty and companionship.")
]
print(f"Adding {len(documents)} documents to ChromaDB...")
# add_documents handles embedding and storing
vectordb.add_documents(documents)
print("Documents added.")
if __name__ == "__main__":
main()Samankaltaisuushaku
Nyt kun dokumentit on tallennettu, voimme tehdä vektorikannasta kyselyn ja etsiä kyselyämme semanttisesti vastaavaa sisältöä. Metodi similarity_search() palauttaa luettelon olennaisista Document-objekteista.
Parametri k määrittää, kuinka monta samankaltaisinta dokumenttia haetaan.
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import SentenceTransformerEmbeddings
import os
def main():
persist_directory = "./chroma_db"
embeddings = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")
# Load the existing ChromaDB
vectordb = Chroma(
persist_directory=persist_directory,
embedding_function=embeddings
)
query = "What is AI?"
print(f"Searching for documents similar to: '{query}'")
# Perform similarity search, retrieve top 2 results
docs = vectordb.similarity_search(query, k=2)
print("\nFound relevant documents:")
for i, doc in enumerate(docs):
print(f"--- Document {i+1} ---")
print(doc.page_content)
if __name__ == "__main__":
main()VectorStore noutajana
LangChainissa Retriever on rajapinta, joka palauttaa Documents-objekteja jäsentämättömän kyselyn perusteella. Vektorikanta on yksi yleisimmistä tavoista luoda noutaja.
Muuntamalla vektorikannan noutajaksi voitte liittää sen helposti monimutkaisempiin LangChain-ketjuihin ja agentteihin, erityisesti RAG-sovelluksissa.
Noutajan aktivointi
Näin muutatte ChromaDB-instanssin noutajaksi ja käytätte sitä dokumenttien hakemiseen kyselyn perusteella. Tämä on viimeinen vaihe ennen sen integroimista täysimittaiseen RAG-ketjuun.
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import SentenceTransformerEmbeddings
import os
def main():
persist_directory = "./chroma_db"
embeddings = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")
# Load the existing ChromaDB
vectordb = Chroma(
persist_directory=persist_directory,
embedding_function=embeddings
)
# Convert the vector store into a retriever
# search_kwargs allows passing arguments like 'k' to the underlying search
retriever = vectordb.as_retriever(search_kwargs={"k": 2})
query = "Tell me about AI."
print(f"Using retriever to find documents for: '{query}'")
# Use the retriever to get relevant documents
relevant_docs = retriever.get_relevant_documents(query)
print("\nRelevant documents retrieved by the retriever:")
for i, doc in enumerate(relevant_docs):
print(f"--- Retrieved Document {i+1} ---")
print(doc.page_content)
if __name__ == "__main__":
main()Pikatarkistus: vektorikannat
Mikä seuraavista kuvaa parhaiten vektorikannan ensisijaista tarkoitusta Retrieval Augmented Generation (RAG) -menetelmän yhteydessä?
Kertaus: vektorikannat RAG-menetelmää varten
Hienoa työtä! Tässä oppitunnissa opitte seuraavat asiat:
- Vektorikantojen rooli suurkielimallien tehostamisessa RAG-menetelmän avulla.
- Kuinka vektorikannat tallentavat vektoriupotuksia semanttista hakua varten.
- Paikallisen ChromaDB:n käyttöönotto ja sen kanssa toimiminen.
- Dokumenttien lisääminen ja samankaltaisuushakujen tekeminen.
- Vektorikannan muuntaminen LangChainin Retriever-noutajaksi.
Teillä on nyt vahva perusta tiedon haun toteuttamiseen tekoälyagenteissa!
Opi Tekoälyagentit LangChainilla ja autonomiset työnkulut 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
- 12
- Oppitunnit
- 50
Usein kysytyt kysymykset
Onko oppitunti ”Vektorivarastot tiedonhakuun” ilmainen?
Kyllä – oppitunnin ”Vektorivarastot tiedonhakuun” 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 LangChainilla ja autonomiset työnkulut-kurssin, päivitä CoddyKit PROhon. Tekoälyagentit LangChainilla ja autonomiset työnkulut-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Vektorivarastot tiedonhakuun”?
Oppikaa käyttämään vektoritietokantoja dokumenttien osien tallentamiseen ja semanttisen samankaltaisuuden perusteella tehtävään tehokkaaseen hakuun RAG:ia varten. Harjoittelet Tekoälyagentit LangChainilla ja autonomiset työnkulut-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Tekoälyagentit LangChainilla ja autonomiset työnkulut-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Tekoälyagentit LangChainilla ja autonomiset työnkulut-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 tiedonhakuun”-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 LangChainilla ja autonomiset työnkulut-oppitunnilla?
Kyllä. Jokainen Tekoälyagentit LangChainilla ja autonomiset työnkulut-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
- Dokumenttilataajien perusteet
- Tekstin jakajat ja upotukset
- Vektorivarastot tiedonhakuun
- Retrievert ja kontekstuaalinen tiivistäminen