Vectordatabases: Pinecone, Weaviate en pgvector · Les

Integratie met LLM-frameworks

Leer vectordatabases te verbinden met populaire LLM-orchestratieframeworks zoals LangChain of LlamaIndex.

Les 2 van 412 stappen

Integratie met LLM-frameworks is een gratis Vectordatabases: Pinecone, Weaviate en pgvector-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Vectordatabases: Pinecone, Weaviate en pgvector. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Vectordatabases: Pinecone, Weaviate en pgvector bevat in totaal 4 lessen.

LLM-frameworks voor RAG

Welkom! In deze les leer je hoe je vectordatabases koppelt aan krachtige orkestratieframeworks voor LLM's. Deze frameworks vereenvoudigen het bouwen van complexe AI-toepassingen, zoals Retrieval-Augmented Generation (RAG).

Zie ze als hulpmiddelen waarmee je taalmodel efficiënt met je vectordatabase kan communiceren.

Waarom LLM-frameworks gebruiken?

Bij het bouwen van RAG-toepassingen komen veel stappen kijken: gegevens laden, tekst opsplitsen, inbeddingen genereren, deze opslaan in een vectordatabase, relevante delen ophalen en ze ten slotte aan een LLM doorgeven.

LLM-frameworks stroomlijnen dit proces door:

  • Complexiteit te abstraheren: Een uniforme interface voor verschillende componenten te bieden.
  • Modulariteit: Je eenvoudig verschillende modellen of databases te laten verwisselen.
  • Werkstroombeheer: Te helpen verschillende bewerkingen aan elkaar te koppelen.

Kennismaken met LangChain

LangChain is een populair framework voor het ontwikkelen van toepassingen die door taalmodellen worden aangedreven. Het staat bekend om zijn modulaire ontwerp, waarmee je eenvoudig complexe LLM-werkstromen kunt bouwen.

Belangrijke concepten in LangChain zijn:

  • Chains: Reeksen aanroepen van LLM's of andere hulpprogramma's.
  • Agents: LLM's die bepalen welke hulpmiddelen ze in welke volgorde gebruiken.
  • Retrievers: Componenten die documenten uit een gegevensbron ophalen.
  • Vector Stores: Integraties met verschillende vectordatabases.

Kennismaken met LlamaIndex

LlamaIndex (voorheen GPT Index) is een ander toonaangevend dataframework voor LLM-toepassingen. Het richt zich sterk op het inlezen, indexeren en ophalen van gegevens om LLM's uit te breiden.

LlamaIndex is bijzonder sterk in:

  • Dataconnectoren: Gegevens eenvoudig uit veel bronnen laden.
  • Data-indexen: Gegevens structureren zodat ze efficiënt kunnen worden opgehaald (bijvoorbeeld VectorStoreIndex).
  • Query-engines: Een interface bieden om je geïndexeerde gegevens te bevragen.

LangChain: een vectoropslag instellen

Met LangChain kun je eenvoudig integreren met verschillende vectordatabases. Hier gebruiken we een Chroma-database in het geheugen om de configuratie te demonstreren.

Let erop hoe `Chroma.from_documents` zowel de inbedding als de opslag afhandelt.

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: documenten verwerken

Voordat gegevens in een vectordatabase worden opgeslagen, moeten ze vaak worden geladen en verwerkt. LangChain biedt DocumentLoaders om gegevens te lezen en TextSplitters om ze in hanteerbare delen op te splitsen.

Dit zorgt voor optimaal ophalen en een optimale promptlengte voor LLM's.

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 up

LangChain: een ophaler maken

Nadat je vectoropslag is ingesteld, kun je deze omzetten in een Retriever. Deze component is verantwoordelijk voor het ophalen van relevante documenten op basis van een query, wat essentieel is voor het onderdeel 'Retrieval' van RAG.

De ophaler verbergt de onderliggende zoeklogica van de vectordatabase.

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: documenten indexeren

LlamaIndex gebruikt het concept 'Indexes' om je gegevens te structureren zodat ze efficiënt kunnen worden opgehaald. De VectorStoreIndex is een veelgebruikt type dat een vectordatabase gebruikt voor zoeken op basis van similariteit.

Dit voorbeeld laat zien hoe je met LlamaIndex een index in het geheugen maakt die door Chroma wordt ondersteund.

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: de index bevragen

Nadat je in LlamaIndex een index hebt gemaakt, kun je een QueryEngine gebruiken om zoekopdrachten uit te voeren. De query-engine verzorgt het ophalen uit de onderliggende vectoropslag en kan optioneel met een LLM communiceren om een antwoord samen te stellen.

Hier richten we ons op het ophalen.

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]}...")

Frameworks en vectordatabases koppelen

Zowel LangChain als LlamaIndex bieden krachtige integraties met verschillende vectordatabases (zoals Pinecone, Weaviate, pgvector enzovoort). Ze bieden een abstractielaag, waardoor je met minimale codewijzigingen tussen vectordatabases kunt wisselen.

Dit vereenvoudigt het ontwikkelen en onderhouden van RAG-toepassingen doordat de toepassingslogica wordt losgekoppeld van de specifieke database-implementatie.

Controle van frameworkcomponenten

Welke van de volgende zijn gangbare componenten of concepten in orkestratieframeworks voor LLM's (zoals LangChain of LlamaIndex) bij het bouwen van RAG-toepassingen?

Samenvatting: integreren met frameworks

Goed gedaan! Je hebt geleerd hoe orkestratieframeworks voor LLM's, zoals LangChain en LlamaIndex, het bouwen van RAG-toepassingen vereenvoudigen door integratie met vectordatabases.

  • Ze bieden abstracties voor vectordatabases.
  • Ze bieden hulpmiddelen voor het laden, opsplitsen en indexeren van documenten.
  • Ze maken efficiënt ophalen mogelijk via ophalers en query-engines.

Deze frameworks zijn essentieel voor het beheren van de complexiteit van moderne AI-toepassingen.

Gratis beginnen

Leer Vectordatabases: Pinecone, Weaviate en pgvector met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “Integratie met LLM-frameworks” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Vectordatabases: Pinecone, Weaviate en pgvector, waaronder “Integratie met LLM-frameworks”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Vectordatabases: Pinecone, Weaviate en pgvector bevat in totaal 4 lessen.

Wat leer ik in “Integratie met LLM-frameworks”?

Leer vectordatabases te verbinden met populaire LLM-orchestratieframeworks zoals LangChain of LlamaIndex. Je oefent met Vectordatabases: Pinecone, Weaviate en pgvector door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Vectordatabases: Pinecone, Weaviate en pgvector te beginnen?

Ervaring vooraf is niet nodig. Vectordatabases: Pinecone, Weaviate en pgvector op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Integratie met LLM-frameworks”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Vectordatabases: Pinecone, Weaviate en pgvector?

Ja. Elke les over Vectordatabases: Pinecone, Weaviate en pgvector bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Overzicht van de RAG-systeemarchitectuur
  2. Integratie met LLM-frameworks
  3. Contextuele informatieretrieval
  4. Chunkingstrategieën voor RAG
← Terug naar Vectordatabases: Pinecone, Weaviate en pgvector