Integrasjon med LLM-rammeverk
Lær å koble vektordatabaser til populære orkestreringsrammeverk for LLM-er, som LangChain eller LlamaIndex.
Integrasjon med LLM-rammeverk er en gratis leksjon i Vektordatabaser: Pinecone, Weaviate og pgvector på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Vektordatabaser: Pinecone, Weaviate og pgvector, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Vektordatabaser: Pinecone, Weaviate og pgvector inneholder totalt 4 leksjoner.
LLM-rammeverk for RAG
Velkommen! I denne leksjonen skal vi lære hvordan vektordatabaser kobles til kraftige rammeverk for orkestrering av LLM-er. Disse rammeverkene gjør det enklere å bygge komplekse AI-applikasjoner som Retrieval-Augmented Generation (RAG).
Tenk på dem som verktøy som hjelper språkmodellen med å kommunisere effektivt med vektordatabasen.
Hvorfor bruke LLM-rammeverk?
Å bygge RAG-applikasjoner innebærer mange trinn: laste inn data, dele opp tekst, generere embedding-er, lagre dem i en vektordatabase, hente relevante biter og til slutt sende dem til en LLM.
LLM-rammeverk effektiviserer denne prosessen ved å:
- Abstrahere kompleksitet: Tilby et enhetlig grensesnitt for ulike komponenter.
- Tilby modularitet: Gjøre det enkelt å bytte ut ulike modeller eller databaser.
- Administrere arbeidsflyter: Hjelpe deg med å kjede sammen ulike operasjoner.
Introduksjon til LangChain
LangChain er et populært rammeverk for utvikling av applikasjoner som drives av språkmodeller. Det er kjent for den modulære utformingen, som gjør det enkelt å bygge komplekse arbeidsflyter for LLM-er.
Viktige konsepter i LangChain omfatter:
- Kjeder: Sekvenser av kall til LLM-er eller andre verktøy.
- Agenter: LLM-er som bestemmer hvilke verktøy som skal brukes, og i hvilken rekkefølge.
- Retrievere: Komponenter som henter dokumenter fra en datakilde.
- Vektorlagre: Integrasjoner med ulike vektordatabaser.
Introduksjon til LlamaIndex
LlamaIndex (tidligere GPT Index) er et annet ledende datarammeverk for LLM-applikasjoner. Det legger stor vekt på datainnhenting, indeksering og søk for å utvide LLM-er.
LlamaIndex er særlig godt egnet til:
- Datakoblinger: Enkel innlasting av data fra mange kilder.
- Dataindekser: Strukturering av data for effektiv innhenting (for eksempel VectorStoreIndex).
- Spørringsmotorer: Et grensesnitt for spørringer mot de indekserte dataene dine.
LangChain: Konfigurere et vektorlag
LangChain gjør det enkelt å integrere ulike vektordatabaser. Her bruker vi en Chroma-database i minnet for å demonstrere oppsettet.
Legg merke til hvordan `Chroma.from_documents` håndterer både embedding og lagring.
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import OpenAIEmbeddings
from langchain_core.documents import Document
# Dummy Embedding Model for demonstration
class DummyEmbeddings(OpenAIEmbeddings):
def embed_documents(self, texts):
return [[0.1] * 1536 for _ in texts]
def embed_query(self, text):
return [0.1] * 1536
embeddings = DummyEmbeddings()
docs = [
Document(page_content="The quick brown fox."),
Document(page_content="AI is transforming industries."),
Document(page_content="Vector databases are key."),
]
# Create an in-memory Chroma vector store
db = Chroma.from_documents(docs, embeddings)
print("Chroma vector store initialized.")
print(f"Number of documents: {len(docs)}")LangChain: Håndtering av dokumenter
Før data lagres i en vektordatabase, må de ofte lastes inn og behandles. LangChain tilbyr DocumentLoaders for å lese data og TextSplitters for å dele dem opp i håndterbare biter.
Dette sikrer optimal innhenting og promptlengde for LLM-er.
from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import CharacterTextSplitter
import os
# Create a dummy text file
with open("sample.txt", "w") as f:
f.write("This is a long text about RAG. "
"It combines retrieval with generation. "
"Vector databases are essential here.")
# Load documents
loader = TextLoader("sample.txt")
documents = loader.load()
# Split documents into chunks
text_splitter = CharacterTextSplitter(
chunk_size=50, chunk_overlap=0
)
split_docs = text_splitter.split_documents(documents)
print(f"Original doc content: {documents[0].page_content[:40]}...")
print(f"Number of split chunks: {len(split_docs)}")
print(f"First chunk: {split_docs[0].page_content}")
os.remove("sample.txt") # Clean upLangChain: Opprette en retriever
Når vektorlaget er konfigurert, kan du gjøre det om til en Retriever. Denne komponenten er ansvarlig for å hente relevante dokumenter basert på en spørring, noe som er avgjørende for «Retrieval»-delen av RAG.
Retrieveren abstraherer søkelogikken i den underliggende vektordatabasen.
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import OpenAIEmbeddings
from langchain_core.documents import Document
# Dummy Embeddings & Documents
class DummyEmbeddings(OpenAIEmbeddings):
def embed_documents(self, texts): return [[0.1] * 1536 for _ in texts]
def embed_query(self, text): return [0.1] * 1536
embeddings = DummyEmbeddings()
docs = [
Document(page_content="Apples are red."),
Document(page_content="Bananas are yellow."),
Document(page_content="Grapes are purple."),
]
db = Chroma.from_documents(docs, embeddings)
# Convert the vector store into a retriever
retriever = db.as_retriever()
query = "What color are grapes?"
retrieved_docs = retriever.invoke(query)
print(f"Query: '{query}'")
print(f"Retrieved {len(retrieved_docs)} documents.")
for i, doc in enumerate(retrieved_docs):
print(f" Doc {i+1}: {doc.page_content}")LlamaIndex: Indeksere dokumenter
LlamaIndex bruker konseptet «indekser» for å strukturere dataene dine slik at de kan hentes effektivt. VectorStoreIndex er en vanlig type som bruker en vektordatabase til likhetssøk.
Dette eksempelet viser hvordan du oppretter en indeks i minnet, støttet av Chroma, med LlamaIndex.
from llama_index.core import VectorStoreIndex, Document
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.vector_stores.chroma import ChromaVectorStore
import chromadb
from llama_index.core import Settings
# Initialize an in-memory Chroma client
db = chromadb.Client()
chroma_collection = db.get_or_create_collection("my_ll_docs")
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)
# Dummy documents
documents = [
Document(text="LlamaIndex builds LLM apps."),
Document(text="It helps with data indexing."),
Document(text="Vector dbs are core for retrieval."),
]
# Dummy embedding model for runnable example
class DummyLlamaIndexEmbeddings(OpenAIEmbedding):
def _get_query_embedding(self, query): return [0.2] * 1536
def _get_text_embedding(self, text): return [0.2] * 1536
Settings.embed_model = DummyLlamaIndexEmbeddings()
# Create a VectorStoreIndex
index = VectorStoreIndex.from_documents(
documents, vector_store=vector_store
)
print("LlamaIndex VectorStoreIndex created.")LlamaIndex: Søke i indeksen
Når en indeks er opprettet i LlamaIndex, kan du bruke en QueryEngine til å utføre søk. Spørringsmotoren håndterer innhentingen fra det underliggende vektorlaget og kan eventuelt samhandle med en LLM for å sammenfatte et svar.
Her fokuserer vi på selve innhentingen.
from llama_index.core import VectorStoreIndex, Document
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.vector_stores.chroma import ChromaVectorStore
import chromadb
from llama_index.core import Settings
# Initialize in-memory Chroma client & store
db = chromadb.Client()
chroma_collection = db.get_or_create_collection("my_ll_docs_query")
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)
# Dummy documents
documents = [
Document(text="LlamaIndex helps build context-augmented LLM apps."),
Document(text="It provides tools for data ingestion."),
Document(text="Retrieval is key for RAG."),
]
# Dummy embedding model
class DummyLlamaIndexEmbeddings(OpenAIEmbedding):
def _get_query_embedding(self, query): return [0.2] * 1536
def _get_text_embedding(self, text): return [0.2] * 1536
Settings.embed_model = DummyLlamaIndexEmbeddings()
# Create and populate index
index = VectorStoreIndex.from_documents(
documents, vector_store=vector_store
)
# Create a query engine
query_engine = index.as_query_engine()
# Perform a query
query = "What does LlamaIndex do?"
response = query_engine.query(query)
print(f"Query: '{query}'")
print(f"Response (partial): {str(response)[:80]}...")Koble sammen rammeverk og VDB-er
Både LangChain og LlamaIndex tilbyr robuste integrasjoner med ulike vektordatabaser (som Pinecone, Weaviate, pgvector og flere). De tilbyr et abstraksjonslag som gjør det mulig å bytte mellom VDB-er med minimale endringer i koden.
Dette forenkler utvikling og vedlikehold av RAG-applikasjoner ved å skille applikasjonslogikken fra den konkrete databaseimplementasjonen.
Sjekk av rammeverkskomponenter
Hvilke av de følgende er vanlige komponenter eller konsepter i rammeverk for orkestrering av LLM-er (som LangChain eller LlamaIndex) når du bygger RAG-applikasjoner?
Oppsummering: Integrering med rammeverk
Godt jobbet! Du har lært hvordan rammeverk for orkestrering av LLM-er, som LangChain og LlamaIndex, gjør det enklere å bygge RAG-applikasjoner ved å integrere med vektordatabaser.
- De tilbyr abstraksjoner for VDB-er.
- De tilbyr verktøy for innlasting, oppdeling og indeksering av dokumenter.
- De muliggjør effektiv innhenting gjennom retrievere og spørringsmotorer.
Disse rammeverkene er avgjørende for å håndtere kompleksiteten i moderne AI-applikasjoner.
Lær deg Vektordatabaser: Pinecone, Weaviate og pgvector med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Integrasjon med LLM-rammeverk» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Vektordatabaser: Pinecone, Weaviate og pgvector, inkludert «Integrasjon med LLM-rammeverk», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Vektordatabaser: Pinecone, Weaviate og pgvector inneholder totalt 4 leksjoner.
Hva lærer jeg i «Integrasjon med LLM-rammeverk»?
Lær å koble vektordatabaser til populære orkestreringsrammeverk for LLM-er, som LangChain eller LlamaIndex. Du øver på Vektordatabaser: Pinecone, Weaviate og pgvector med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Vektordatabaser: Pinecone, Weaviate og pgvector?
Ingen tidligere erfaring er nødvendig. Vektordatabaser: Pinecone, Weaviate og pgvector på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Integrasjon med LLM-rammeverk»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Vektordatabaser: Pinecone, Weaviate og pgvector-leksjonen?
Ja. Alle Vektordatabaser: Pinecone, Weaviate og pgvector-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Oversikt over RAG-systemarkitektur
- Integrasjon med LLM-rammeverk
- Kontekstuell informasjonsgjenfinning
- Strategier for oppdeling av tekst i RAG